谢谢大家的回复。我已经纠正了我的代码中的错误,尽管它们只是一个剪切和粘贴错误。这是一个我得到错误的例子。如果我这样做:
PS > Set-ADComputer "VM-WINDOWS7" -Location "NA/HQ/Building A"
PS > Get-ADComputer "VM-WINDOWS7" -Properties location |select-object location
它有效,我得到了结果:
Location
--------
NA/HQ/Building A
但是当我这样做时:
PS > Set-ADComputer "VM-WINDOWS7" -RoomNumber "7"
或者
PS > Set-ADComputer "VM-WINDOWS7" -RoomNumber @{Replace="7"}
我收到错误:
Set-ADComputer: Cannot find a parameter that matches the name "RoomNumber".
At line: 1 Character: 41
+ Set-ADComputer "VM-WINDOWS7" -RoomNumber <<<< @{Replace="7"}
+ CategoryInfo: InvalidArgument: (:) [Set-ADComputer], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADComputer
就像我之前说过的,参数RoomNumber无法识别,所以我想也许它有另一个名字,例如(AD中的帐号名称= PowerShell中的SAMAccountName)。
答案 0 :(得分:0)
你肯定有几个问题。您将AD属性roomNumber
输入错误为rooomNumber
。您还有一个声明哈希表的空间。
与ssaviers非常相似,我也看到了一些明智的引用。这些通常可以来自复制和粘贴,但如果它们在您的代码中,则需要小心。
“ - smartquote
" - regular double quote
据说有问题的部分可能只需要更新:
Set-ADComputer "$HostName" -Replace @{roomNumber = "$RoomNumber"}
答案 1 :(得分:0)
找到答案:
Set-ADComputer没有-roomnumber参数。但可以使用添加,替换,清除或删除参数进行修改。 &#39; ROOMNUMBER&#39;字段是LDAP,因此它具有不同的语法:
Set-ADComputer $ HostName -replace @ {roomNumber =&#39; $ RoomNumber&#39;}(这是我首先使用的,但我没有正确写出来)
看起来AD中的许多字段尤其是计算机需要以这种方式完成。
无论如何,谢谢大家的想法和支持。
干杯。