Obtention de données à partir d’un ordinateur distant
Vous pouvez obtenir des données ou gérer des ressources sur des ordinateurs distants ainsi que sur l’ordinateur local. La connexion à un ordinateur distant dans un script de gestion à distance Windows est très similaire à l’établissement d’une connexion locale. WMI instance données sont disponibles et, si l’ordinateur distant dispose d’un matériel BMC capable de communiquer à l’aide du protocole WS-Management, les données IPMI (Intelligent Platform Management Interface) sont également disponibles. Pour plus d’informations, consultez Gestion à distance Windows et WMI et Gestion matérielle à distance.
Vous devrez peut-être créer un objet ConnectionOptions pour spécifier des informations sur le type d’authentification demandé pour l’ouverture de session.
Si le compte sur l’ordinateur distant a les mêmes nom d’utilisateur et mot de passe d’ouverture de session, les seules informations supplémentaires dont vous avez besoin sont le transport, le nom de domaine et le nom de l’ordinateur. En raison du contrôle de compte d’utilisateur (UAC), le compte distant doit être un compte de domaine et un membre du groupe Administrateurs d’ordinateurs distants. Si le compte est un ordinateur local membre du groupe Administrateurs, l’UAC n’autorise pas l’accès au service WinRM. Pour accéder à un service WinRM distant dans un groupe de travail, le filtrage UAC pour les comptes locaux doit être désactivé en créant l’entrée de Registre DWORD suivante et en définissant sa valeur sur 1 : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.
Pour vous connecter à un ordinateur distant à l’aide de votre nom d’utilisateur et de votre mot de passe de connexion
Spécifiez l’ordinateur cible avec un nom de domaine complet ou une adresse IP et affectez-la à une constante. Si une adresse IPv6 est spécifiée, l’adresse doit être placée entre crochets.
Const RemoteComputer = "ComputerName.domain.com"
Créez un objet WSMan .
Set objWsman = CreateObject("WSMan.Automation")
Créez la session, en spécifiant le transport HTTP ou HTTPS et en le concaténant avec la constante représentant l’ordinateur cible.
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
L’exemple de code VBScript suivant montre le script complet. Le script comprend une sous-routine permettant de transformer les données du XML brut en forme lisible par l’homme. Pour plus d’informations, consultez Affichage de la sortie XML à partir de scripts WinRM.
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("WSMan.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml.DOMDocument")
Set xslFile = CreateObject("MSXml.DOMDocument")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Pour se connecter à un ordinateur distant à l’aide d’un autre compte
Spécifiez l’ordinateur cible avec un nom de domaine complet ou une adresse IP et affectez-la à une constante. Si une adresse IPv6 est spécifiée, l’adresse doit être placée entre crochets.
Const RemoteComputer = "ComputerName.domain.com"
Créez un objet WSMan .
Set objWsman = CreateObject("Wsman.Automation")
Appelez la méthode WSMan.CreateConnectionOptions pour créer un objet ConnectionOptions . Le compte sur l’ordinateur distant doit être membre du groupe Administrateurs de l’ordinateur local.
Set objConnectionOptions = objWsman.CreateConnectionOptions objConnectionOptions.UserName = "Username" objConnectionOptions.Password = "Password"
Dans l’appel WSman.CreateSession , spécifiez les indicateurs de connexion de session appropriés dans le paramètre flags . Pour plus d’informations, consultez Constantes de session. Spécifiez l’ordinateur cible avec un nom d’ordinateur complet ou une adresse IP et le transport (http ou https). Ce script demande l’authentification Kerberos à partir du service WinRM distant.
Contrairement aux scripts WMI, vous pouvez utiliser plusieurs méthodes d’authentification dans les scripts WinRM. Pour plus d’informations, consultez Authentification pour les connexions à distance.
iFlags = objWsman.SessionFlagUseKerberos Or _ objWsman.SessionFlagCredUserNamePassword Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _ iFlags, objConnectionOptions)
Une fois l’objet de session disponible, vous pouvez appeler l’une des méthodes d’objet Session pour obtenir des données pour une ressource. Vous pouvez obtenir des données pour n’importe quelle ressource disponible sur l’ordinateur sur lequel la session s’exécute. Pour plus d’informations, consultez Obtention de données à partir de l’ordinateur local.
L’exemple de code VBScript suivant montre le script complet. Le script comprend une sous-routine permettant de transformer les données du XML brut en forme lisible par l’homme. Pour plus d’informations, consultez Affichage de la sortie XML à partir de scripts WinRM. Le script spécifie l’authentification Kerberos, mais si l’ordinateur distant se trouve dans un groupe de travail plutôt que dans un domaine, la spécification kerberos génère une erreur.
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("Wsman.Automation")
Set objConnectionOptions = objWsman.CreateConnectionOptions
objConnectionOptions.UserName = "Username"
objConnectionOptions.Password = "Password"
iFlags = objWsman.SessionFlagUseKerberos Or _
objWsman.SessionFlagCredUserNamePassword
Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
iFlags, objConnectionOptions)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Rubriques connexes