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

批量查询多台计算机AD组归属并关联对应主机的PowerShell需求

解决方案

1. 查看每台计算机的组归属(带关联标识)

直接管道传递计算机名时,Get-ADPrincipalGroupMembership不会保留原计算机的对应关系。用ForEach-Object逐个处理每台计算机,给结果添加ComputerName属性即可解决:

$Computers = "pc1", "pc2", "pc3"

$Computers | ForEach-Object {
    $currentPC = $_
    Get-ADPrincipalGroupMembership -Identity $currentPC | 
        Select-Object @{Name='ComputerName'; Expression={$currentPC}}, Name, DistinguishedName
}

执行后,输出的每一行都会明确显示对应的计算机名、组名称和组的完整LDAP路径,清晰对应每台机器的组归属。

2. 快速对比所有计算机的组是否完全一致

如果要直接确认所有计算机的组是否完全相同,可以先收集每台机器的组集合,再以其中一台为基准逐一对比:

$Computers = "pc1", "pc2", "pc3"

# 用哈希表存储每台计算机的组(排序后便于对比)
$pcGroupMap = @{}
$Computers | ForEach-Object {
    $groups = Get-ADPrincipalGroupMembership -Identity $_ | 
        Select-Object -ExpandProperty Name | Sort-Object
    $pcGroupMap[$_] = $groups
}

# 以第一台计算机的组为基准,检查其他机器的差异
$baseGroups = $pcGroupMap[$Computers[0]]
$allMatch = $true

foreach ($pc in $Computers[1..($Computers.Count-1)]) {
    $diff = Compare-Object -ReferenceObject $baseGroups -DifferenceObject $pcGroupMap[$pc]
    if ($diff) {
        $allMatch = $false
        Write-Host "`n$pc 与 $($Computers[0]) 的组存在差异:"
        $diff | Format-Table SideIndicator, InputObject -AutoSize
    }
}

if ($allMatch) {
    Write-Host "`n所有计算机的AD组归属完全相同"
}

这段代码会自动检测差异:如果某台机器的组和基准机器不一样,会列出多出来或缺少的组;如果全部一致,会直接给出提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:05