使用PowerShell 2.0导出到CSV吗?

时间:2018-12-12 09:18:53

标签: powershell powershell-v2.0 export-to-csv

我有以下代码,用于打印在路径为“ 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 :(得分:1)

在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