2013-06-18 45 views
0

我試圖理解爲什麼失敗的屬性參數傳遞:PowerShell中使用GET-ADComputer

 
Get-ADcomputer -filter * | select @{l="computername";e={$_.name}} | Get-service 

返回的錯誤是「不能與服務名稱找到服務‘@ {comptuername = SERVER 1}’
使用|時我可以獲取數據獲得服務*
但是我想更好地理解爲什麼這個特定的命令不work.It似乎不是字符串類型,「計算機名」作爲給Get-SERVIC作爲ADcomputerobject通過呢?

我希望獲取服務由物業從管道由於不是​​強制性的名稱屬性的Get-服務獲得計算機名,上面的命令應該只是工作?

回答

1

問題是傳入對象被結合Name參數,而不是計算機名。儘管ComputerName通過屬性名稱接受傳入對象,但Name參數也接受這一點,但它更重要的是它接受傳入對象的值並且優先於屬性,因此傳入對象始終落入Name參數中。

對象類型,ADcomputerobject,無關所以在這種情況下,因爲你可以用customobject攝製。您也可以從錯誤消息中獲得關於問題的提示(...服務名稱):

PS> [pscustomobject]@{ComputerName='server1'} | gsv 
gsv : Cannot find any service with service name '@{ComputerName=server1}'.