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

使用PowerShell更新AD用户proxyAddresses属性异常咨询

异常产生原因

  • 核心错误为属性调用错位:你在foreach-object循环内已经通过$alias=$_.mail.Split("@")[0]定义了本地变量存储邮箱前缀,但在Set-ADUser的拼接逻辑中错误使用了$_.alias。AD用户对象无原生alias属性,该值为空,因此最终生成的proxy地址缺失前缀部分,仅显示smtp:@domain.onmicrosoft.com。
  • 次要可优化问题:直接使用-match匹配多值属性ProxyAddresses可能因正则特殊字符、大小写差异(主地址为大写SMTP前缀)出现误判;-Properties *会拉取所有AD用户属性,执行效率极低。

修复方案

修改拼接逻辑的属性调用,同时可优化脚本的匹配逻辑和属性拉取规则,修复后完整脚本如下:

$proxydomain = "@domain.onmicrosoft.com"
# 仅拉取需要的属性,提升执行效率
Get-ADUser -Filter {(emailaddress -like "*@contoso.com" -and Enabled -eq $true -and sAMAccountName -like "TYU*")} -SearchBase "OU=IT,DC=contoso,DC=local" -SearchScope Subtree -Properties mail,ProxyAddresses,displayname,SamAccountName  | foreach-object {
    $alias = $_.mail.Split("@")[0]
    $targetProxy = "smtp:" + $alias + $proxydomain
    # 改用正则转义的匹配规则,避免特殊字符导致的误判
    if ($_.Proxyaddresses -join ";" -match [regex]::Escape($targetProxy)) {
        Write-Host "Result: ProxyAddresses value already exists for $($_.displayname); No action taken."
    }
    else {
        # 调用自定义的$alias变量而非不存在的$_.alias
        Set-ADUser -Identity $_.SamAccountName -Add @{proxyAddresses = $targetProxy}
        Write-Host "Result: Added proxyAddresses value to Account"
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:06:02