【发布时间】:2014-11-22 07:42:19
【问题描述】:
我正在使用 PowerShell 4 并创建了一个脚本,该脚本获取文本文件中列出的共享并将 ACL 信息输出到 CSV 文件。问题是我不知道如何让导出也包含文件夹路径。这是我的脚本:
$InputFile = "C:\Folders.txt"
$OutputFile = "C:\FolderPermissions.csv"
$FolderList = Get-Content $InputFile
ForEach ($Folder in $FolderList)
{
$Permissions = (Get-ACL $Folder).access
$Report += $Permissions
}
$Report | Select-Object IdentityReference,FileSystemRights,IsInherited | Export-CSV $OutputFile -NoTypeInformation
我已经使用下面的行成功添加并导出了单个文件夹,但是一旦我组合对象,只有列名被导出,没有值。
$Folder = "\\server\share"
$Name=Folder
$Permissions = (Get-ACL $Folder).access
$Permissions | Add-Member -MemberType NoteProperty -Name $Name -Value $Folder
$Permissions | Select-Object Folder,IdentityReference,FileSystemRights,IsInherited | Export-CSV $OutputFile -NoTypeInformation
解决办法:
再次感谢各位! MFT 的回答通过一些调整解决了这个问题。这是我想要的过滤器的工作代码。请注意,.IsInherited 过滤器使用 -eq "TRUE" 返回了不正确的数据,但使用 -ne "FALSE" 成功。
$InputFile = "C:\Folders.txt"
$OutputFile = "C:\FolderPermissions.csv"
$FolderList = Get-Content $InputFile
ForEach ($Folder in $FolderList)
{
$Permissions = (Get-ACL $Folder).access | ForEach-Object {$_ |
Add-Member -MemberType NoteProperty -Name Folder -Value $Folder}
$Report += $Permissions
}
$Report | Select-Object Folder,IdentityReference,FileSystemRights,IsInherited |
Where {$_.Folder -ne $Null -and $_.IdentityReference -like "HARRAHS*" -and $_.IsInherited -ne "TRUE"} |
Export-CSV $OutputFile -NoTypeInformation
【问题讨论】:
-
看起来只是一个错字。您将 ACL 存储在
$Permissions中,但将成员添加到$Permission。 -
在问题创建过程中有 2 个错误输入。现已修复。
-
您能否提供适用于此解决方案的输入文件格式?