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

使用PowerShell导出AD组时MemberOf显示异常,需获取组名与DN分析嵌套

解决AD组嵌套排查脚本的MemberOf显示问题

原脚本的核心问题

  1. MemberOf属性返回的是父组可分辨名称的数组,直接导出CSV时,PowerShell会将数组显示为System.String[],这就是你看到的异常内容。
  2. 你需要获取的是组自身的可分辨名称(DistinguishedName),但原脚本未选择该属性,且错误处理了MemberOf的输出格式。

修正后的脚本(两种常用格式)

格式1:展开每个嵌套关系为单独行(推荐用于层级分析)

这种格式会把每个子组-父组的嵌套关系拆成单独一行,方便后续梳理嵌套层级:

Get-ADGroup -Filter * -Properties MemberOf |
    Where-Object { $_.MemberOf -ne $null } |
    ForEach-Object {
        # 遍历当前组的所有父组,生成独立条目
        foreach ($parentDN in $_.MemberOf) {
            [PSCustomObject]@{
                组名 = $_.Name
                组可分辨名称 = $_.DistinguishedName
                所属父组可分辨名称 = $parentDN
            }
        }
    } |
    Export-Csv -Path "C:\Users\XXXXX\Documents\NestedGroups_2.csv" -NoTypeInformation -Encoding UTF8

格式2:父组拼接为单行字符串(适合快速查看)

如果希望每组保留一行,把所有父组用分隔符拼接在一起:

Get-ADGroup -Filter * -Properties MemberOf |
    Where-Object { $_.MemberOf -ne $null } |
    Select-Object Name,
                  @{Name='组可分辨名称'; Expression={$_.DistinguishedName}},
                  @{Name='所属父组列表'; Expression={$_.MemberOf -join ';'}} |
    Export-Csv -Path "C:\Users\XXXXX\Documents\NestedGroups_2.csv" -NoTypeInformation -Encoding UTF8

关键说明

  • 添加-NoTypeInformation可以避免CSV文件开头出现多余的类型注释行
  • 指定-Encoding UTF8能解决部分情况下CSV打开乱码的问题
  • 若不需要过滤无父组的条目,可直接移除Where-Object那一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:42:21