我们有一个文档管理系统,它在 NTFS 文件系统上通过网络共享访问数百万个文件。单个服务帐户需要对所有这些文件和应用程序代理使用此服务帐户进行访问的完全权限。
在数据迁移期间,发生了一些事情,权限现在不一致。
我一直在尝试在 PowerShell 中编写一个脚本来识别哪些文件没有适当的 ACE,但get-acl
有点……痛苦。
我尝试了各种类似的组合:
get-childitem -recurse | get-acl | select -expandproperty access |
where { $_.$_.IdentityReference -notcontains $principal
其中 $Principal 是需要domain\user
格式权限的用户。
一定有办法做到这一点,对吧?它是什么?我想将其保留在 PowerShell 中,并且尽可能不icacls
使用cacls
。
您可以这样做(将其分解为更多语句有助于提高可读性):
请在生产中运行之前对较小的文件子集进行测试;-)
如果您想确保添加新的显式 ACE,即使帐户可能已经继承了权限,请过滤掉继承的访问规则,如下所示:
请注意第二个布尔参数现在如何
$false
指示不应返回继承的规则