不幸的是,我对PowerShell并不太精通,而我的谷歌技能还没有解决我的问题。
到目前为止,我必须遵循以下脚本:
Get-childitem \\network\share\ -recurse | where{$_.psiscontainer} |
Get-Acl | % {
$path = $_.Path
$_.Access | % {
New-Object PSObject -Property @{
Folder = $path.Replace("Microsoft.PowerShell.Core\FileSystem::","")
Access = $_.FileSystemRights
Control = $_.AccessControlType
User = $_.IdentityReference
Inheritance = $_.IsInherited
}
}
} | ? {-not $_.Inheritance} | export-csv output.csv -force
其中(部分)给了我以下输出:
User Folder
$DOMAIN\network_share_sub1_write \\network\share\sub1
$DOMAIN\network_share_sub1_read \\network\share\sub1
$DOMAIN\network_share_sub1_subsub1_write \\network\share\sub1\subsub1
$DOMAIN\network_share_sub2_write \\network\share\sub2
这里的问题是我必须查找每个组以查看相应的用户。我想拥有的是这样的:
User Permission Folder
$User1 write \\network\share\sub1
$User2 read \\network\share\sub1
$User3 write \\network\share\sub1\subsub1
$User1 write \\network\share\sub2
这样的事情可能吗? 提前谢谢。
答案 0 :(得分:2)
Get-childitem \\network\share\ -recurse | where{$_.psiscontainer} |
Get-Acl | % {
$path = $_.Path
$_.Access | % {
New-Object PSObject -Property @{
Folder = $path.Replace("Microsoft.PowerShell.Core\FileSystem::","")
Access = $_.FileSystemRights
Control = $_.AccessControlType
User = $_.IdentityReference
Inheritance = $_.IsInherited
}
}
} | select-object -Property User, Access, Folder | export-csv output.csv -force
select-object -Property User,Access,Folder
代码将重新排列订单,您将看到您想要的内容。
User Permission Folder
$User1 write \\network\share\sub1
$User2 read \\network\share\sub1
$User3 write \\network\share\sub1\subsub1
$User1 write \\network\share\sub2
答案 1 :(得分:0)
我建议使用这个帮助我很多的脚本https://jfrmilner.wordpress.com/2011/05/01/audit-ntfs-permissions-powershell-script/,并根据您的选择进行编辑。
例如,我只想深入两个级别,所以我将Get-PathPermissions.ps1的第11行更改为:
$containers = Get-ChildItem -path $Path,$Path\*\* | ? {$_.psIscontainer -eq $true}
此外,您可以使用Sort-Object Path
对文件夹进行排序,以便从顶部到所需文件夹(由深度指定)具有完整的层次结构。比方说,如果你想要深入三个级别,而不是两个级别,它应该像Get-ChildItem -path $Path,$Path\*\*,$Path\*\*\*
那样......等等。