631 字
3 分钟
使用PowerShell脚本,获取所有文件夹及其子文件夹的人员权限信息
有时候上级要求统计所有文件夹的权限。通常我们会选择文件夹右键→属性→安全,进入权限查看器,对每个成员的权限进行确认。
但是如果有10个文件夹,每个文件夹20个成员就要统计200次。
如果有100个文件夹,就要统计2000次。
人力有时而穷,不要用有限去对抗无限。

可以使用PowerShell脚本,获取指定路径下所有文件夹及其子文件夹的权限信息,并将结果导出到CSV文件中。

要打开PowerShell,请按下Windows键 + R打开运行窗口,然后输入”powershell”并按下Enter键。

首先,通过设置变量$publicDrivePath指定公共盘路径。
然后,使用Get-ChildItem命令获取指定路径下的所有文件夹及子文件夹的路径,-Recurse参数表示递归获取所有子文件夹。
接下来,创建一个空的权限信息数组$permissions。
使用foreach循环遍历每个文件夹路径,通过Get-Acl命令获取文件夹的安全描述符。
再次使用foreach循环遍历每个访问控制项,获取访问控制项的用户或组名,以及权限信息。
然后,创建一个权限信息对象,并将相关属性赋值。通过New-Object命令创建PSObject对象,-TypeName参数指定对象的类型,-Property参数指定对象的属性和值。
将权限信息对象添加到权限信息数组$permissions中。
最后,使用Export-Csv命令将权限信息数组导出到CSV文件。-Path参数指定导出的文件路径,-NoTypeInformation参数表示不包含类型信息,-Encoding参数指定文件编码为UTF-8。这步很重要,否则是乱码。
具体代码如下: