PowerShell如何仅枚举单个文件或文件夹的访问权限?
单个文件夹/文件NTFS权限查询方案
原脚本输出过大的核心原因是使用了-Recurse参数触发了全目录递归扫描,去掉递归逻辑、仅针对目标路径查询即可实现单对象权限拉取。
优化后脚本
# 定义要查询的单个文件夹/文件路径,支持本地路径和UNC路径 $targetPath = "\\fs1\目标文件夹" # 定义权限报告输出路径 $reportPath = "C:\temp\单路径ACL.csv" # 获取目标路径的ACL权限,仅查询指定路径本身,不递归子对象 Get-Acl -Path $targetPath | ForEach-Object { $_.Access | Add-Member -MemberType NoteProperty -Name "查询路径" -Value $targetPath -PassThru } | Export-Csv -Path $reportPath -NoTypeInformation -Encoding UTF8
使用说明
- 脚本执行前需确保运行PowerShell的身份对目标路径有读取权限,否则会返回权限不足错误
- 输出的CSV包含查询路径、身份主体、允许/拒绝类型、具体权限、继承配置等完整ACL字段,可直接用于权限审计
- 无需输出文件时可删除末尾
| Export-Csv ...部分,权限结果会直接打印在PowerShell控制台中
补充说明
直接在AD中查询无法得到正确文件权限的原因是:NTFS权限存储在文件系统的元数据中,并非存储在AD数据库内,AD仅存储用户、组等身份主体信息,必须直接访问目标路径拉取ACL才能得到准确结果。
内容的提问来源于stack exchange,提问作者Seth Templet
相关产品推荐
相关产品推荐

