PowerShell修改AD用户Department属性报错:无法找到该属性
报错原因分析
- 核心问题出在第4行的
Select-Object $oldDepartment:你把输入的旧部门名称当成了要选择的属性名,这完全错误。这导致$users变量里的对象根本不是完整的AD用户对象,也没有Department属性,所以第9行试图修改$_.Department时会提示找不到属性。 - 额外冗余操作:第9行的
$_.Department = $newDepartment完全没必要,修改本地对象属性不会同步到AD,直接用Set-ADUser修改即可。
修正后的脚本
$oldDepartment = Read-Host "Old Department Here" # 去掉错误的Select-Object,保留完整AD用户对象用于后续修改 $users = Get-ADUser -Filter {Department -eq $oldDepartment} -SearchBase "DC=company,DC=com" -Properties Department $newDepartment = Read-Host "New Department Here" $users | ForEach-Object { # 直接调用Set-ADUser修改AD中的用户部门属性 Set-ADUser -Identity $_ -Replace @{Department = $newDepartment} } # 重新查询新部门的用户,验证修改结果 $updatedUsers = Get-ADUser -Filter {Department -eq $newDepartment} -SearchBase "DC=company,DC=com" -Properties Department $updatedUsers | Format-Table Name, Department
补充说明
- 如果想精简返回的用户属性,可以选择
DistinguishedName或SamAccountName这类能唯一标识用户的属性(比如Select-Object DistinguishedName, Department),但直接使用Get-ADUser返回的完整对象会更方便后续操作。 - 最后验证时查询新部门的用户,才能直观看到修改后的结果。
内容的提问来源于stack exchange,提问作者Kesis Karhu
相关产品推荐
相关产品推荐

