scripts dans Windows Remote Management
L' API de script dans WinRM et l’API COM associée pour C++ sont conçues pour refléter fidèlement les opérations du protocole WS-Management.
l’API de script WinRM dans Windows Remote Management prend en charge toutes les opérations de protocole WS-Management sauf une. Elle n’autorise pas les abonnements aux événements. Pour vous abonner à des é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 de script WinRM est appelée par Winrm.vbs, un outil en ligne de commande, qui est écrit dans 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 de ligne de commande WinRM , les scripts doivent fournir le XML requis pour passer aux messages du protocole WS-Management. Ils doivent également fournir des URI. pour plus d’informations, consultez uri de ressource et Windows Remote Management et WMI.
L’API de script WMI fonctionne avec des objets, tels que des instances de _ disque logique Win32, qui représentent des ressources sur un ordinateur. Cette classe WMI est définie dans les fichiers format MOF (MOF) , qui sont stockés au format binaire dans le référentiel WMI. Dans WMI, une opération d’extraction 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 Windows Remote Management et WMI.
Affichage de la sortie XML des scripts WinRM
L’API de script WinRM obtient et reçoit des chaînes XML qui décrivent les ressources. Le code XML résultant se présente sous la forme d’un flux de texte et requiert l’affichage d’une transformation XML d’une autre façon.
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 illustre 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 des scripts WinRM.
La version suivante du script met en forme le 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
Sortie de script WinRM et WinRM. cmd
La sortie d’un script WinRM est encodée au format Unicode. Si vous créez un FileSystemObject et que vous é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 que la sortie contient des caractères Unicode, le code XML n’est pas valide. N’oubliez pas que l’outil en ligne de commande WinRM génère une sortie ANSI.