about_WMI_Cmdlets

適用於: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

在此插入簡介。

主題

about_WMI_cmdlets

簡短描述

提供關於 Windows Management Instrumentation (WMI) 和 Windows PowerShell® 的背景資訊。

詳細描述

本主題提供 WMI 技術、Windows PowerShell 的WMI Cmdlet、WMI 架構遠端處理、WMI 加速器和 WMI 疑難排解的相關資訊。本主題也提供連結讓您能了解 WMI 的詳細資訊。

關於 WMI

Windows Management Instrumentation (WMI) 是 Web 架構企業管理 (WBEM) 的 Microsoft 實作,也就是想要開發用於存取企業環境中管理資訊的標準技術的業界標準。WMI 使用通用訊息模型 (CIM) 業界標準來代表系統、應用程式、網路、裝置和其他受管理的元件。CIM 是由分散式管理任務推動小組 (DMTF) 開發與維護。您可以使用 WMI 來管理本機和遠端電腦。例如,您可以使用 WMI 來執行下列動作:

在遠端電腦上啟動處理程序。

從遠端重新啟動電腦。

取得本機或遠端電腦上安裝的應用程式清單。

查詢本機或遠端電腦上的 Windows 事件記錄檔。

適用於 WINDOWS POWERSHELL 的 WMI CMDLET

Windows PowerShell 會透過 Windows PowerShell 中預設可用的一組 Cmdlet 來實作 WMI 功能。您可以使用這些 Cmdlet,來完成在本機和遠端電腦上管理所需的端對端工作。

包含下列 WMI Cmdlet。

      Cmdlet                 Description
      ------------------     ----------------------------------------------
      Get-WmiObject          Gets instances of WMI classes or information 
                             about the available classes.

      Invoke-WmiMethod       Calls WMI methods.

      Register-WmiEvent      Subscribes to a WMI event.

      Remove-WmiObject       Deletes WMI classes and instances.

      Set-WmiInstance        Creates or modifies instances of WMI classes.

命令範例

下列命令會顯示本機電腦的 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 的分散式元件物件模型 (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 連接到它。您可能會收到下列錯誤訊息:

          "Remote server machine does not exist or is unavailable"

如果您收到這個錯誤訊息,請確認電腦已在線上。請嘗試對遠端電腦執行 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 要求,且您會收到下列錯誤訊息:

          "Remote server machine does not exist or is unavailable"

WMI 的詳細資訊

如需 WMI 的詳細資訊,請參閱 MSDN (Microsoft Developer Network) Library 中的下列主題:

<關於 WMI:

https://go.microsoft.com/fwlink/?LinkId=142212

<WMI 疑難排解>

https://go.microsoft.com/fwlink/?LinkId=142213

另請參閱 Microsoft TechNet 指令碼中心的<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