可以,powershell能批量导出指定目录下所有子文件夹的ntfs权限并生成独立csv文件,需遍历每个文件夹、调用get-acl提取acl对象,再筛选(如含“uxin”且非admin)、格式化后逐个输出;也可汇总为单个含完整字段(路径、用户、权限类型、继承状态等)的csv用于审计。
可以直接用 powershell 脚本批量导出指定目录下所有子文件夹的 ntfs 权限,并生成独立 csv 文件,每份对应一个文件夹。核心是调用 get-acl 获取权限对象,再筛选、格式化后输出。
关键点在于:NTFS 权限本身不直接支持“一键导出整个目录树报表”,必须遍历每个文件夹,逐个提取 ACL 并转为结构化文本。
一、基础脚本:导出某路径下所有子文件夹权限(含 UXIN 用户)
这个脚本适用于 Windows Server 或启用了 PowerShell 的桌面系统,导出目标目录中每个子文件夹的权限,仅保留含 “UXIN” 字样且非 Admin 的用户条目:
$sfolder = "D:FileShareinance dep"
$folders = Get-ChildItem $sfolder -Recurse | Where-Object { $_.PSIsContainer }
$rfolder = "D:OperationsScriptsinance-p"
foreach ($folder in $folders) {
$f = $folder.FullName
$acls = Get-Acl $f | Select-Object Path, AccessToString
# 提取路径名作为文件名(去反斜杠、去前缀)
$foldernamer = $acls.Path.Split("::")[3].Replace("", "-")
$foldername = $foldernamer.Substring(1, $foldernamer.Length - 1) + ".csv"
$folderpath = Join-Path $rfolder $foldername
# 遍历每条 ACE,只保留 UXIN 用户(排除 Admin)
foreach ($p in $acls.AccessToString.Split("`n")) {
if ($p.Contains("UXIN") -and !$p.Contains("Admin")) {
$ps = $p.Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)
if ($ps.Count -ge 2) {
($ps[0] + "," + ($ps[1..($ps.Count-1)] -join " ")) | Out-File $folderpath -Encoding UTF8 -Append
}
}
}
}
✅ 输出效果示例(某文件夹生成的
Finance-Reports.csv):UXINlice,Allow FullControl UXINob,Allow Modify, Synchronize
二、更通用的导出方式:单个汇总 CSV(推荐日常审计)
如果不需要每个文件夹单独一个 CSV,而是想把整个目录树的权限汇总到一张表里(含路径、用户、访问控制类型、权限),可用以下简化脚本:
$root = "D:FileShareinance dep"
$outfile = "D:ReportsNTFS_Permissions_Summary.csv"
Get-ChildItem $root -Recurse -Directory | ForEach-Object {
$path = $_.FullName
$acl = Get-Acl $path
$acl.Access | ForEach-Object {
[PSCustomObject]@{
FolderPath = $path
IdentityReference = $_.IdentityReference
FileSystemRights = $_.FileSystemRights
AccessControlType = $_.AccessControlType
IsInherited = $_.IsInherited
InheritanceFlags = $_.InheritanceFlags
PropagationFlags = $_.PropagationFlags
}
}
} | Export-Csv $outfile -NoTypeInformation -Encoding UTF8
✅ 优势:字段完整、可排序筛选、兼容 Excel;包含是否继承、继承标志等关键上下文。
三、注意事项与避坑提示
-
权限需足够:运行脚本的账户必须对目标目录有「读取权限」和「读取所有属性」权限,否则
Get-Acl会报错跳过。 -
中文路径/用户名:确保保存为
UTF8编码(不是默认 ANSI),否则 CSV 在 Excel 中打开会乱码;PowerShell 5.1+ 默认Out-File -Encoding UTF8生成的是无 BOM 的 UTF-8,Excel 可能识别异常,建议改用Export-Csv(自动带 BOM)。 -
空权限或拒绝项:
AccessToString是易读字符串,但丢失了Deny类型的精确逻辑;如需区分 Allow/Deny,务必用.Access属性遍历。 -
远程服务器:若目标在另一台机器上,需先映射网络驱动器或使用 UNC 路径(如
\servershareolder),并确认当前用户有跨机器 ACL 查询权限。
四、替代方案:用第三方工具快速查看(非脚本)
- AccessEnum(Sysinternals):免费 GUI 工具,扫描后可复制表格内容 → 粘贴进 Excel,适合一次性人工核查。
-
WizTree + 手动加权:虽然 WizTree 主打空间分析,但它导出的 CSV 包含完整路径和 NTFS 属性字段,配合 Excel 的
=SUBSTITUTE()和FILTER可间接辅助权限归类(需额外处理,不推荐主用)。
导出 NTFS 权限报表本质是把 ACL 对象转成平面数据,没有捷径,但脚本写好一次就能复用。重点是明确你要的是「每个文件夹一份明细」还是「一张总表方便筛选」,再选对应方法。











