2015-09-04 56 views
-1

谢谢大家的回复。我已经纠正了我的代码中的错误,尽管它们只是剪切和粘贴错误。这是我得到的错误的一个例子。如果我的例子做:使用PowerShell脚本设置计算机机房号码

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

需要修正'Write-Host'房间号设置为...'行的双引号情况。看起来第一个引号不是正确的字符,只是删除它并重新键入它,你也不想在你的问题行中增加一个“o”Rooom' – ssaviers

+0

你的代码_appears_ right,但是我在这里看到一个错字:'@ {RooomNumber =“$ RoomNumber”}'应该是'@ {RooomNumber =“$ RoomNumber”}'。我会一直在寻找,你还会得到错误吗?你需要详细描述发生了什么,你将会得到更快的解决方案。 – Matt

回答

0

这里肯定有几个问题。您错误地将AD属性roomNumber输入为rooomNumber。你也有一个空间,你的散列表被声明。

很像ssaviers,我也看到一些精明的引号。这些通常来自复制和粘贴,但如果这些代码在您的代码中,则需要小心。

“ - smartquote 
" - regular double quote 

话虽这么说,问题的部分可能只需要更新:

Set-ADComputer "$HostName" -Replace @{roomNumber = "$RoomNumber"} 
0

找到了答案:

设置-ADComputer没有-roomnumber参数。但可以使用添加,替换,清除或删除参数进行修改。 'ROOMNUMBER'字段是LDAP,因此它有不同的语法:

Set-ADComputer $ HostName -replace @ {roomNumber ='$ RoomNumber'}(这就是我第一次使用但我没有写它正确)

看起来像AD中的很多领域,特别是对于计算机需要这样做。

无论如何谢谢大家的意见和支持。

干杯。

相关问题