Création de scripts dans La gestion à distance Windows

L’API Scripting dans WinRM et l’API COM pour C++ associées sont conçues pour refléter étroitement les opérations du protocole WS-Management.

L’API Scripting WinRM dans Gestion à distance Windows prend en charge toutes les opérations de protocole WS-Management, à l’exception d’une seule. Il n’autorise pas les abonnements aux événements. Pour vous abonner aux événements à partir du journal des événements système BMC, vous devez utiliser les outils en ligne de commande Wecutil ou Wevtutil. Pour plus d’informations, consultez Événements.

L’API Scripting WinRM est appelée par Winrm.vbs, un outil en ligne de commande, écrit en Visual Basic Scripting Edition (VBScript). Winrm.vbs fournit des exemples d’utilisation de l’API de script WinRM.

Utilisation de WSman par rapport à l’utilisation de scripts WMI

WMI se connecte à des ordinateurs distants via DCOM, ce qui nécessite la configuration décrite dans Connexion à WMI sur un ordinateur distant. WinRM n’utilise pas DCOM pour se connecter à un ordinateur distant. Au lieu de cela, le protocole WS-Management envoie des messages SOAP et le service utilise un port unique pour HTTP et un port pour le transport HTTPS.

Contrairement à l’outil en ligne de commande winrm , les scripts doivent fournir le code XML nécessaire pour passer aux messages de protocole WS-Management. Ils doivent également fournir des URI. Pour plus d’informations, consultez URI de ressources et Gestion à distance Windows et WMI.

L’API de script WMI fonctionne avec des objets, tels que des instances de Win32_LogicalDisk, qui représentent des ressources sur un ordinateur. Cette classe WMI est définie dans les fichiers MOF (Managed Object Format), qui sont stockés au format binaire dans le référentiel WMI. Dans WMI, une opération Get pour une seule ressource ou une requête pour plusieurs instances retourne des objets WMI.

Un script WinRM ne retourne pas d’objets, mais plutôt des flux de texte XML. Pour plus d’informations, consultez Gestion à distance Windows et WMI.

Affichage de la sortie XML à partir de scripts WinRM

L’API Scripting WinRM obtient et reçoit des chaînes XML qui décrivent des ressources. Le code XML résultant se présente sous la forme d’un flux de texte et nécessite l’affichage d’une transformation XML d’une autre manière.

Le script WinRM suivant produit une sortie XML brute.

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

Le bloc de texte suivant montre la sortie XML du 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>

Vos scripts peuvent utiliser une transformation XML pour rendre cette sortie plus lisible. Pour plus d’informations, consultez Affichage de la sortie XML à partir de scripts WinRM.

La version suivante du script met en forme le code XML en sortie lisible par l’utilisateur.

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 transformation XSL crée la sortie suivante.

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

Script WinRM et sortie Winrm.cmd

La sortie d’un script WinRM est encodée en Unicode. Si vous créez un FileSystemObject et écrivez un fichier à partir du script, le fichier résultant est Unicode. Toutefois, si vous redirigez la sortie vers un fichier, l’encodage est ANSI. Si vous redirigez la sortie vers un fichier XML et qu’il y a des caractères Unicode dans la sortie, le code XML n’est pas valide. N’oubliez pas que l’outil en ligne de commande Winrm génère ANSI.

À propos de la gestion à distance Windows

Utilisation de la gestion à distance Windows

MSXSL

Référence DOM