主題
    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

 




目錄