次の方法で共有


about_WMI_Cmdlets

トピック
    about_WMI_cmdlets
    
簡易説明
    Windows Management Instrumentation (WMI) および Windows PowerShell
    の背景情報を提供します。
           
詳細説明
    ここでは、WMI 技術、Windows PowerShell の WMI コマンドレット、WMI ベースの
    リモート処理、WMI のアクセラレータ、および WMI のトラブルシューティングに
    ついて説明します。また、WMI の詳細情報へのリンクを紹介します。

                 
  WMI について

      Windows Management Instrumentation (WMI) は、Web-Based Enterprise
      Management (WBEM) を Microsoft が実装したものです。WBEM とは、企業環境で
      管理情報にアクセスするための標準技術を確立する業界の取り組みの 1 つです。
      WMI では、Common Information Model (CIM) 業界規格を使用して、システム、
      アプリケーション、ネットワーク、デバイスなどのマネージ コンポーネントを
      表現します。CIM は、分散管理タスク フォース (DMTF) によって開発され、
      管理されています。WMI を使用すると、ローカル コンピューターとリモート コン
      ピューターの両方を管理できます。たとえば、WMI を使用して、以下の操作を行う
      ことができます。

          -- リモート コンピューターでプロセスを開始する。

          -- コンピューターをリモートから再起動する。

          -- ローカル コンピューターまたはリモート コンピューターにインストー
          ルされているアプリケーションの一覧を取得する。

          -- ローカル コンピューターまたはリモート コンピューター上の Windows 
          イベントログに対してクエリを実行する。

 
  Windows PowerShell の WMI コマンドレット

      Windows PowerShell では、Windows PowerShell で既定で利用できる一連のコマ
      ンドレットを通じて WMI 機能が実装されます。これらのコマンドレットを使用
      して、ローカル コンピューターまたはリモート コンピューターの管理に必要な
      すべてのタスクを完了させることができます。
 
      WMI コマンドレットには、次のものがあります。

      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 の分散コンポーネント オブジェクト モデル (DCOM) を使用しま
      す。DCOM 接続を許可するように一部のシステムを構成する必要がある場合があ
      ります。ファイアウォールの設定や DCOM のアクセス許可のロック ダウンに
      よって、リモートからシステムを管理する WMI の機能がブロックされることが
      あります。
   

  WMI の型アクセラレータ

      Windows PowerShell には、WMI の型アクセラレータが用意されています。これら
      の WMI の型アクセラレータ (ショートカット) を使用すると、型アクセラレータ
      以外の方法を使用する場合よりも直接的に WMI オブジェクトにアクセスできます。

      WMI では、次の型アクセラレータがサポートされています。

          [WMISEARCHER] - WMI オブジェクトを検索するためのショートカットです。

          [WMICLASS] - クラスの静的プロパティおよびメソッドにアクセスするため
          のショートカットです。

          [WMI] - クラスの 1 つのインスタンスを取得するためのショートカットです。

      [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 クラスへのローカル WIM パスまたは絶対 WIM 
      パスを受け取り、そのクラスにバインドされたオブジェクトを返します。

      次にその例を示します。

      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 インスタンスへのローカル WIM パスまたは絶対 
      WIM パスを受け取り、そのインスタンスにバインドされたオブジェクトを返し
      ます。

      次にその例を示します。

      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 スクリプト センターの「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