Skriptning i Windows Remote Management
API:et för -skript i WinRM och det tillhörande COM-API:et för C++ är utformade för att noggrant återspegla driften av WS-Management-protokollet.
WinRM-skript-API:et i Windows Remote Management stöder alla WS-Management protokollåtgärder utom en. Det tillåter inte prenumerationer på händelser. Om du vill prenumerera på händelser från BMC-systemhändelseloggen måste du använda kommandoradsverktygen Wecutil eller Wevtutil. Mer information finns i Händelser.
WinRM-skript-API:et anropas av Winrm.vbs, ett kommandoradsverktyg som är skrivet i Visual Basic Scripting Edition (VBScript). Winrm.vbs innehåller exempel på hur du använder WinRM-skript-API:et.
Använda WSman jämfört med att använda WMI-skript
WMI ansluter till fjärrdatorer via DCOM, vilket kräver konfigurationen som beskrivs i Ansluta till WMI på en fjärrdator. WinRM använder inte DCOM för att ansluta till en fjärrdator. I stället skickar WS-Management-protokollet SOAP-meddelanden och tjänsten använder en enda port för HTTP och en port för HTTPS-transport.
Till skillnad från kommandoradsverktyget winrm måste skript tillhandahålla den XML som krävs för att skicka till WS-Management protokollmeddelanden. De måste också tillhandahålla URI:er. Mer information finns i Resurs-URI:er och Windows Remote Management och WMI.
WMI-skript-API:et fungerar med objekt, till exempel instanser av Win32_LogicalDisk, som representerar resurser på en dator. Den här WMI-klassen definieras i MOF-filer (Managed Object Format) filer som lagras i binär form på WMI-lagringsplatsen. I WMI returnerar en Get-åtgärd för en enskild resurs eller en fråga för flera instanser WMI-objekt.
Ett WinRM-skript returnerar inte objekt, utan snarare strömmar av XML-text. Mer information finns i Windows Remote Management och WMI.
Visa XML-utdata från WinRM-skript
WinRM-skript-API:et hämtar och tar emot XML-strängar som beskriver resurser. Den resulterande XML-koden är i form av en textström och kräver att en XML-transformering visas på något annat sätt.
Följande WinRM-skript genererar rå XML-utdata.
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")
Följande textblock visar XML-utdata från WinRM-skriptet.
<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>
Skripten kan använda en XML-transformering för att göra utdata mer läsbara. Mer information finns i Visa XML-utdata från WinRM-skript.
Följande version av skriptet formaterar XML till skrivbara utdata för människor.
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 )
XSL-transformen skapar följande utdata.
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-skriptet och Winrm.cmd-utdata
Utdata från ett WinRM-skript kodas i Unicode. Om du skapar en FileSystemObject och skriver en fil från skriptet är den resulterande filen Unicode. Men om du omdirigerar utdata till en fil är kodningen ANSI. Om du omdirigerar utdata till en XML-fil och det finns Unicode-tecken i utdata blir XML-koden ogiltig. Tänk på att kommandoradsverktyget Winrm matar ut ANSI.
Relaterade ämnen