如何用PowerShell批量修改AD用户描述?身份报错求解决
批量更新AD用户描述的PowerShell脚本解决方案
你的原代码存在语法问题——Import-Csv命令和foreach循环之间缺少换行或分号,导致PowerShell无法正确解析;另外身份错误基本是权限不足、AD模块未正确加载或域连接问题导致的。
修正后的可用脚本
# 导入CSV文件 $Users = Import-Csv "C:\MyScripts\Service-Accounts 1.csv" # 遍历每个用户更新描述 foreach ($User in $Users) { # 先验证用户是否存在,避免无效操作报错 if (Get-ADUser -Filter { SamAccountName -eq $User.SamAccountName }) { Set-ADUser -Identity $User.SamAccountName -Description $User.NewDescription Write-Host "已更新用户 $($User.SamAccountName) 的描述: $($User.NewDescription)" } else { Write-Warning "未找到用户 $($User.SamAccountName),跳过该条目" } }
身份错误的解决方法
- 必须以域管理员或拥有AD用户修改权限的账号运行PowerShell,普通域账号大概率没有修改用户属性的权限。
- 如果在非域加入的机器上运行脚本,需要手动指定域控制器和凭据:
# 输入有权限的域账号凭据 $Credential = Get-Credential $Users = Import-Csv "C:\MyScripts\Service-Accounts 1.csv" foreach ($User in $Users) { if (Get-ADUser -Filter { SamAccountName -eq $User.SamAccountName } -Server "你的域控制器FQDN" -Credential $Credential) { Set-ADUser -Identity $User.SamAccountName -Description $User.NewDescription -Server "你的域控制器FQDN" -Credential $Credential Write-Host "已更新用户 $($User.SamAccountName) 的描述: $($User.NewDescription)" } else { Write-Warning "未找到用户 $($User.SamAccountName),跳过该条目" } } - 确保已安装并加载Active Directory模块:如果模块未加载,先运行
Import-Module ActiveDirectory;若模块不存在,需安装RSAT(远程服务器管理工具)中的AD模块。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

