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

如何使用PowerShell获取Active Directory用户及对应组成员身份

原脚本无输出的核心原因
  • 变量语法错误:PowerShell管道对象属性的标准写法是$_.属性名,原脚本错写为$._属性名,同时存在属性拼写错误:distinguishedName被错写为distinguisedName,导致变量取值全部为空。
  • 命令逻辑错误:Select-Object未接收输入对象,且将用户所属的所有组对象嵌套在单个GroupName字段中,既无法正常输出,也不符合「每个用户所属组单独占一行」的格式要求。
可直接运行的正确脚本

以下脚本会递归查询所有AD用户的全量组成员关系(含嵌套组),输出格式完全匹配要求:

# 提前加载AD模块
Import-Module ActiveDirectory

Get-ADUser -Filter * -Properties MemberOf | ForEach-Object {
    $currentUser = $_.Name
    Get-ADPrincipalGroupMembership -Identity $_.DistinguishedName | ForEach-Object {
        [PSCustomObject]@{
            Name      = $currentUser
            GroupName = $_.Name
        }
    }
} | Format-Table -AutoSize

如果需要将结果导出为CSV文件,把最后一行Format-Table -AutoSize替换为以下命令即可:

| Export-Csv -Path ".\AD用户组对应关系.csv" -NoTypeInformation -Encoding UTF8
可选:仅查询用户直接隶属组(不含嵌套)

如果不需要递归获取嵌套组,只需要用户直接加入的组,可以用解析MemberOf属性的方式实现,执行效率更高:

Import-Module ActiveDirectory

Get-ADUser -Filter * -Properties MemberOf | ForEach-Object {
    $currentUser = $_.Name
    $_.MemberOf | ForEach-Object {
        # 从组的可分辨名称中提取组名
        $groupName = $_.Split(',')[0].Replace('CN=','')
        [PSCustomObject]@{
            Name      = $currentUser
            GroupName = $groupName
        }
    }
} | Format-Table -AutoSize

运行注意:请使用具备AD读取权限的域账号,在已加入域的设备上打开PowerShell执行上述脚本。

内容的提问来源于stack exchange,提问作者Dipronil Dey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:21:46