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

PowerShell 深度探索(十三):WMI 物件查詢與管理基礎

     編輯:關於.NET

什麼是 WMI?

Windows Management Instrumentation (WMI) 是內建於 Windows 系統的管理資料庫,提供統一介面查詢系統軟硬體資訊。涵蓋範圍極廣:

  • 電腦製造商、型號、序號
  • BIOS 版本資訊
  • 作業系統版本、安裝日期
  • CPU 型號、時脈、核心數
  • 記憶體總量、插槽詳情
  • 磁碟容量、分割區、檔案系統
  • 網路介面卡 MAC、IP、DHCP 狀態
  • 服務、進程、事件日誌等

幾乎所有系統層面資訊皆可透過 WMI 存取。

PowerShell 查詢 WMI 基礎指令

列出所有 WMI 類別

Get-WmiObject -List -Namespace "root\CIMV2"

WMI 類別列表

查詢特定類別成員

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

類別成員檢視

成員分為 Property(屬性) 與 Method(方法) 兩大類:

  • 屬性:可讀取數值,注意資料型別(String、UInt32、String[] 等)
  • 方法:可呼叫執行動作

命名空間與遠端查詢

為何指定 -Namespace?

  • root\CIMV2 是預設命名空間,但系統可修改預設值
  • 明確指定可確保查詢正確空間,避免存取被拒
  • 修改路徑:控制台 → 管理工具 → 電腦管理 → 服務與應用程式 → WMI 控制 → 屬性 → 進階

WMI 控制進階設定

遠端電腦查詢

Get-WmiObject -List -Namespace "root\CIMV2" -ComputerName "目標電腦名稱"

常用查詢範例

BIOS 資訊

Get-WmiObject -Class Win32_BIOS -Namespace "root\CIMV2"

BIOS 資訊輸出

服務清單

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)提供強大查詢能力。掌握命名空間、類別結構、遠端查詢與型別處理,即可建立完整的資產管理、監控與自動化腳本。

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