我正在尝试查找所有没有继承权限的文件夹。
这似乎是工作,sort:
DIR "C:\temp" -directory -recurse | GET-ACL | select -ExpandProperty Access | ? -property IsInherited -eq $false
字符串
.但它忽略了实际的文件夹名称。
如何在最终输出中包含文件夹名称?这对我来说有点棘手,因为我需要在对象(GET-ACL
返回的任何内容)中过滤对象(Access)上的属性。
有什么想法吗?
我正在尝试查找所有没有继承权限的文件夹。
这似乎是工作,sort:
DIR "C:\temp" -directory -recurse | GET-ACL | select -ExpandProperty Access | ? -property IsInherited -eq $false
字符串
.但它忽略了实际的文件夹名称。
如何在最终输出中包含文件夹名称?这对我来说有点棘手,因为我需要在对象(GET-ACL
返回的任何内容)中过滤对象(Access)上的属性。
有什么想法吗?
6条答案
按热度按时间nnvyjq4y1#
算了,我是个白痴。
字符串
mfpqipee2#
我认为其他答案并不真正符合您的要求:命令建议给予你所有的非继承的访问规则,但也继承文件夹可能有这样的规则。
我一直在寻找一种更好的方法来实现你的目标,但目前这是我找到的唯一方法:
字符串
其概念是:如果文件夹至少有1个继承的访问规则,则启用继承,如果它有0个继承的规则,则禁用继承。
0yg35tkg3#
所有的答案对我来说仍然是一个解决方案。我发现这个解决方案实际上回答了所问的问题(仅限文件夹):
字符串
对于返回的get-acl对象的
.AreAccessRulesProtected
属性:True =已禁用继承
False =继承仍然启用
. AreaRulesProtected属性:https://petri.com/identify-folders-with-blocked-inheritance-using-powershell
我还通过自己的测试确认了这是文件夹继承的正确属性。
wlsrxk514#
可以使用Add-Member将路径作为属性添加到每个ACE对象上:
字符串
我还将Get-Acl Package 在try块中,因为它会抛出终止错误。
6ljaweal5#
Luca的回答给了我一个错误的答案,不知道为什么。
修改了Rohn的脚本,以打印实际上没有从父级继承的acl数量。如果folder has some of all -这意味着继承已启用,但某些权限是手动添加的,如果all of all -这意味着继承已禁用。
字符串
示例结果:
不可继承的权限:
在E:\Projects\Active Project中有2个
在E:\Projects\Active Projects\Claire\7. CHRISTMAS\中有2个,共8个
在E:\Projects\Active Projects\Closed Projects\Andrea\IT\14.07 Kath - CIMS中获得4分,共4分
unguejic6#
我知道这是一个老问题,但我正在寻找一个简短而简单的解决方案,所以我想我也会发布我的答案。
正如Luca所指出的,接受的答案显示了所有未被继承的规则,包括在实际启用继承的目录上设置的规则。
为我工作的解决方案如下:
字符串
这将返回Get-Acl命令的输出,但如果您更喜欢Get-ChildItem的输出,则可以如下所示:
型
如果你只想检查顶层文件夹,你也可以删除
-Recurse
,或者用-Depth 2
或-Depth 3
等替换它。