Consultando instâncias específicas de um recurso
A chamada para Session.Enumerate tem parâmetros opcionais que restringem a enumeração em uma consulta. Como a API de Script do WinRM e a API do WinRM C++ são estreitamente modeladas no protocolo subjacente WS-Management, os parâmetros usam a mesma terminologia para consultas que o protocolo —filtro e dialeto de filtro.
Você pode usar os parâmetros de filtro e dialeto de Session.Enumerate ou pode construir e fornecer um objeto ResourceLocator e o método AddSelector, mas não pode fazer os dois ao mesmo tempo.
Este procedimento executa uma consulta para adaptadores de rede que têm TCP/IP vinculado e habilitado. A consulta solicita todas as instâncias de Win32_NetworkAdapterConfiguration que têm a propriedade IpEnabled definida como True. Exceto pela adição do filtro e do dialeto , a consulta é tratada como uma enumeração simples.
Neste exemplo, o nome do recurso para a constante Resource é representado por um asterisco "*" porque o nome da classe, Win32_NetworkAdapterConfiguration, já está mencionado na cadeia de strFilter.
Para consultar instâncias específicas de um recurso
Para facilitar a leitura, defina URIs como constantes.
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"
Crie uma sessão.
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
Construa a cadeia de caracteres do filtro. A Gestão Remota do Windows suporta WQL como dialeto de filtro.
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
Defina todas as constantes de enumeração de necessárias no sinalizadores parâmetro.
Lembre-se de que, se os sinalizadores incluírem as constantes de enumeração WSManFlagHierarchyDeepBasePropsOnly ou WSManFlagHierarchyShallow, então, o serviço WinRM retornará o código de erro ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED.
Chame o método Session.Enumerate para . Esta chamada inicia uma enumeração. O método Session.Enumerate estabelece um contexto de enumeração de protocolo WS-Management, mantido no Enumerator objeto.
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
Chame o Enumerator.ReadItem método para obter o próximo item dos resultados. No protocolo WS-Management, isso corresponde à operação de extração. Use o Enumerator.AtEndOfStream método como um controle para saber quando parar a leitura.
While Not objResultSet.AtEndOfStream DisplayOutput(objResultSet.ReadItem) Wend
O exemplo de código VBScript a seguir mostra o script completo.
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
Tópicos relacionados