Экспорт в CSV с помощью PowerShell 2.0? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть следующий код, который печатает права файловой системы каждой учетной записи, включенной в папку с путем «C: \ Temp \ CSM \ *» & «C: \ Temp \ CSM \ * \ *».Как мне записать вывод в CSV через запятую?Так как это для PowerShell 2.0 Export-Csv -Append параметр не может быть использован.

$FolderPath = dir -Directory -Path "C:\Temp\CSM\*", "C:\Temp\CSM\*\*" -Force

foreach ($Folder in $FolderPath) {
    $Acl = Get-Acl -Path $Folder.FullName
    foreach ($Access in $acl.Access) {
        Write-Host $Folder.FullName "," $Access.IdentityReference "," $Access.FileSystemRights
    }
}

1 Ответ

0 голосов
/ 12 декабря 2018

До PowerShell v3, если вы хотите добавить к существующему CSV, вам нужно что-то вроде этого:

... | ConvertTo-Csv -NoType | Select-Object -Skip 1 | Add-Content

Однако в вашем сценарии это, вероятно, не нужно.Если вы замените свои циклы foreach конвейером, вы можете написать CSV за один раз, не добавляя его в цикл (что в любом случае не рекомендуется).

$folders = "C:\Temp\CSM\*", "C:\Temp\CSM\*\*"

Get-ChildItem -Path $folders -Directory -Force | ForEach-Object {
    $path = $_.FullName
    Get-Acl -Path $path |
        Select-Object -Expand Access |
        Select-Object @{n='Path';e={$path}}, IdentityReference, FileSystemRights
} | Export-Csv 'C:\output.csv' -NoType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...