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

批量修改AD中指定OU用户的主SMTP地址

问题分析与脚本修正

原脚本不生效的核心原因

  1. 未提交AD修改:Set-ADUser -instance $_被注释,逻辑正确也不会同步修改到AD。
  2. 原主地址未降级:只把第一个@domain1.com地址设为主,但未将原主地址(SMTP:first.last@domain2.net)降级为次要地址(smtp:前缀),AD仍会保留原主地址。
  3. 多值属性处理不稳定:用-instance更新AD用户时,多值属性(如ProxyAddresses)的变更检测易出问题,直接指定-ProxyAddresses参数更可靠。

修正后的脚本

# 获取目标OU内用户,加载ProxyAddresses属性
Get-ADUser -Filter * -SearchBase 'OU=users_test,OU=Test,DC=test,DC=local' -Properties ProxyAddresses |
ForEach-Object {
    $updatedProxies = @()
    $primarySet = $false

    foreach ($addr in $_.ProxyAddresses) {
        $lowerAddr = $addr.ToLower()
        # 把所有domain2.net的地址降级为次要
        if ($lowerAddr -like 'smtp:*@domain2.net') {
            $updatedProxies += $lowerAddr
        }
        # 将第一个domain1.com的地址设为主地址
        elseif (!$primarySet -and $lowerAddr -like 'smtp:*@domain1.com') {
            $updatedProxies += "SMTP:$($lowerAddr.Substring(5))"
            $primarySet = $true
        }
        # 其他地址保持原样,非目标主地址统一转成次要前缀
        else {
            if ($addr.StartsWith('SMTP') -and !$addr.EndsWith('@domain1.com')) {
                $updatedProxies += $lowerAddr
            } else {
                $updatedProxies += $addr
            }
        }
    }

    # 先输出验证修改结果,确认正确后再取消注释Set-ADUser
    Write-Host "用户 $($_.SamAccountName) 新邮件地址列表:"
    $updatedProxies | ForEach-Object { Write-Host "  $_" }

    # 提交修改到AD(确认输出正确后取消注释)
    # Set-ADUser -Identity $_ -ProxyAddresses $updatedProxies
}

关键修正说明

  • 统一前缀处理:转小写前缀避免大小写判断混乱,确保所有地址的前缀逻辑一致。
  • 强制降级原主地址:将所有@domain2.net的地址设为次要,彻底替换原主地址的优先级。
  • 显式设置新主地址:把第一个匹配的@domain1.com地址标记为大写SMTP:前缀,明确设置为主地址。
  • 安全验证机制:先通过Write-Host输出修改结果,确认逻辑无误后再执行AD修改操作。

注意事项

  • 执行脚本需要AD管理员权限,且环境需安装RSAT-AD-PowerShell模块。
  • 建议先在测试OU验证效果,确认无误后再批量应用到生产环境。
  • 若需指定特定@domain1.com地址(如优先first.last@domain1.com),可调整匹配顺序,先判断精准格式再处理其他domain1地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:50:28