Delen via


Scripten in Windows Remote Management

De Scripting-API in WinRM en de bijbehorende COM-API voor C++ zijn ontworpen om de bewerkingen van het WS-Management-protocol nauw te weerspiegelen.

De WinRM Scripting-API in Windows Remote Management ondersteunt alle WS-Management protocolbewerkingen behalve één. Abonnementen op gebeurtenissen zijn niet toegestaan. Als u zich wilt abonneren op gebeurtenissen uit het BMC-systeemgebeurtenislogboek, moet u de opdrachtregelprogramma's Van Wecutil of Wevtutil gebruiken. Zie Gebeurtenissenvoor meer informatie.

De WinRM Scripting-API wordt aangeroepen door Winrm.vbs, een opdrachtregelprogramma dat is geschreven in Visual Basic Scripting Edition (VBScript). Winrm.vbs biedt voorbeelden van het gebruik van de WinRM Scripting-API.

WSman gebruiken in vergelijking met het gebruik van WMI-scripts

WMI maakt verbinding met externe computers via DCOM. Hiervoor is de configuratie vereist die wordt beschreven in Verbinding maken met WMI op een externe computer. WinRM maakt geen gebruik van DCOM om verbinding te maken met een externe computer. In plaats daarvan verzendt het WS-Management-protocol SOAP-berichten en gebruikt de service één poort voor HTTP en een poort voor HTTPS-transport.

In tegenstelling tot het winrm opdrachtregelprogramma, moeten scripts de vereiste XML-gegevens verstrekken om door te geven aan de WS-Management protocolberichten. Ze moeten ook URI's opgeven. Zie Resource-URI's en Windows Remote Management en WMIvoor meer informatie.

De WMI Scripting-API werkt met objecten, zoals exemplaren van Win32_LogicalDisk, die resources op een computer vertegenwoordigen. Deze WMI-klasse wordt gedefinieerd in MOF--bestanden (Managed Object Format), die zijn opgeslagen in binaire vorm in de WMI-opslagplaats. In WMI retourneert een get-bewerking voor één resource of een query voor meerdere exemplaren WMI-objecten.

Een WinRM-script retourneert geen objecten, maar eerder stromen XML-tekst. Zie Windows Remote Management en WMIvoor meer informatie.

XML-uitvoer van WinRM-scripts weergeven

De WinRM Scripting-API haalt XML-tekenreeksen op die resources beschrijven. De resulterende XML heeft de vorm van een tekststroom en vereist dat een XML-transformatie op een andere manier wordt weergegeven.

Het volgende WinRM-script produceert onbewerkte XML-uitvoer.

Set Wsman = CreateObject("Wsman.Automation")
Set xmlFile = CreateObject( "MSxml.DOMDocument")
Set Session = Wsman.CreateSession
Response = Session.Get("http://schemas.microsoft.com/wbem/wsman/" _
    & "1/wmi/root/cimv2/Win32_Service?Name=Spooler")
xmlFile.LoadXml(Response)
xmlFile.Save( "c:\RawOutput.xml")

In het volgende tekstblok ziet u de XML-uitvoer van het WinRM-script.

<p:Win32_Service xmlns:xsi="https://www.w3.org/2001/XMLSchema-
instance" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1
/wmi/root/cimv2/Win32_Service" xmlns:cim="https://schemas.dmtf
.org/wbem/wsman/1/base" cim:Class="Win32_Service"><p:AcceptP
ause>false</p:AcceptPause><p:AcceptStop>true</p:AcceptStop>
<p:Caption>Print Spooler</p:Caption><p:CheckPoint>0</p:CheckP
oint><p:CreationClassName>Win32_Service</p:CreationClassName>
<p:Description>Loads files to memory for later printing</p:De
scription><p:DesktopInteract>true</p:DesktopInteract><p:Displ
ayName>Print Spooler</p:DisplayName><p:ErrorControl>Normal</p
:ErrorControl><p:ExitCode>0</p:ExitCode><p:InstallDate xsi:ni
l="true"/><p:Name>spooler</p:Name><p:PathName>C:\Windows\Syst
em32\spoolsv.exe</p:PathName><p:ProcessId>1720</p:ProcessId><
p:ServiceSpecificExitCode>0</p:ServiceSpecificExitCode><p:Ser
viceType>Own Process</p:ServiceType><p:Started>true</p:Starte
d><p:StartMode>Auto</p:StartMode><p:StartName>LocalSystem</p:
StartName><p:State>Running</p:State><p:Status>OK</p:Status><p
:SystemCreationClassName>Win32_ComputerSystem</p:SystemCreati
onClassName><p:SystemName>wsplab6-4</p:SystemName><p:TagId>0<
/p:TagId><p:WaitHint>0</p:WaitHint><cim:Location xmlns:cim="h
ttp://schemas.dmtf.org/wbem/wsman/1/base" xmlns:a="https://sc
hemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="https://sche
mas.dmtf.org/wbem/wsman/1/wsman"><a:Address>https://schemas.xm
lsoap.org/ws/2004/08/addressing/role/anonymous</a:Address><a:
ReferenceParameters><w:ResourceURI>https://schemas.microsoft.c
om/wbem/wsman/1/wmi/root/cimv2/Win32_Service</w:ResourceURI><
w:SelectorSet><w:Selector Name="Name">spooler</w:Selector></w
:SelectorSet></a:ReferenceParameters></cim:Location></p:Win32
_Service>

Uw scripts kunnen een XML-transformatie gebruiken om deze uitvoer beter leesbaar te maken. Zie XML-uitvoer van WinRM-scripts weergevenvoor meer informatie.

Met de volgende versie van het script wordt de XML opgemaakt in uitvoer die door mensen kan worden gelezen.

Set Wsman = CreateObject("Wsman.Automation")
Set xmlFile = CreateObject( "MSXml.DOMDocument" )
Set xslFile = CreateObject( "MSXml.DOMDocument" )

Set Session = Wsman.CreateSession
Response = Session.Get("http://schemas.microsoft.com/wbem/wsman/" _
    & "1/wmi/root/cimv2/Win32_Service?Name=Spooler")
xmlFile.LoadXml(Response)
xslFile.Load( "WsmTxt.xsl" )
Wscript.Echo xmlFile.TransformNode( xslFile )

Met de XSL-transformatie wordt de volgende uitvoer gemaakt.

Win32_Service
    AcceptPause = false
    AcceptStop = true
    Caption = Print Spooler
    CheckPoint = 0
    CreationClassName = Win32_Service
    Description = Loads files to memory for later printing
    DesktopInteract = true
    DisplayName = Print Spooler
    ErrorControl = Normal
    ExitCode = 0
    InstallDate = null
    Name = Spooler
    PathName = C:\Windows\System32\spoolsv.exe
    ProcessId = 1720
    ServiceSpecificExitCode = 0
    ServiceType = Own Process
    Started = true
    StartMode = Auto
    StartName = LocalSystem
    State = Running
    Status = OK
    SystemCreationClassName = Win32_ComputerSystem
    SystemName = wsplab6-4
    TagId = 0
    WaitHint = 0

WinRM-script en Winrm.cmd-uitvoer

De uitvoer van een WinRM-script wordt gecodeerd in Unicode. Als u een FileSystemObject maakt en een bestand schrijft vanuit het script, is het resulterende bestand Unicode. Als u de uitvoer echter omleidt naar een bestand, is de codering ANSI. Als u de uitvoer omleidt naar een XML-bestand en er Unicode-tekens in de uitvoer staan, is de XML ongeldig. Houd er rekening mee dat het Winrm opdrachtregelprogramma ANSI uitvoert.

Over Windows Remote Management

Windows Remote Management gebruiken

MSXSL-

DOM-verwijzing