如何通过PowerShell导出AD特定用户的所属组及文件夹权限至文件
解决方案:获取AD用户所属组及文件夹权限并导出
一、明确需求差异
你当前的命令是获取AD用户对象本身的访问控制权限,而非文件系统文件夹的权限。要实现需求,需分两步:获取用户的「Member of」组(含嵌套组)、获取目标文件夹中该用户及所属组的权限,最后导出结果。
二、分步实现命令
1. 获取用户的「Member of」所属组(含嵌套组)
使用Get-ADPrincipalGroupMembership可直接获取用户的所有所属组(包括嵌套继承的组),避免仅读取MemberOf属性遗漏嵌套组:
# 替换为目标用户名或SID $targetUser = "joao" # 获取用户所属所有组(含嵌套) $userGroups = Get-ADPrincipalGroupMembership -Identity $targetUser | Select-Object Name, DistinguishedName, SamAccountName
2. 获取目标文件夹的权限(用户+所属组)
指定目标文件夹路径后,通过Get-ACL读取权限,筛选出与目标用户或其所属组匹配的权限项:
# 替换为目标文件夹路径 $targetFolder = "D:\SharedFiles" # 获取文件夹ACL $folderAcl = Get-ACL -Path $targetFolder # 筛选用户及所属组的权限 $relevantPermissions = $folderAcl.Access | Where-Object { $_.IdentityReference.Value -eq "$env:USERDOMAIN\$targetUser" -or $userGroups.SamAccountName -contains $_.IdentityReference.Value.Split("\")[-1] } | Select-Object IdentityReference, AccessControlType, FileSystemRights, IsInherited, InheritanceFlags
3. 导出结果至Excel/文本
导出为CSV(可直接用Excel打开)
# 导出所属组 $userGroups | Export-Csv -Path ".\用户所属组.csv" -Encoding UTF8 -NoTypeInformation # 导出文件夹权限 $relevantPermissions | Export-Csv -Path ".\文件夹权限.csv" -Encoding UTF8 -NoTypeInformation # 可选:合并组与权限到同一文件 $combinedOutput = @() # 添加组信息 foreach ($group in $userGroups) { $combinedOutput += [PSCustomObject]@{ 类别 = "用户所属组" 名称 = $group.Name 标识 = $group.SamAccountName 权限 = $null 权限类型 = $null 是否继承 = $null } } # 添加权限信息 foreach ($perm in $relevantPermissions) { $combinedOutput += [PSCustomObject]@{ 类别 = "文件夹权限" 名称 = $perm.IdentityReference.Value 标识 = $null 权限 = $perm.FileSystemRights 权限类型 = $perm.AccessControlType 是否继承 = $perm.IsInherited } } $combinedOutput | Export-Csv -Path ".\用户权限汇总.csv" -Encoding UTF8 -NoTypeInformation
导出为纯文本文件
# 导出所属组 $userGroups | Format-Table -AutoSize | Out-File -Path ".\用户所属组.txt" -Encoding UTF8 # 导出文件夹权限 $relevantPermissions | Format-Table -AutoSize | Out-File -Path ".\文件夹权限.txt" -Encoding UTF8
三、注意事项
- 需提前安装
ActiveDirectory模块:Install-WindowsFeature RSAT-AD-PowerShell - 执行命令需具备AD读取权限及目标文件夹的读取权限
- 若需批量处理多个用户/文件夹,可将上述逻辑封装为函数循环执行
内容的提问来源于stack exchange,提问作者Joao
相关产品推荐
相关产品推荐

