リソースの特定のインスタンスに対するクエリ
Session.Enumerate の呼び出しには、列挙をクエリに絞り込む省略可能なパラメーターがあります。 WinRM スクリプト API と WinRM C++ API は基になるWS-Management プロトコルで厳密にモデル化されているため、パラメーターはプロトコルと同じ用語 (フィルター言語とフィルター言語) を使用します。
Session.Enumerate のフィルターパラメーターと方言パラメーターを使用することも、ResourceLocator オブジェクトと AddSelector メソッドを構築して指定することもできますが、両方を実行することはできません。
この手順では、TCP/IP がバインドされ、有効になっているネットワーク アダプターのクエリを実行します。 このクエリは、IpEnabled プロパティが True に設定されているWin32_NetworkAdapterConfigurationのすべてのインスタンスを要求します。 フィルターと方言の追加を除き、クエリは単純な列挙のように処理されます。
この例では、クラス名 (Win32_NetworkAdapterConfiguration) が strFilter 文字列に既に記述されているため、Resource 定数のリソース名はアスタリスク "*" で表されます。
リソースの特定のインスタンスに対してクエリを実行するには
読みやすくするために、URI を定数として定義します。
Const RemoteComputer = "servername.domain.com" Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
セッションを作成します。
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
フィルター文字列を作成します。 Windows リモート管理では、フィルター言語として WQL がサポートされています。
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
flags パラメーターに必要な列挙定数を設定します。
フラグに 列挙定数WSManFlagHierarchyDeepBasePropsOnly または WSManFlagHierarchyShallow が含まれている場合、WinRM サービスはエラー コード ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTEDを返します。
Session.Enumerate メソッドを呼び出します。 この呼び出しによって列挙が開始されます。 Session.Enumerate メソッドは、Enumerator オブジェクトで維持されるWS-Managementプロトコル列挙コンテキストを確立します。
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
Enumerator.ReadItem メソッドを呼び出して、結果の次の項目を取得します。 WS-Management プロトコルでは、これはプル操作に対応します。 Enumerator.AtEndOfStream メソッドをコントロールとして使用して、読み取りを停止するタイミングを把握します。
While Not objResultSet.AtEndOfStream DisplayOutput(objResultSet.ReadItem) Wend
次の VBScript コード例は、完全なスクリプトを示しています。
Const RemoteComputer = "servername.domain.com"
Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
While Not objResultSet.AtEndOfStream
DisplayOutput(objResultSet.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示