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

从CSV更新Active Directory的telephoneNumber字段遇问题求助

修复用CSV更新AD用户电话号码的PowerShell脚本错误

问题根源

你踩了个常见的变量覆盖坑:

  • 从CSV导入的$User是对象类型,自带sAMAccountName和telephoneNumber两个属性
  • 但你写了$User = $User.sAMAccountName,把$User直接改成了字符串(仅账号名),此时再去取$User.telephoneNumber,字符串没有这个属性,结果必然是null——这就是Set-ADUser报错参数为空的核心原因。

另外,用-Add参数不符合你的需求:它是给用户添加新的电话号码(若AD属性允许多值),而你要的是替换更新原有号码,应该用-Replace参数。

修正后的脚本

$Users = Import-Csv -Path C:\Results\EmployeeExtsTest.csv

ForEach ($User in $Users) {
    # 不覆盖原对象,单独提取属性
    $samAccount = $User.sAMAccountName
    # 去除号码前后空格(你的测试数据末尾带空格)
    $telephoneNumber = $User.telephoneNumber.Trim()

    # 先检查号码非空,避免无效操作
    if ($telephoneNumber) {
        Get-ADUser -Identity $samAccount | Set-ADUser -Replace @{telephoneNumber = $telephoneNumber}
        Write-Host "已更新用户 $samAccount 的电话号码: $telephoneNumber"
    } else {
        Write-Warning "用户 $samAccount 的电话号码为空,跳过更新"
    }
}

额外优化说明

  • Trim()处理:避免AD存储带多余空格的无效号码
  • 非空检查:跳过CSV中空号码的记录,减少错误触发
  • 日志输出:直观查看更新进度,方便后续排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:15:36