在windows server域环境中,可通过powershell批量更新ad用户电话号码和部门:先导入activedirectory模块,再用import-csv读取含samaccountname、telephonenumber、department的csv文件,遍历调用set-aduser更新。
在 windows server 域环境中,使用 powershell 批量更新域用户(active directory)的电话号码(telephonenumber)和部门(department)非常高效。核心是通过 get-aduser 获取用户,再用 set-aduser 修改属性。关键前提是:已安装并导入 activedirectory 模块,且当前账户有相应写权限。
准备 CSV 数据文件
先整理待更新的用户信息为标准 CSV 文件(如 users_update.csv),至少包含 samAccountName(或 userPrincipalName)、telephoneNumber、department 三列:
samAccountName,telephoneNumber,department jdoe,"+86-10-1234-5678","信息技术部" asmith,"+86-21-8765-4321","人力资源部"
注意:电话号码建议加引号避免逗号或空格解析错误;部门名称需与 AD 中现有值格式一致(大小写不敏感,但建议统一)。
执行批量更新命令
以管理员身份打开 PowerShell,运行以下脚本(请先测试小范围):
Import-Module ActiveDirectory
$users = Import-Csv "C:\path\to\users_update.csv"
foreach ($user in $users) {
try {
Set-ADUser -Identity $user.samAccountName `
-OfficePhone $user.telephoneNumber `
-Department $user.department `
-ErrorAction Stop
Write-Host "✓ 已更新 $($user.samAccountName)" -ForegroundColor Green
}
catch {
Write-Warning "✗ 更新失败 $($user.samAccountName):$($_.Exception.Message)"
}
}
说明:
-
-OfficePhone对应 AD 中的telephoneNumber属性(PowerShell 别名) -
-Department直接映射到department属性 -
-ErrorAction Stop确保异常被捕获,避免静默失败 - 若 CSV 用的是
userPrincipalName(如 user@domain.com),把$user.samAccountName替换为$user.userPrincipalName
验证与安全建议
更新前建议先导出原始数据备份:
Get-ADUser -Filter * -Properties samAccountName,telephoneNumber,department |
Select-Object samAccountName,telephoneNumber,department |
Export-Csv "backup_before.csv" -NoTypeInformation
更新后可抽样验证:
Get-ADUser jdoe -Properties telephoneNumber,department |
Select-Object samAccountName,telephoneNumber,department
注意事项:
- 修改操作不可撤销,务必先在测试 OU 或少量用户上验证流程
- 确保 CSV 路径正确,编码为 UTF-8 或 ANSI(避免中文乱码)
- 若部门字段为空,可用
-Clear department清除;电话号码为空则用-Clear telephoneNumber - 跨域或远程操作时,添加
-Server dc01.domain.com指定域控制器
进阶:按条件筛选后统一设置
例如,将“研发部”下所有用户电话统一设为总机号:
Get-ADUser -Filter {department -eq "研发部"} -Properties department |
ForEach-Object {
Set-ADUser $_ -OfficePhone "+86-10-9999-8888"
}
这种写法适合规则明确、无需逐条配置的场景,比 CSV 更轻量。











