上一篇介紹了 WMI 物件的屬性查詢,本篇將深入探討如何呼叫 WMI 類別的方法來執行實際管理操作。許多 WMI 類別同時擁有屬性與方法,善用方法可完成設定變更、服務控制等行政任務。
以 Win32_NetworkAdapterConfiguration 為例,查詢其方法:
Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Methods | Format-List
常見方法包含:
EnableDHCP、DisableIPSec、EnableIPSecSetDNSServerSearchOrder、SetGateways、SetWINSServerReleaseDHCPLease、RenewDHCPLease查詢屬性:
Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Property | Format-List
關鍵屬性 IPEnabled(布林值)可用來過濾實體啟用的網路卡,排除虛擬或斷開的介面卡。
$Network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($NIC in $Network) {
$NIC.EnableDHCP()
}
此腳本先以 IPEnabled 過濾,再對每張網卡呼叫 EnableDHCP() 方法。
$Network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($NIC in $Network) {
$NIC.EnableDHCP()
$NIC.SetDNSServerSearchOrder() # 可傳入陣列指定 DNS 伺服器
}
不同方法要求不同型別的參數,呼叫前務必確認。透過 Get-Member 輸出的 Definition 欄位可查看具體簽名:
Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Methods | Select-Object Name, Definition

例如 SetDNSServerSearchOrder 可能接受字串陣列,若直接呼叫無參數則可能重設為自動取得。實際開發時請參考 MSDN 文件確認參數詳情。
Where-Object 過濾目標物件,避免誤操作虛擬介面卡。ManagementBaseObject,包含 ReturnValue 屬性(0 表成功),建議捕捉並驗證。try/catch 捕捉 System.Management.ManagementException。同樣技巧適用於其他 WMI 類別:
Win32_Service 的 StartService()、StopService()、ChangeStartMode()Win32_Process 的 Create()、Terminate()Win32_OperatingSystem 的 Reboot()、Shutdown()掌握 WMI 方法呼叫,讓 PowerShell 成為強大的系統自動化管理工具。