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

批量导出1500台服务器AD数据:获取G_SCCM组关联信息需求

解决批量导出AD服务器信息及G_SCCM前缀组的问题

问题核心原因

你获取MemberOF属性为空的直接原因是:Get-ADComputer默认不会返回该属性,必须通过-Properties参数显式指定才能获取到服务器的组归属信息。

完整解决方案脚本

以下脚本可直接实现需求:批量导出服务器名称、AD描述,筛选出名称以G_SCCM开头的组,同时对未加入对应组的单元格设置黄色高亮(依赖ImportExcel模块简化Excel操作)。

# 首次运行需安装ImportExcel模块,执行一次即可
# Install-Module -Name ImportExcel -Scope CurrentUser -Force

# 读取服务器列表(假设服务器名每行一个,存于ServerList.txt)
$servers = Get-Content -Path ".\ServerList.txt"

$results = @()

foreach ($server in $servers) {
    # 获取AD计算机对象,显式指定需要的属性
    $adComputer = Get-ADComputer -Identity $server -Properties Name, Description, MemberOf -ErrorAction SilentlyContinue
    
    if ($adComputer) {
        # 从MemberOf的DN中提取组名,筛选G_SCCM前缀的组
        $sccmGroups = $adComputer.MemberOf | ForEach-Object {
            $groupName = ($_ -split "," | Where-Object { $_ -match "^CN=" }).Replace("CN=", "")
            if ($groupName -like "G_SCCM*") { $groupName }
        }
        
        # 组信息拼接,无匹配组则留空
        $groupOutput = if ($sccmGroups) { $sccmGroups -join ";" } else { "" }
        
        $results += [PSCustomObject]@{
            "服务器名称" = $adComputer.Name
            "AD描述"     = $adComputer.Description
            "G_SCCM组"   = $groupOutput
        }
    } else {
        # 处理AD中不存在的服务器
        $results += [PSCustomObject]@{
            "服务器名称" = $server
            "AD描述"     = "AD中未找到该服务器"
            "G_SCCM组"   = ""
        }
    }
}

# 导出到Excel,对空的G_SCCM组单元格设置高亮
$exportParams = @{
    Path                  = ".\ServerAD_Export.xlsx"
    AutoSize              = $true
    BoldTopRow            = $true
    ConditionalFormatting = @(
        @{
            Column = "G_SCCM组"
            Rule   = "Equal"
            Value  = ""
            Style  = @{
                BackgroundColor = "Yellow"
                FontColor       = "Black"
            }
        }
    )
}

$results | Export-Excel @exportParams

Write-Host "导出完成,文件已保存至:$($exportParams.Path)"

关键细节说明

  • MemberOf属性获取:必须在Get-ADComputer中通过-Properties指定MemberOf,否则默认返回的对象不包含该属性,自然为空。
  • 组名提取逻辑:MemberOf返回的是组的完整LDAP路径(如CN=G_SCCM_Patch_Group,OU=Groups,DC=domain,DC=com),通过分割字符串提取CN=后的内容得到组名。
  • 空值高亮处理:借助ImportExcel模块的条件格式化功能,一键标记未加入任何G_SCCM组的服务器,无需手动操作Excel。
  • 容错机制:加入-ErrorAction SilentlyContinue避免因单台服务器找不到导致脚本中断,同时记录异常服务器信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:56:24