У меня есть сценарий, который я создаю для рекурсии через дерево файлов, создаю объект для представления этого дерева и распечатаю его в JSON. Однако по какой-то причине дочерние объекты отображаются пустым, когда я пытаюсь их распечатать. Вот код, который я до сих пор:Рекурсия через каталоги: дочерние объекты отображаются пустым?
$dir = "c:\dell"
# Top-level object to hold the directory tree
$obj = @{}
function recurse($dir, [ref]$obj) {
write-host "recursing into $dir"
# Object to hold this subdir & children
$thisobj = @{}
# List the files & folders in this directory
$folders = Get-ChildItem $dir | Where-Object { $_.PSIsContainer -eq $true }
$files = Get-ChildItem $dir | Where-Object { $_.PSIsContainer -eq $false }
#write-host $folders
# Iterate through the subdirs in this directory
foreach ($f in $folders) {
# Recurse into this subdir
recurse $f.fullname ([ref]$thisobj)
}
# Iterate through the files in this directory and add them to
foreach ($f in $files) {
write-host " - adding file to thisobj: $f"
$thisobj | add-member -MemberType NoteProperty -Name $f -value 10
}
# Print out this subtree
"$dir thisobj: "
$thisobj | convertto-json -depth 100
# Add this subtree to parent obj
$obj | Add-Member -MemberType NoteProperty -name $dir -value $thisobj
write-host "finished processing $dir"
}
# Initial recursion
recurse $dir ([ref]$obj)
write-host "final obj:"
$obj | ConvertTo-Json -depth 100
Вот что я пытаюсь получить конечный результат выглядеть следующим образом:
{
"updatepackage": {
"log": {
"DELLMUP.log": 5632
}
"New Text Document.txt": 0
}
"list.csv": 588
}
Можете ли вы привести пример JSON, который вы хотите получить из этого процесса? У меня такое чувство, что то, что вы сделали здесь, скорее всего, больше кода, чем нужно. – alroc
Возможно, но я не смог найти лучшего способа. Я добавил образец вывода к вопросу. – wmassingham
Что должен сделать ваш сценарий? –