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

PowerShell对比两个OU的AD用户仅输出差异的实现求助

问题修复方案

原有代码核心问题

  • 直接对$user_GC.GABCustomUser3和$user_PL.mail两个数组做等值判断不符合需求,该判断仅会校验两个数组整体是否完全一致,不会逐个比对GC侧新用户属性是否存在于PL侧用户的mail列表中
  • 比对逻辑和遍历顺序错误,没有对每个GC侧新用户做单独校验就直接生成了全部新用户对象
  • 新增用户属性用到了Organization,但原Get-ADUser查询参数里没有拉取该属性,会返回空值
修正后代码
$dateforlookup = (Get-Date).AddDays(-1)

$DC_GC = "test1.com"
$DC_PL = "test2.com"

$OU_GC = "some OU1"
$OU_PL = "some OU2"

# 获取GC侧近1天新增用户,补全Organization属性拉取
$user_GC = Get-ADUser -Server $DC_GC -SearchBase $OU_GC -Filter * -Properties GivenName,Surname,GABCustomUser3,whenCreated,Title,Department,Organization | Where {$_.whenCreated -gt $dateforlookup}
# 获取PL侧所有用户的mail属性,存入哈希集合大幅提高比对效率
$user_PL = Get-ADUser -Server $DC_PL -SearchBase $OU_PL -Filter * -Properties mail
$plMailSet = [System.Collections.Generic.HashSet[string]]::new([string[]]$user_PL.mail)

$output = @()
# 逐个校验GC侧新用户
foreach ($user in $user_GC) {
    # 仅当GABCustomUser3非空、且不存在于PL侧mail列表中时,才生成新用户对象
    if (-not [string]::IsNullOrWhiteSpace($user.GABCustomUser3) -and -not $plMailSet.Contains($user.GABCustomUser3)) {
        $properties = @{
            'FirstName' = $user.GivenName
            'LastName' = $user.Surname.Substring(0,1)+($user.Surname.Substring(1).ToLower())
            'Email' = $user.GABCustomUser3
            'Department' = $user.Department
            'JobTitle' = $user.Title
            'Organization' = $user.Organization
            'GUID'= ($user.GivenName.ToLower()).Substring(0,1)+'.'+$user.Surname.ToLower()
        }
        $output += New-Object -Type psobject -Property $properties
    }
}

if ($output.Count -gt 0) {
    Write-Host "共找到$($output.Count)个需要创建的新用户"
    # 后续可接新用户创建逻辑
} else {
    Write-Host "无需要创建的新用户"
}
可选优化

如果需要mail比对不区分大小写,可将哈希集合初始化代码替换为:

$plMailSet = [System.Collections.Generic.HashSet[string]]::new([string[]]$user_PL.mail, [System.StringComparer]::OrdinalIgnoreCase)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:06:05