You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:31:02