Windows Management Instrumentation (WMI) 是內建於 Windows 系統的管理資料庫,提供統一介面查詢系統軟硬體資訊。涵蓋範圍極廣:
幾乎所有系統層面資訊皆可透過 WMI 存取。
Get-WmiObject -List -Namespace "root\CIMV2"

Get-WmiObject -Class Win32_Process -Namespace "root\CIMV2" | Get-Member

成員分為 Property(屬性) 與 Method(方法) 兩大類:
root\CIMV2 是預設命名空間,但系統可修改預設值
Get-WmiObject -List -Namespace "root\CIMV2" -ComputerName "目標電腦名稱"
Get-WmiObject -Class Win32_BIOS -Namespace "root\CIMV2"

Get-WmiObject -Class Win32_Service -Namespace "root\CIMV2" | Format-List *
Get-WmiObject -Class Win32_ComputerSystem | Format-List *
$name = "."
$items = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Namespace "root\CIMV2" -ComputerName $name | Where-Object { $_.IPEnabled -eq $true }
foreach ($obj in $items) {
Write-Host "DHCP Enabled: " $obj.DHCPEnabled
Write-Host "IP Address: " $obj.IPAddress
Write-Host "Subnet Mask: " $obj.IPSubnet
Write-Host "Gateway: " $obj.DefaultIPGateway
Write-Host "MAC Address: " $obj.MACAddress
}
$name = Read-Host "Enter Computer Name"
Write-Host "Computer: " $name
$items = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Namespace "root\CIMV2" -ComputerName $name | Where-Object { $_.IPEnabled -eq $true }
# 後續輸出同上
WMI 屬性回傳多種 .NET 型別,常見:
String、UInt32、Boolean、DateTime(需轉換)、String[] 陣列IPAddress)輸出時需迴圈或 -join 處理WMI 是 Windows 系統管理的核心資料來源,PowerShell 的 Get-WmiObject(或新版 Get-CimInstance)提供強大查詢能力。掌握命名空間、類別結構、遠端查詢與型別處理,即可建立完整的資產管理、監控與自動化腳本。