You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Windows及PowerShell中查询文件/文件夹的用户或组访问权限

嘿,我来帮你搞定这两个Windows权限查询的问题,尤其是你用PowerShell时遇到的只显示所有者的小困扰~

1. 图形界面方式查询Windows文件/文件夹的访问权限

如果你偏好可视化操作,用系统自带的属性面板就能轻松查看:

  • 右键目标文件或文件夹,选择属性
  • 切换到安全标签页,这里会直接列出所有拥有该资源访问权限的用户和组,以及对应的基础权限类别
  • 要是想查看更细分的权限(比如读取、写入、修改等具体权限,或者权限的继承关系),点击高级按钮,在弹出的高级安全设置窗口里,能看到每个用户/组的完整权限条目,还能检查有效权限、修改权限设置
2. 使用PowerShell查询文件/文件夹的用户或组访问权限

你之前的代码只显示所有者,是因为你只指定了PSPathOwner这两个属性——Get-Acl返回的对象里,所有用户/组的权限规则都存在Access属性里,得解析这个集合才能拿到完整权限信息。

针对你批量查询.txt文件的需求,给你这个完整的脚本:

$Files = "D:\Akki\data\*.txt"
Get-Acl $Files | ForEach-Object {
    $currentAcl = $_
    # 遍历每个文件的所有权限条目
    $currentAcl.Access | ForEach-Object {
        # 整理成易读的自定义对象
        [PSCustomObject]@{
            文件路径 = $currentAcl.PSPath -replace 'Microsoft.PowerShell.Core\\FileSystem::', ''
            文件所有者 = $currentAcl.Owner
            用户/组 = $_.IdentityReference.Value
            权限类型 = $_.FileSystemRights
            访问控制 = $_.AccessControlType # 显示「允许」或「拒绝」
            是否继承 = $_.IsInherited
        }
    }
} | Format-Table -AutoSize

代码说明:

  • Get-Acl会获取指定路径下所有.txt文件的访问控制列表(ACL)
  • 遍历每个ACL的Access集合,这个集合里的每一项就是一个用户/组的权限规则
  • 把关键字段整理成自定义对象,去掉了PowerShell默认的冗长路径前缀,让输出更直观
  • 最后用Format-Table -AutoSize自动调整列宽,让内容更易读

快速排查的简化写法:

如果你只是想快速查看单个文件的权限条目,不用整理格式,可以直接用:

Get-Acl "D:\Akki\data\example.txt" | Select-Object -ExpandProperty Access

导出成CSV方便分析:

如果需要把权限报告保存下来,只要把最后面的Format-Table -AutoSize换成:

Export-Csv -Path "D:\文件权限报告.csv" -NoTypeInformation -Encoding UTF8

内容的提问来源于stack exchange,提问作者Niranajan Padyal

火山引擎 最新活动