Windows PowerShell 為命令列殼層與腳本環境,深度整合 .NET Framework,提供 5 大指令集簡化 WMI 存取。本文系統介紹 WMI 三大核心元素、PowerShell WMI 指令集、命名空間與類別列舉實戰技巧。
WMI 三大基礎元素
- Provider:授權存取管理物件、提供 WMI API
- Classes:描述物件屬性與方法的 WMI 陳述
- Namespace:類別的邏輯分組(預設
Root\CIMV2 含所有 Win32 類別)
PowerShell 5 大 WMI 指令集
| 指令 | 功能 |
Get-WmiObject | 依命名空間與類別傳回物件實例(最常用) |
Invoke-WmiMethod | 呼叫 WMI 方法(常用於靜態方法執行) |
Register-WmiEvent | 訂閱 WMI 事件 |
Remove-WmiObject | 刪除現有 WMI 類別實例(不刪除類別定義) |
Set-WmiInstance | 建立或更新 WMI 類別實例(會寫入儲存庫,謹慎使用) |
實戰:列舉命名空間與類別
# 本機列舉 SecurityCenter 類別
Get-WmiObject -Namespace Root\SecurityCenter -List
# 遠端主機 core 列舉
Get-WmiObject -Namespace Root\SecurityCenter -List -ComputerName core
# 萬用字元過濾(如防火牆相關)
Get-WmiObject -Namespace Root\SecurityCenter -List *firewall*
# 遠端列舉 Hyper-V 虛擬化類別
Get-WmiObject -Namespace Root\Virtualization -List -ComputerName core
探索根命名空間
$Root = "\\.\ROOT:__Namespace"
$WMIProv = New-Object System.Management.ManagementClass($Root)
$WMIProv.GetInstances() | Select-Object Name
(較複雜,平常較少用;可配合 WMI Explorer 或 Microsoft PowerShell Scriptomatic 等免費工具輔助。)
掌握 Get-WmiObject 核心用法與命名空間探索技巧,即可高效自動化系統管理與資訊蒐集任務。