我對powershell相當陌生,我認爲這是一個快速腳本的完美解決方案,只需單擊一次即可禁用所有網絡適配器。
我發現this website並遵循了那裏描述的步驟。
一切看起來不錯,直到我叫Disable()
功能。這裏是我的腳本:在PowerShell中禁用以太網適配器
$lan = get-wmiobject -class Win32_NetworkAdapter -namespace root\CIMV2 | where-object {$_.Name -match "Ethernet"}
$lanEnabled = $lan | % {$_.NetEnabled}
write-host "Ethernet status: " $lanEnabled
if($lanEnabled){
write-host "Disabling Ethernet"
$lan | % {$_.Disable()}
}
else{
write-host "Enabling Ethernet"
$lan | % {$_.Enable()}
}
我的以太網卡,這樣% {$_.NetEnabled}
返回正確的狀態。我在控制檯中看到來自write-host
的所有輸出。但調用% {$_.Enable()}
或% {$_.Disable()}
,而不是啓用/禁用只輸出如下(見下文「禁用以太網」線):
難道我做錯了什麼?就像我說的,我的品牌新PowerShell的世界,所以我不會感到驚訝你的時間...感謝幫助:)
如果我弄錯了,請糾正我的錯誤,但性能問題是由'Where-object'導致的,因爲它傳遞了一個完整的查詢,而WMI'-Filter'導致它在運行中過濾掉? – Koliat
這是正確的。另外,當你使用'-Filter'時,過濾發生在遠程系統上。如果使用WMI cmdlet查詢遠程系統,則不希望通過線路傳輸所有對象,然後在本地系統中進行篩選。 – ravikanth
我意識到我沒有工作,因爲我不得不以管理員身份運行它。儘管如此,你的代碼更好,所以我會接受它作爲答案:)謝謝:) –