我有以下代码,用于打印在路径为“ 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
}
}
答案 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