可直接用powershell批量导出服务器上显式配置ntfs权限的文件夹(含共享目录),聚焦实际权限条目以满足运维与安全审计需求:一、导出所有非系统共享路径的ntfs权限;二、扫描指定卷下禁用继承的异常目录;三、生成含可读账号名与用户类型的审计级报表;四、注意以管理员身份运行并妥善处理权限错误。
可以直接用 powershell 批量导出一台服务器上所有有权限设置的文件夹(含共享目录)的 ntfs 权限,生成结构清晰、可审计的列表。关键不是“导出全部路径”,而是聚焦在实际配置了显式权限的目录——这样避免海量空权限条目,也更贴近运维和安全审查的真实需求。
一、导出所有共享文件夹的 NTFS 权限(最常用)
共享文件夹是权限管理的重点区域,这个脚本能自动获取本地或远程服务器上所有共享路径,并逐个提取其 NTFS 权限:
- 运行
Get-SmbShare获取所有共享(排除系统默认共享如 C$, IPC$) - 对每个共享路径执行
Get-Acl,提取用户/组、权限类型(Allow/Deny)、具体权利(Read, Modify, FullControl 等)、继承状态 - 用
Select-Object整理字段,导出为 CSV,含列:路径、Account、AccessControlType、FileSystemRights、IsInherited
示例命令(本地执行):
Get-SmbShare | Where-Object {$_.ScopeName -eq 'SMBServer' -and $_.Name -notmatch '^\$'} | ForEach-Object {$path = $_.Path
try {
$acl = Get-Acl $path
$acl.Access | Select-Object @{n='Path';e={$path}}, IdentityReference, AccessControlType, FileSystemRights, IsInherited
} catch { Write-Warning "无法读取 $path : $($_.Exception.Message)" }
} | Export-Csv "C:\Reports\SharedFolders_NTFS_Perms.csv" -NoTypeInformation -Encoding UTF8
二、导出指定卷下所有非继承权限的文件夹(定位异常配置)
有些目录手动禁用了继承并加了显式权限,容易成为权限盲区。以下命令可快速发现它们:
- 用
Get-ChildItem -Recurse -Directory遍历 D:\Data 下所有文件夹 - 对每个文件夹调用
Get-Acl,筛选出IsInherited -eq $false的 ACE 条目 - 只保留关键字段,导出为 CSV,便于排查谁在哪儿加了“硬编码权限”
适合用于安全巡检或迁移前清理。
三、导出带完整路径与用户描述的汇总报表(审计友好)
如果需要更易读的结果(比如显示“UXIN\Alice”而非 SID,或区分域用户与本地用户),可结合 System.Security.Principal.NTAccount 解析:
- 对每条 ACE,用
$ace.IdentityReference.Translate([System.Security.Principal.NTAccount])转换为可读名称 - 添加自定义列如 Domain、UserType(DomainUser / LocalGroup / BuiltIn)
- 输出含“路径、账号全名、权限级别、是否拒绝、是否继承”的单张大表
这类报表可直接交给合规团队,无需二次加工。
四、注意事项与避坑提醒
- 必须以管理员身份运行 PowerShell,否则部分系统目录会跳过或报错
- 遇到权限不足路径,用
try/catch捕获并记录,不要让整个导出中断 - 导出结果不含所有权信息;如需 Owner 字段,额外加
$acl.Owner到输出对象中 - 若目标服务器是旧版本(如 Server 2008 R2),确认已启用 PowerShell 3.0+ 和 .NET Framework 4.5+











