如何使用get-acl powershell获得确切权限?

时间:2013-06-20 14:10:50

标签: powershell

我遇到一个在powershell中使用get-acl并将其导出到文件的脚本的问题。 我想要做的是从文件服务器导出具有isinherited标志Flase的所有权限。这部分工作正常,但我只允许或拒绝这些文件夹上的类型。我需要知道给定文件夹的确切权限。该用户是否允许读取或写入,执行等。以下是我所做的完整代码:

$OutFile = "C:\install\powershell\Permissions.txt"
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags"
Del $OutFile
Add-Content -Value $Header -Path $OutFile 

$RootPath = "C:\install\powershell\"

$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true}

foreach ($Folder in $Folders){ 
$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access } 
Foreach ($ACL in $ACLs){ 
if ($ACL.IsInherited -eq $false){ 
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," + $ACL.AccessControlType + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags 
Add-Content -Value $OutInfo -Path $OutFile 
}}}

所以我的问题是:如何添加$ ACL。获得准确的权限级别。它甚至可能吗? 我怎样才能获得某种对象列表,我可以使用它来解析ACL s? I对不起,如果我已经解释了我的问题错了或已经回答了但是因为今天是我使用powershell的第一天我可能不知道如何正确地搜索答案。

最好的问候。

UPD:似乎我可以尝试使用$ ACL.FileSystemRights我会更新这篇文章,如果它给了我想要的东西。 UPD2:是的,似乎我必须在$ Header中添加FileSystemRights,在$ OutInfo中添加“+ $ ACL.FileSystemRights +” 对不起打扰!但这可能会帮助别人得到他们需要的东西! :)

1 个答案:

答案 0 :(得分:0)

希望将递归设定到一定程度。 找到解决方案:使用“*”而不是使用-recurse。 2级深度:“**”等。 来源:http://powershell.com/cs/forums/p/11663/25754.aspx

感谢名单。