Freigeben über


Abrufen von Daten von einem Remotecomputer

Sie können Daten abrufen oder Ressourcen auf Remotecomputern sowie auf dem lokalen Computer verwalten. Das Herstellen einer Verbindung mit einem Remotecomputer in einem Windows-Remoteverwaltungsskript ähnelt dem Herstellen einer lokalen Verbindung. WMI-Instanzdaten sind verfügbar, und wenn der Remotecomputer über BMC-Hardware verfügt, die über das WS-Management-Protokoll kommunizieren kann, sind auch IPMI-Daten (Intelligent Platform Management Interface) verfügbar. Weitere Informationen finden Sie unter Windows-Remoteverwaltung und WMI - und Remotehardwareverwaltung.

Möglicherweise müssen Sie ein ConnectionOptions-Objekt erstellen, um Informationen zum Typ der Authentifizierung anzugeben, die für die Anmeldung angefordert wurde.

Wenn das Konto auf dem Remotecomputer denselben Anmeldenamen und dasselbe Kennwort hat, sind die einzigen zusätzlichen Informationen, die Sie benötigen, der Transport, der Domänenname und der Computername. Aufgrund der Benutzerkontensteuerung (User Account Control, UAC) muss das Remotekonto ein Domänenkonto und ein Mitglied der Gruppe "Administratoren" des Remotecomputers sein. Wenn es sich bei dem Konto um ein lokales Computermitglied der Gruppe "Administratoren" handelt, lässt UAC keinen Zugriff auf den WinRM-Dienst zu. Um auf einen WinRM-Remotedienst in einer Arbeitsgruppe zuzugreifen, muss die UAC-Filterung für lokale Konten deaktiviert werden, indem der folgende DWORD-Registrierungseintrag erstellt und der Wert auf 1 festgelegt wird: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.

So stellen Sie eine Verbindung mit einem Remotecomputer mit Ihrem Anmeldebenutzernamen und Kennwort her

  1. Geben Sie den Zielcomputer mit einem vollqualifizierten Domänennamen oder einer IP-Adresse an, und weisen Sie diesen einer Konstante zu. Wenn eine IPv6-Adresse angegeben ist, muss die Adresse in eckige Klammern eingeschlossen werden.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Erstellen Sie ein WSMan-Objekt .

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. Erstellen Sie die Sitzung, geben Sie den Transport, HTTP oder HTTPS an, und verketten Sie sie mit der Konstante, die den Zielcomputer darstellt.

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

Das folgende VBScript-Codebeispiel zeigt das vollständige Skript. Das Skript enthält eine Unterroutine zum Transformieren der Daten aus rohem XML in lesbare Formulare. Weitere Informationen finden Sie unter Anzeigen der XML-Ausgabe aus WinRM-Skripts.

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

So stellen Sie mithilfe eines anderen Kontos eine Verbindung mit einem Remotecomputer her

  1. Geben Sie den Zielcomputer mit einem vollqualifizierten Domänennamen oder einer IP-Adresse an, und weisen Sie diesen einer Konstante zu. Wenn eine IPv6-Adresse angegeben ist, muss die Adresse in eckige Klammern eingeschlossen werden.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Erstellen Sie ein WSMan-Objekt .

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. Rufen Sie die WSMan.CreateConnectionOptions-Methode auf, um ein ConnectionOptions-Objekt zu erstellen. Das Konto auf dem Remotecomputer muss Mitglied der Lokalen Computeradministratorgruppe sein. Hinweis: Speichern Sie keine Passwörter im Klartext in Skripten.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "<username>"
    objConnectionOptions.Password = "<password>"
    
  4. Geben Sie im WSman.CreateSession-Aufruf die entsprechenden Sitzungsverbindungskennzeichnungen im Flags-Parameter an. Weitere Informationen finden Sie unter Sitzungskonstanten. Geben Sie den Zielcomputer mit einem vollqualifizierten Computernamen oder einer IP-Adresse und dem Transport -http oder https an. Dieses Skript fordert die Kerberos-Authentifizierung vom WinRM-Remotedienst an.

    Im Gegensatz zu WMI-Skripts können Sie verschiedene Authentifizierungsmethoden in WinRM-Skripts verwenden. Weitere Informationen finden Sie unter Authentifizierung für Remoteverbindungen.

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. Nachdem das Sitzungsobjekt verfügbar ist, können Sie eine der Session-Objektmethoden aufrufen, um Daten für eine Ressource abzurufen. Sie können Daten für jede Ressource abrufen, die auf dem Computer verfügbar ist, auf dem die Sitzung ausgeführt wird. Weitere Informationen finden Sie unter Abrufen von Daten vom lokalen Computer.

Das folgende VBScript-Codebeispiel zeigt das vollständige Skript. Das Skript enthält eine Unterroutine zum Transformieren der Daten aus rohem XML in lesbare Formulare. Weitere Informationen finden Sie unter Anzeigen der XML-Ausgabe aus WinRM-Skripts. Das Skript gibt die Kerberos-Authentifizierung an, aber wenn sich der Remotecomputer in einer Arbeitsgruppe und nicht in einer Domäne befindet, generiert die Angabe von Kerberos einen Fehler.

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

Informationen zur Windows-Remoteverwaltung

Verwenden der Windows-Remoteverwaltung

Windows-Remoteverwaltungsreferenz