Get-WmiObject:依命名空間與類別傳回物件 (最常用)。Invoke-WmiMethod:呼叫 WMI 方法 (常用於靜態方法)。Register-WmiEvent:訂閱 WMI 事件。Remove-WmiObject:刪除現有 WMI 類別實例 (不刪除類別本身)。Set-WmiInstance:建立或更新 WMI 類別實例 (會寫入 WMI 儲存庫,謹慎使用)。# 本機列出 SecurityCenter 命名空間所有類別
Get-WmiObject -Namespace Root\SecurityCenter -List
# 遠端主機 core 列出同樣內容
Get-WmiObject -Namespace Root\SecurityCenter -List -Computer core
# 使用萬用字元過濾
Get-WmiObject -Namespace Root\SecurityCenter -List *firewall*
# 遠端主機列出 Hyper-V 虛擬化類別
Get-WmiObject -Namespace Root\Virtualization -List -Computer core
提示:亦可用 WMI Explorer 或 Microsoft PowerShell Scriptomatic 等工具輔助查找。
# 作業系統資訊
Get-WmiObject -Class Win32_OperatingSystem
# 電腦系統資訊
Get-WmiObject -Class Win32_ComputerSystem
# 邏輯磁碟資訊
Get-WmiObject -Class Win32_LogicalDisk
# 網路介面卡設定 (含 IP、MAC、閘道、DNS)
Get-WmiObject -Class Win32_NetworkAdapterConfiguration
function Get-IP {
[CmdletBinding()]
Param(
[Alias('dnsHostName')]
[Parameter(ValueFromPipelineByPropertyName=$true, ValueFromPipeline=$true)]
[string]$ComputerName = $Env:COMPUTERNAME
)
Process {
$NICs = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled='True'" -ComputerName $ComputerName
foreach ($Nic in $NICs) {
$myobj = @{
Name = $Nic.Description
MacAddress = $Nic.MACAddress
IP4 = $Nic.IPAddress | Where-Object { $_ -match '\d+\.\d+\.\d+\.\d+' }
IP6 = $Nic.IPAddress | Where-Object { $_ -match '::' }
IP4Subnet = $Nic.IPSubnet | Where-Object { $_ -match '\d+\.\d+\.\d+\.\d+' }
DefaultGWY = $Nic.DefaultIPGateway | Select-Object -First 1
DNSServer = $Nic.DNSServerSearchOrder
WINSPrimary = $Nic.WINSPrimaryServer
WINSSecondary = $Nic.WINSSecondaryServer
}
$obj = New-Object PSObject -Property $myobj
$obj.PSTypeNames.Clear()
$obj.PSTypeNames.Add('BSonPosh.IPInfo')
$obj
}
}
}
此腳本取代 ipconfig,輸出結構化物件便於後續處理。更多 WMI 術語與 Win32 類別列表請參考 Microsoft 官方文件。
Windows Management Instrumentation (WMI) 定義非專屬、環境獨立的標準,讓管理應用程式共享管理資訊,是改變日常運維效率的利器。