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

PowerShell如何将AD用户的经理邮箱写入extensionAttribute扩展属性

问题错误原因

你之前的代码存在几处逻辑错误:

  1. 变量赋值和管道传参冲突:$user = "testuser@domain.com"|Set-ADUser 这种写法既用管道传值又指定-Identity $user,此时$user还没完成赋值会为空报错
  2. 没有关联查询到的ManagerEmail值:直接写ManagerEmail是未定义的变量,无法读取到之前查询得到的经理邮箱值
  3. -Add参数限制:如果目标用户的extensionAttribute13已经存在值,-Add会直接报错,用-Replace兼容性更好

正确实现代码

单用户测试版本

先针对单个测试用户验证逻辑正确性:

# 填写需要测试的目标用户邮箱
$targetUserEmail = "testuser@domain.com"
Get-ADUser -Filter "EmailAddress -eq '$targetUserEmail'" -Properties Manager,EmailAddress | ForEach-Object {
    $managerEmail = $null
    # 先判断用户是否配置了经理属性,避免空值报错
    if ($_.Manager) {
        $managerEmail = (Get-ADUser -Identity $_.Manager -Properties EmailAddress).EmailAddress
    }
    # 写入extensionAttribute13,无经理邮箱时会清空该属性,不需要清空可加if判断跳过
    $_ | Set-ADUser -Replace @{extensionAttribute13 = $managerEmail}
}

批量全量更新版本

单用户测试通过后可用于批量更新所有启用的AD用户:

Get-ADUser -Filter {Enabled -eq $true} -Properties Manager,EmailAddress | ForEach-Object {
    $managerEmail = $null
    if ($_.Manager) {
        $managerEmail = (Get-ADUser -Identity $_.Manager -Properties EmailAddress).EmailAddress
    }
    $_ | Set-ADUser -Replace @{extensionAttribute13 = $managerEmail}
}

注意事项

  • 执行前请确认运行PowerShell的账号拥有AD用户属性的写入权限
  • 请先完成单用户测试验证逻辑符合预期后,再执行批量操作
  • 如果不需要覆盖extensionAttribute13的已有值,可以把-Replace换成-Add,同时在执行前加逻辑判断该属性是否为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:06:04