Экспорт объектов массива в файл CSV

Пытаюсь вывести список объектов массива в файл CSV. Однако я хотел бы иметь каталог, имя, время последней записи и владельца в отдельных столбцах, а не объединять их в один столбец. Не знаю, как обойти эту ситуацию. см. текущий код ниже. Вывод в gridview и текст работает нормально, но не в csv.

спасибо.

$Path = "A:\Test"
$PathArray = @()
$Results = "A:\Test\test_results_7.csv"
$extension = "xml"


# This code snippet gets all the files in $Path that end in extension parameter.
# where the file update was made in the last 30 days
Get-ChildItem $Path -Filter "*.$extension" -recurse |


Where-object { $_.LastWriteTime -ge (Get-Date).AddDays(-30)} |

ForEach-Object {
$PathArray += -join ($_.Directory , " , " , $_.Name , " , " , $_.LastWriteTime , " , " , ((Get-ACL $_.Fullname).Owner) ) 
} 

$PathArray += -join ("Path Location" , " , " , "File name" , " , " , "Last Write Time" , " , " ,  "Owner" ) 


#$PathArray   | Out-GridView 
$PathArray  | select-object $PathArray | ForEach-Object {$_} | Export-csv $Results 

person Sam    schedule 03.10.2019    source источник


Ответы (1)


Попробуй это:

$folders = Get-ChildItem $Path -Filter "*.$extension" -recurse | Where-object {$_.LastWriteTime -ge (Get-Date).AddDays(-30)} 
$outarray = @()

foreach($folder in $folders)
{
    $outarray += New-Object PsObject -property @{
        'Name' = $folder.FullName
        'Directory' = $folder.Directory
        'LastWrite' = $folder.LastWriteTime
    }
}

$outarray | export-csv $results

Я получил ответ здесь

person techguy1029    schedule 03.10.2019
comment
Спасибо за решение - отлично работает. Я только что сделал быстрое обновление, чтобы получить имя владельца в массиве со следующим --› «Владелец» = (Get-ACL $folder.Fullname).Owner - person Sam; 04.10.2019