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

批量编辑AD用户costCenter属性时Windows PowerShell报错求助

解决Set-ADUser修改costCenter属性时的“Positional parameter cannot be found”错误

问题原因

你遇到的错误核心是对AD属性名和Set-ADUser参数的误解:

  • AD架构里的属性描述“Cost Center”只是友好显示名称,实际属性名是costCenter(无空格、无连字符)
  • 你写的-"Cost-Center"不是Set-ADUser的有效参数,PowerShell无法识别这个参数,将其误判为位置参数,最终导致参数绑定失败,抛出“找不到接受参数'MM'的位置参数”错误

正确解决方案

有两种可靠的方式修改AD用户的costCenter属性:

方式1:使用Set-ADUser内置参数

Set-ADUser提供了对应costCenter属性的内置参数-CostCenter(仅首字母大写,无连字符),直接调用即可:

Import-Module ActiveDirectory

$Attribcsv = Import-Csv "C:\Temp\ADUsers_BulkEdit.csv"
foreach ($User in $Attribcsv) {
    Get-ADUser -Identity $User.samAccountName | Set-ADUser -CostCenter $User.costCenter
}

方式2:通用属性修改方式(适用于无内置参数的AD属性)

如果遇到Set-ADUser没有提供对应内置参数的AD属性,可以用-Replace参数传入哈希表来批量修改:

Import-Module ActiveDirectory

$Attribcsv = Import-Csv "C:\Temp\ADUsers_BulkEdit.csv"
foreach ($User in $Attribcsv) {
    Get-ADUser -Identity $User.samAccountName | Set-ADUser -Replace @{ costCenter = $User.costCenter }
}

补充说明

你之前修改description和comment成功,是因为Set-ADUser正好有对应的-Description和-Comment内置参数,参数名和属性名规则匹配(仅首字母大写),所以没有触发参数识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:24:52