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

使用AD PowerShell修改AD用户邮件属性时保留次要邮件地址的问题

AD PowerShell修改AD用户邮件属性时保留次要邮件地址的问题

我太懂你的困扰了——直接用-Replace修改proxyAddresses确实会把所有次要邮件地址都清掉,这坑踩过的人都懂!问题出在proxyAddresses是多值属性,-Replace在这里的作用是替换整个属性值集合,而不是只修改其中的某一项。

要解决这个问题,我们得先拿到用户当前的所有邮件地址,替换掉主SMTP地址,同时完整保留其他次要地址,再整体更新回去。具体操作步骤如下:

  1. 先获取目标用户的现有属性
    先把用户的proxyAddresses和相关属性拉出来,这样能清楚看到当前所有的邮件地址:

    $user = Get-ADUser -Identity "SamAccountName" -Server domain -Properties proxyAddresses, mail
    
  2. 处理邮件地址集合
    主SMTP地址是大写SMTP:开头的,次要地址是小写smtp:开头的,我们先过滤掉原来的主地址,再添加新的主地址,同时保留所有次要地址和其他非SMTP类型的地址(比如X500:格式的地址):

    # 过滤掉原主SMTP地址,保留其他所有地址
    $newProxyAddresses = $user.proxyAddresses | Where-Object { $_ -notmatch "^SMTP:" }
    # 添加新的主SMTP地址
    $newProxyAddresses += "SMTP:newsmtp@domain.com"
    
  3. 更新用户属性
    最后用处理好的地址集合更新用户,同时设置UserPrincipalName和mail属性:

    Set-ADUser -Identity $user -Server domain `
        -UserPrincipalName "newsmtp@domain.com" `
        -Replace @{ proxyAddresses = $newProxyAddresses; mail = "newsmtp@domain.com" }
    

额外提醒

  • 确保你运行脚本的账号有修改AD用户属性的权限,不然会触发权限报错
  • 建议先在测试环境的用户身上验证这套逻辑,没问题再用到生产环境
  • 如果要批量修改多个用户,可以把这段逻辑封装成函数,循环遍历用户列表处理

备注:内容来源于stack exchange,提问作者Ariamteiafmz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:57:57