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

如何用PowerShell获取AD中所有计算机的组归属并导出CSV?

导出AD所有计算机及其所属组到CSV的解决方案

你的问题主要出在两个点:

  1. Get-ADComputer返回的MemberOf属性是组的LDAP路径(DistinguishedName),不是易读的组名,直接导出可读性极差;
  2. Get-ADPrincipalGroupMembership需要针对单个AD对象调用,不能直接跟Get-ADComputer -Filter *批量结合,必须遍历每台计算机处理。

下面提供两种满足需求的脚本,你可以根据报表格式选择:

方案1:每行对应一个“计算机-组”关系(推荐用于统计)

这个方案会把计算机的每个所属组单独占一行,方便后续筛选分析:

# 导入AD模块(部分环境可能需要手动加载)
Import-Module ActiveDirectory

# 初始化存储结果的数组
$output = @()

# 遍历所有AD计算机
Get-ADComputer -Filter * -Properties Name, OperatingSystem, IPv4Address | ForEach-Object {
    $pc = $_
    # 获取该计算机的所有所属组(包含直接组和嵌套组)
    $groups = Get-ADPrincipalGroupMembership -Identity $pc | Select-Object -ExpandProperty Name

    # 为每个组创建一条记录
    if ($groups) {
        foreach ($group in $groups) {
            $output += [PSCustomObject]@{
                计算机名称     = $pc.Name
                操作系统       = $pc.OperatingSystem
                IPv4地址       = $pc.IPv4Address
                所属组名称     = $group
            }
        }
    } else {
        # 处理无所属组的计算机
        $output += [PSCustomObject]@{
            计算机名称     = $pc.Name
            操作系统       = $pc.OperatingSystem
            IPv4地址       = $pc.IPv4Address
            所属组名称     = "无所属组"
        }
    }
}

# 导出到CSV,替换成你需要的路径
$output | Export-Csv -Path "C:\AD_计算机组报表.csv" -NoTypeInformation -Encoding UTF8

方案2:每行对应一台计算机,所有组名在同一列(用逗号分隔)

如果需要每台计算机只占一行,所有组名合并在同一列,用这个版本:

Import-Module ActiveDirectory

Get-ADComputer -Filter * -Properties Name, OperatingSystem, IPv4Address, MemberOf | 
    Select-Object @{Name='计算机名称'; Expression={$_.Name}},
                  @{Name='操作系统'; Expression={$_.OperatingSystem}},
                  @{Name='IPv4地址'; Expression={$_.IPv4Address}},
                  @{Name='所属组名称'; Expression={
                      # 将MemberOf中的LDAP路径转换为组名,并用逗号分隔
                      ($_.MemberOf | ForEach-Object { (Get-ADGroup $_).Name }) -join ', '
                  }} |
    Export-Csv -Path "C:\AD_计算机组_单行报表.csv" -NoTypeInformation -Encoding UTF8

注意事项

  • 运行脚本需要AD模块权限,确保你有读取AD计算机和组的权限;
  • 如果AD中计算机数量较多,方案1的执行时间会稍长,因为需要逐个查询组信息;
  • 可以根据需求调整CSV的列名和导出路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:30:31