首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

PowerShell 深度探索(十四):呼叫 WMI 物件方法實戰

     編輯:關於.NET

前言

上一篇介紹了 WMI 物件的屬性查詢,本篇將深入探討如何呼叫 WMI 類別的方法來執行實際管理操作。許多 WMI 類別同時擁有屬性與方法,善用方法可完成設定變更、服務控制等行政任務。

查詢可用方法與屬性

以 Win32_NetworkAdapterConfiguration 為例,查詢其方法:

Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Methods | Format-List

常見方法包含:

  • EnableDHCP、DisableIPSec、EnableIPSec
  • SetDNSServerSearchOrder、SetGateways、SetWINSServer
  • ReleaseDHCPLease、RenewDHCPLease

查詢屬性:

Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType Property | Format-List

關鍵屬性 IPEnabled(布林值)可用來過濾實體啟用的網路卡,排除虛擬或斷開的介面卡。

實戰:啟用 DHCP 並設定 DNS

基本範例:啟用所有啟用介面卡的 DHCP

$Network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true }
foreach ($NIC in $Network) {
    $NIC.EnableDHCP()
}

此腳本先以 IPEnabled 過濾,再對每張網卡呼叫 EnableDHCP() 方法。

進階:同時設定 DNS 伺服器搜尋順序

$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 文件確認參數詳情。

最佳實務建議

  1. 先查詢再操作:使用 Where-Object 過濾目標物件,避免誤操作虛擬介面卡。
  2. 檢查回傳值:WMI 方法通常回傳 ManagementBaseObject,包含 ReturnValue 屬性(0 表成功),建議捕捉並驗證。
  3. 權限需求:修改網路設定需系統管理員權限,請以提升權限執行 PowerShell。
  4. 錯誤處理:善用 try/catch 捕捉 System.Management.ManagementException。

延伸應用

同樣技巧適用於其他 WMI 類別:

  • Win32_Service 的 StartService()、StopService()、ChangeStartMode()
  • Win32_Process 的 Create()、Terminate()
  • Win32_OperatingSystem 的 Reboot()、Shutdown()

掌握 WMI 方法呼叫,讓 PowerShell 成為強大的系統自動化管理工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved