Partager via


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 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. Les données d’instance WMI sont disponibles et, si l’ordinateur distant a du matériel BMC qui peut 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 de 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 le même 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 de l’ordinateur distant. Si le compte est un compte local du groupe Administrateurs, alors 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 mot de passe d’ouverture de session

  1. Spécifiez l’ordinateur cible avec un nom de domaine complet ou une adresse IP et attribuez-le à une constante. Si une adresse IPv6 est spécifiée, l’adresse doit être placée entre crochets.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Créez un objet WSMan .

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. Créez la session en précisant le mode de transport, soit HTTP soit HTTPS, et en la concaténant avec la constante qui représente l’ordinateur cible.

    
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    

L’exemple de code VBScript suivant montre le script complet. Le script inclut une sous-routine pour transformer les données de XML brut en formulaire 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 vous connecter à un ordinateur distant à l’aide d’un autre compte

  1. Spécifiez l’ordinateur cible avec un nom de domaine complet ou une adresse IP et attribuez-le à une constante. Si une adresse IPv6 est spécifiée, l’adresse doit être placée entre crochets.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Créez un objet WSMan .

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. Appelez la méthode WSMan.CreateConnectionOptions pour créer un objet ConnectionOptions . Le compte sur l’ordinateur distant doit être membre du groupe des administrateurs de l'ordinateur local. Remarque : ne stockez pas les mots de passe en texte brut dans les scripts.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "<username>"
    objConnectionOptions.Password = "<password>"
    
  4. Sur l’appel WSman.CreateSession, spécifiez les drapeaux 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 auprès 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)
    
  5. 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 est en cours d’exécution. 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 inclut une sous-routine pour transformer les données de XML brut en formulaire 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 qu’un domaine, la spécification de 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

à propos des de gestion à distance Windows

à l’aide du de gestion à distance Windows

informations de référence sur la gestion à distance Windows