次の方法で共有


Windows リモート管理と WMI

Windows リモート管理を使用すると、Windows Management Instrumentation (WMI および MI) によって公開されるデータを取得できます。 WinRM Scripting API を使用するスクリプトまたはアプリケーション、または Winrm コマンドライン ツールを使用して WMI データを取得できます。

WinRM は、埋め込みオブジェクトを含む、使い慣れた WMI クラスと操作のほとんどをサポートします。 WinRM は WMI を利用して、リソースに関するデータを収集したり、Windows ベースのオペレーティング システム上のリソースを管理したりできます。 つまり、既存の WMI クラスを使用して、企業内のディスク、ネットワーク アダプター、サービス、プロセスなどのオブジェクトに関するデータを取得できます。 また、標準の WMI IPMI プロバイダーから使用可能なハードウェア データにアクセスすることもできます。

WMI リソースの識別

WMI クラスは、WinRM および WS-Management プロトコル (サービスやディスクなどのマネージド エンティティの種類) で リソース として参照できます。

WMI クラスまたはメソッドは、WS-Management プロトコルを使用する場合と同様に、URIによって識別されます。 URI は、WMI リソース (クラス)、WMI アクション (メソッド)、またはネットワーク経由で送信メッセージクラスの特定のインスタンスを識別できます。 詳細については、「リソース URI」を参照してください。

WMI クラスの URI プレフィックスの構築

URI プレフィックスには、固定部分と WMI 名前空間が含まれています。 たとえば、プレフィックスの固定部分を含む Windows Server の URI プレフィックスは、http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>です。 これにより、任意の WMI 名前空間に対して URI プレフィックスを生成できます。 たとえば、root\default WMI 名前空間にアクセスするには、次の URI プレフィックスを使用します:http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/

管理用の WMI クラスの大部分は、root\cimv2 名前空間にあります。 root\cimv2 名前空間のクラスとインスタンスにアクセスするには、URI プレフィックス (http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/) を使用します。 詳細については、「リソース URI」を参照してください。

WMI クラスの完全な URI の生成

Winrm コマンドライン ツールまたはスクリプトに指定する URI は、プレフィックスとリソース指定で構成されます。

次の手順では、WMI クラスを取得するか、列挙操作で使用するリソース URI を生成する方法について説明します。

WMI クラスのリソース URI を生成するには

  1. WS-Management プロトコル スキーマを使用する必要があることを示すプレフィックスから始めます。

    https://schemas.microsoft.com/wbem/wsman/1

    WMI クラスのリソース URI プレフィックスは常に同じです。 詳細については、「URI プレフィックスの」を参照してください。

  2. プレフィックスに WMI 名前空間を追加します。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. クラス名を追加します。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. プロパティの値を設定したり、特定のメソッドを呼び出したりするには、クラスに必要なキー値または値を追加します。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt

    キー値を空白のままにした場合、元のプロパティ値は変更されません。

    手記

    キー値を空白のままにすると、プロパティ値が NULL 設定されます。

     

WinRM を使用した WMI リソースの検索

WMI データは、コマンド ライン ツール、Winrm 、または WinRM Scripting APIを使用する Visual Basic スクリプトを使用して取得できます。 リソースの検索に WMI パス は使用しません。 代わりに、WMI 名前空間と階層を URIに変換します。

WMI クラスの WinRM URI には、URI プレフィックス とアクセスするクラスの 2 つの部分が含まれています。

たとえば、Session.Enumerate メソッドに次の URI を指定して、コンピューター上のすべてのサービスを一覧表示できます。 URI プレフィックスが http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/され、クラスが Win32_Service

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

WMI で、リソースまたはクラスのすべてのインスタンスのデータをいくつかの方法で一覧表示します。

  • そのリソースのすべてのインスタンスのクエリ。

    Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")

  • SWbemServices.InstancesOf または SWbemObject.Instances_の呼び出し。

    Set colServices = InstancesOf("Win32_Service")

WinRM では、リソースのすべてのインスタンスを一覧表示する方法が 1 つあります。Session.Enumerate

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

WMI リソースの特定のインスタンスの検索

WMI では、キー プロパティの値を指定するか、プロパティ値のリストに一致するインスタンスに対してクエリを実行することで、クラスの特定のインスタンスを指定できます。 キー プロパティには、WMI キー修飾子があります。

クラスの特定のインスタンスは、いくつかの方法で取得できます。

  • Session.Enumerate を呼び出し、フィルター方言 パラメーターを使用してクエリを作成します。

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • SWbemServices.Getの呼び出し。 Session.Getでは、疑問符 (?) の前に 1 つ以上の特定のキー値を指定する必要があります。

    特定のインスタンスの URI の形式は http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Valueです。

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    WMI クラスには複数のキーが含まれる場合があります。 キーの名前と値のペアは、"+" 記号で区切ります。 その場合、形式は http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2です。

    シングルトン WMI オブジェクトを取得するための WinRM 構文は、WMI とは異なります。 シングルトンは、1 つのインスタンスのみが許可されるように定義された WMI クラスです。 WIN32_CURRENTTIME または Win32_WMISetting は、WMI シングルトン クラスの例です。

    シングルトンの WMI 構文を次の VBScript コード例に示します。

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    次の例は、"@" を使用しない WinRM シングルトン構文を示しています。

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • ResourceLocator または IWSManResourceLocatorオブジェクトにセレクター追加します。

    次の VBScript コード例は、セレクターを使用して Win32_Processorの特定のインスタンスを取得する方法を示しています。

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

Windows リモート管理 について

URI プレフィックス

リソース URI

Windows リモート管理 での スクリプト