ローカル コンピューターからのデータの取得

Windows リモート管理とWS-Management プロトコルはリモート通信用に明示的に設計されていますが、ローカル コンピューターでセッションを確立することが最も簡単なケースです。 一部のスクリプトでは、ローカル コンピューターとリモート コンピューター上のデータへのアクセスが必要になる場合があります。

**WinRM バージョン 2.0: **

すべての操作はリモートと見なされ、操作を実行する前に WinRM サービスを開始する必要があります。 リモート宛先が指定されていない場合は、localhost が既定で使用され、すべての操作がローカル WinRM サービスに送信されます。 WinRM サービスの開始の詳細については、「 Windows リモート管理のインストールと構成」を参照してください。

ローカル操作に WinRM サービスを使用する場合は、次の要因を考慮する必要があります。

  • ローカル WinRM 構成は、管理者のみが読み取ることができます。
  • WMI 名前空間には、リモート有効化アクセス許可が設定されている必要があります。 詳細については、「 リモート WMI 接続のセキュリティ保護」を参照してください。
  • WinRM リスナー が作成されていない場合、WinRM サービスはポート 47001 でローカル要求をリッスンします。

すべての WinRM スクリプトは、 Session オブジェクトを作成して、コンピューターへのセッションまたは接続を確立することによって開始する必要があります。 セッションが作成されたら、Session.Enumerate や Session.Invoke などの Session オブジェクト メソッドを使用してデータを取得したり、メソッドを実行したりできます。

セッションの作成は、Windows Management Instrumentation (WMI) 名前空間への接続と多少似ています。 セッションは基本的に、 SOAP メッセージとWS-Management プロトコルを使用してデータを送受信できるレイヤーです。 詳細については、「 WS-Management Protocol」を参照してください。

WSMan.CreateSession メソッドを呼び出して Session オブジェクトを作成すると、ローカル WinRM に接続するセッションが開始されます。

WSMan セッションを作成してデータを取得するには

  1. WSMan オブジェクトを作成します。

    Set objWsman = CreateObject("Wsman.Automation")
    
  2. WSMan.CreateSession メソッドを呼び出してセッションを作成します。 このセッションはログオン ユーザー名とパスワードで実行され、ローカル WinRM を介してデータを取得できます。

    Set objSession = objWsman.CreateSession()
    
  3. 管理するリソースまたはデータを取得するリソースを識別するリソースURI を作成します。 URI の書式設定の詳細については、「 リソース URI」を参照してください。 このリソース URI は、WMI Win32_Service クラス (Winmgmt サービス) の特定のインスタンスに対するものです。 詳細については、「 Windows リモート管理と WMI」を参照してください。

    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
    
  4. リソース URI を使用してデータを取得または列挙する Session メソッドを呼び出します。 詳細については、「 WinRM スクリプト API」を参照してください。

    strResponse = objSession.Get(strResource)
    Wscript.Echo strResponse
    
  5. 別のコンピューターからデータを取得または管理したり、さまざまな認証方法を使用したりするには、「 リモート コンピューターからデータを取得する」を参照してください。

次の VBScript コード例は、"Winmgmt" という名前の WMI Win32_Service の特定のインスタンスを取得する完全なスクリプトを示しています。

Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession()
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
strResponse = objSession.Get(strResource)
Wscript.Echo strResponse

次の VBScript コード例は、データ変換を含む完全なスクリプトを示しています。 詳細については、「 WinRM スクリプトからの XML 出力の表示」を参照してください。

Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession()
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
strResponse = objSession.Get(strResource)
Set xmlFile = CreateObject("MSXml.DOMDocument")
Set xslFile = CreateObject("MSXml.DOMDocument")
xmlFile.LoadXml(strResponse)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)

Windows リモート管理について

Windows リモート管理の使用

Windows リモート管理リファレンス