2011-07-14 32 views
1

我對PHP,Javascript等非常熟悉,但我是Powershell的新手。我試圖從活動目錄中的所有計算機獲取IP地址和Mac地址。我遇到了一個腳本,獲得一個具有所有計算機名稱的對象,並通過foreach循環列出它們。在該循環中,我試圖運行以下命令:如何將對象的屬性轉換爲Powershell中的字符串

$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" ` 
comp $objComputer.name -filter "IpEnabled = TRUE" 

很顯然,這是行不通的,因爲它不能從管道取數據。是否需要使用名稱屬性並將其轉換爲在Get-WmiObject中使用的字符串變量?我試過用$ objComputer.name作爲值聲明一個字符串變量,並嘗試使用$($ objComputer.name),但對我而言也沒有。任何幫助將不勝感激。

+0

@Joey只是想知道爲什麼你刪除這個:謝謝,並有一個很好的。 ? – Matt

+0

馬特:[看看強大的Meta](http://meta.stackexchange.com/questions/2950/should-hi-thanks-and-taglines-and-salutations-be-removed-from-posts)。 – Joey

回答

1

我認爲你需要在比較前面的連字符...

$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $objComputer.name -filter "IpEnabled = TRUE" 

這可能是一個複製和粘貼錯誤...

這對我的作品雖然(使用點):

$colItems =GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp . -filter "IpEnabled = TRUE" 

使用$ objComputer但你可以做到這一點

$objComputer = @{ "name" = "." } 

馬特

+0

哇,這是一個複製和粘貼錯誤。我得到GWMI電話的網站發生了錯字,我不知道這一點。謝謝你的幫助。 – Dan

0

不幸的是Get-WmiObject不接受流水線輸入。通過傳遞$ objComputer.name仍然是完全有效的(只要$ objComputer是一個具有名稱成員的對象),您可以將名稱值分配給vible,並將該變量傳遞給ComputerName屬性。

foreach($objComputer $computers) 
{ 
    $name = $objComputer.name 
    $colItems = GWMI -cl Win32_NetworkAdapterConfiguration -comp $name -filter "IpEnabled = TRUE" 
    $colItems 
    ... 
} 
相關問題