about_WMI_Cmdlets
主題
about_WMI_cmdlets
簡短描述
提供有關 Windows Management Instrumentation (WMI) 和 Windows PowerShell
的背景相關資訊。
完整描述
本主題提供有關 WMI 技術、Windows PowerShell 的 WMI Cmdlet、WMI 架構的遠端
功能、WMI 加速器以及 WMI 疑難排解的相關資訊。本主題也提供 WMI 其他詳細資訊
的連結。
關於 WMI
Windows Management Instrumentation (WMI) 是 Microsoft 在 Web 架構企業管理
(Web-Based Enterprise Management,WBEM) 方面的實作,這是一種開發標準技術
的業界措施,用於存取企業環境中的管理資訊。WMI 使用通用訊息模型 (CIM) 業界
標準來代表系統、應用程式、網路、裝置和其他受管理元件,CIM 由分散式管理任
務推動小組 (Distributed Management Task Force,DMTF)開發與維護。您可以使用
WMI 管理本機及遠端電腦。例如,可以使用 WMI 執行下列動作:
-- 啟動遠端電腦上的處理序。
-- 從遠端重新啟動電腦。
-- 取得本機或遠端電腦上安裝的應用程式清單。
-- 查詢本機或遠端電腦上的 Windows 事件記錄檔。
Windows PowerShell 的 WMI Cmdlet
Windows PowerShell 透過一組預設可用於 Windows PowerShell 的 Cmdlet 來
實作 WMI 功能。您可以使用這些 Cmdlet,完成管理本機和遠端電腦所需的端對端
工作。
包括下列 WMI Cmdlet。
Cmdlet描述
------------------ -------------------------------------
Get-WmiObject 取得 WMI 類別的執行個體,或可用類別的相關資訊。
Invoke-WmiMethod 呼叫 WMI 方法。
Register-WmiEvent 訂閱 WMI 事件。
Remove-WmiObject 刪除 WMI 類別與執行個體。
Set-WmiInstance 建立或修改 WMI 類別的執行個體。
樣本命令
下列命令會顯示本機電腦的 BIOS 資訊。
C:\PS> get-wmiobject win32_bios | format-list *
下列命令會顯示三部遠端電腦上 WinRM 服務的相關資訊。
C:\PS> get-wmiobject -query "select * from win32_service where
name='WinRM'" -computername server01, server01, server03
下列命令比較複雜,會結束一個程式的所有執行個體。
C:\PS> notepad.exe
C:\PS> $np = get-wmiobject -query "select * from win32_process
where name='notepad.exe'"
C:\PS> $np | remove-wmiobject
WMI 架構的遠端功能
透過 WMI 管理本機系統的功能固然好用,但 WMI 之所以成為強大的系統管理工
具,它的遠端功能才是主要原因。WMI 採用 Microsoft 的分散式元件物件模式
(Distributed Component Object Model,DCOM) 來連接和管理系統。您可能需
要設定某些系統以允許 DCOM 連線,因為防火牆設定和遭鎖定的 DCOM 權限會封
鎖 WMI 遠端管理系統的功能。
WMI 型別加速器
Windows PowerShell 包含 WMI 型別加速器。這些 WMI 型別加速器 (捷徑) 比起非
型別加速器,可以更直接地存取 WMI 物件。
WMI 支援下列型別加速器:
[WMISEARCHER] - 搜尋 WMI 物件的捷徑。
[WMICLASS] - 存取類別的靜態屬性方法的捷徑。
[WMI] - 取得類別的單一執行個體的捷徑。
[WMISEARCHER] 是 ManagementObjectSearcher 的型別加速器,
可使用字串建構函式來建立搜尋器,讓您接著用來執行 GET()。
例如:
PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount
> 1000'
PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto
handlecount __PATH name
----------- ------ ----
1105 \\SERVER01\root\cimv2:Win32_Process.Handle="3724" powershell...
1132 \\SERVER01\root\cimv2:Win32_Process.Handle="1388" winlogon.exe
1495 \\SERVER01\root\cimv2:Win32_Process.Handle="2852" iexplore.exe
1699 \\SERVER01\root\cimv2:Win32_Process.Handle="1204" OUTLOOK.EXE
1719 \\SERVER01\root\cimv2:Win32_Process.Handle="1912" iexplore.exe
2579 \\SERVER01\root\cimv2:Win32_Process.Handle="1768" svchost.exe
[WMICLASS] 是 ManagementClass 的型別加速器,它具有字串建構函式,可使用
WMI 類別的本機或絕對 WMI 路徑並傳回繫結至該類別的物件。
例如:
PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
PS> $c |fl *
Name : Win32_Process
__GENUS : 1
__CLASS : Win32_Process
__SUPERCLASS : CIM_Process
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_Process
__PROPERTY_COUNT : 45
__DERIVATION : {CIM_Process, CIM_LogicalElement,
CIM_ManagedSystemElement}
__SERVER : SERVER01
__NAMESPACE : ROOT\cimv2
__PATH : \\SERVER01\ROOT\cimv2:Win32_Process
[WMI] 是 ManagementObject 的型別加速器,它具有字串建構函式,可使用 WMI
執行個體的本機或絕對 WMI 路徑並傳回繫結至該執行個體的物件。
例如:
PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"'
PS> $p.Name
OUTLOOK.EXE
WMI 疑難排解
當您嘗試連線至遠端電腦時,以下為可能遇到的常見問題。
問題 1:遠端電腦不在線上。
如果電腦離線,將無法使用 WMI 進行連接。您可能會收到下列錯誤訊息:
「遠端伺服器電腦不存在或無法使用」
如果收到這則錯誤訊息,請確該認電腦是否在線上。
請嘗試 Ping 該遠端電腦。
問題 2:您沒有遠端電腦的本機系統管理員權限。
若想從遠端使用 WMI,您必須具有遠端電腦的本機系統管理員權限。如果您沒有此
權限,存取該電腦會遭拒。
若要確認命名空間安全性:
a. 按一下 [開始]、以滑鼠右鍵按一下 [電腦],然後按一下 [管理]。
b. 在 [電腦管理] 中展開 [服務與應用程式],以滑鼠右鍵按一下 [WMI 控
制],然後按一下 [內容]。
c. 在 [WMI 控制 - 內容] 對話方塊中,按一下 [安全性] 索引標籤。
問題 3:防火牆封鎖對遠端電腦的存取。
WMI 使用 DCOM (分散式 COM) 和 RPC (遠端程序呼叫) 通訊協定來周遊網路。許
多防火牆預設都會封鎖
DCOM 和 RPC 流量。如果您的防火牆會封鎖這些通訊協定,連線就會失敗。例如,
Microsoft Windows XP Service Pack 2 的 Windows 防火牆即設定為自動封鎖所
有未經同意的網路流量,包括 DCOM 和 WMI。Windows 防火牆的預設設定會拒絕
內送 WMI 要求,因此會收到下列錯誤訊息:
「遠端伺服器電腦不存在或無法使用」
WMI 的其他相關資訊
如需 WMI 的詳細資訊,請參閱 MSDN (Microsoft Developer Network) 文件庫
中的下列主題:
<關於 WMI>(英文)
https://go.microsoft.com/fwlink/?LinkId=142212
<WMI 疑難排解>(英文)
https://go.microsoft.com/fwlink/?LinkId=142213
另外,也可以參閱 Microsoft TechNet Script Center 中的<Windows Management
Instrumentation 的秘密 - 疑難排解和秘訣>(英文):
https://go.microsoft.com/fwlink/?LinkId=142214
請參閱
線上版本:https://go.microsoft.com/fwlink/?LinkId=142219
Get-WmiObject
Invoke-WmiMethod
Register-WmiEvent
Remove-WmiObject
Set-WmiInstance