Condividi tramite


Scripting in Gestione remota Windows

L'API scripting in WinRM e l'API COM associata per C++ sono progettate per riflettere strettamente le operazioni del protocollo WS-Management.

L'API di scripting WinRM in Gestione remota Windows supporta tutte le operazioni del protocollo di WS-Management tranne una. Non consente alle sottoscrizioni di eventi. Per sottoscrivere gli eventi dal registro eventi di sistema BMC, è necessario usare gli strumenti da riga di comando Wecutil o Wevtutil. Per altre informazioni, vedere Eventi.

L'API di scripting WinRM viene chiamata da Winrm.vbs, uno strumento da riga di comando, scritto in Visual Basic Scripting Edition (VBScript). Winrm.vbs fornisce esempi di come usare l'API di scripting WinRM.

Uso di WSman rispetto all'uso di script WMI

WMI si connette ai computer remoti tramite DCOM, che richiede la configurazione descritta in Connessione a WMI in un computer remoto. WinRM non usa DCOM per connettersi a un computer remoto. Il protocollo WS-Management invia invece messaggi SOAP e il servizio usa una singola porta per HTTP e una porta per il trasporto HTTPS.

A differenza dello strumento da riga di comando winrm , gli script devono fornire il codice XML necessario per passare ai messaggi di protocollo WS-Management. Devono inoltre fornire URI. Per altre informazioni, vedere URI delle risorse e Gestione remota Windows e WMI.

L'API scripting WMI funziona con oggetti, ad esempio istanze di Win32_LogicalDisk, che rappresentano le risorse in un computer. Questa classe WMI è definita nei file MOF (Managed Object Format), archiviati in formato binario nel repository WMI. In WMI un'operazione Get per una singola risorsa o una query per più istanze restituisce oggetti WMI.

Uno script WinRM non restituisce oggetti, ma piuttosto flussi di testo XML. Per altre informazioni, vedere Gestione remota Windows e WMI.

Visualizzazione dell'output XML dagli script WinRM

L'API di scripting WinRM ottiene e riceve stringhe XML che descrivono le risorse. Il codice XML risultante è sotto forma di flusso di testo e richiede una trasformazione XML da visualizzare in un altro modo.

Lo script WinRM seguente produce output XML non elaborato.

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")

Il blocco di testo seguente mostra l'output XML dallo script WinRM.

<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>

Gli script possono usare una trasformazione XML per rendere l'output più leggibile. Per altre informazioni, vedere Visualizzazione dell'output XML da script WinRM.

La versione seguente dello script formatta il codice XML nell'output leggibile.

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 )

La trasformazione XSL crea l'output seguente.

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

Output winRM e Winrm.cmd

L'output di uno script WinRM viene codificato in Unicode. Se si crea un FileSystemObject e si scrive un file dallo script, il file risultante è Unicode. Tuttavia, se si reindirizza l'output a un file, la codifica è ANSI. Se si reindirizza l'output a un file XML e sono presenti caratteri Unicode nell'output, il codice XML non sarà valido. Tenere presente che lo strumento da riga di comando Winrm restituisce ANSI.

Informazioni sulla gestione remota di Windows

Uso di Gestione remota di Windows

MSXSL

Informazioni di riferimento DOM