2012-07-30 88 views
1

仍然試圖學習Powershell,並遇到一些簡單的問題,因爲它在我編寫的其他腳本上工作時沒有意義,所以必須丟失一些愚蠢的東西。 基本上我需要確定一個Nic是否已啓用但未附加任何內容,因此我可以添加其他命令來禁用它。如果它已被禁用,我只需要它輸出True。 .netconnectionstatus值回到0,所以我期待類似的命令到 我使用$ disabled自己只是爲了檢查我的輸出。-like with output

$disabled = gwmi win32_networkadapter | where {$_.PhysicalAdapter -eq "True"-and $_.netenabled -ne "True"}` 
| % { '{0,10} {1,20}' -f $_.netenabled,$_.netconnectionstatus} 
$disabled 
$_.netconnectionstatus -like "0" 
+0

你用'$ _。netconnectionstatus-like 0'(不帶引號)嗎? – 2012-07-30 10:20:25

+0

是的。它給了我相同的輸出。 Netconnectionstatus返回一個0 $禁用確認,但我仍然得到任何錯誤的方式。 – 2012-07-30 10:23:22

回答

1

-like和-match運算符只在字符串比較中才有意義。 這裏-eq是最好的選擇,如果你期望整數,不帶引號。另外 - 如果你有布爾值,沒有必要將它與任何東西進行比較。在這裏,如果你想改變:$_.NetEnabled -ne 'False'你會得到完全相同的結果...使用:where { $_.PhysicalAdapter -and (-not $_.NetEnabled)}。如果你決定改變它,你想用PS處理字符串([bool]'False'-eq $ true)的方式來拍攝自己。

另外:你的$ _在foreach-object scriptblock之外是空白的。因此$ false你得到的結果。

+0

謝謝你。工作的魅力,比我試圖做到這一點容易得多,並感謝設置我直$ _。 – 2012-07-30 12:58:09