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. Wenn der Remotecomputer über BMC-Hardware verfügt, die mithilfe des WS-Management-Protokolls kommunizieren kann, sind auch DIE DATEN (Intelligent Platform Management Interface, IPMI) 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 für die Anmeldung angeforderten Authentifizierung anzugeben.

Wenn das Konto auf dem Remotecomputer über denselben Anmeldebenutzernamen und dasselbe Kennwort verfügt, benötigen Sie nur den Transport, den Domänennamen und den Computernamen. Aufgrund der Benutzerkontensteuerung (User Account Control, UAC)muss das Remotekonto ein Domänenkonto und ein Mitglied der Gruppe "Remotecomputeradministratoren" sein. Wenn das Konto ein Mitglied des lokalen Computers der Gruppe Administratoren ist, lässt die UAC keinen Zugriff auf den WinRM-Dienst zu. Für den Zugriff auf einen WinRM-Remotedienst in einer Arbeitsgruppe muss die UAC-Filterung für lokale Konten deaktiviert werden, indem der folgende DWORD-Registrierungseintrag erstellt und dessen Wert auf 1: [ HKEY _ LOCAL MACHINE SOFTWARE Microsoft Windows _ \ \ \ \ CurrentVersion Policies System \ \ ] LocalAccountTokenFilterPolicy .

So stellen Sie eine Verbindung mit einem Remotecomputer mit ihrem Benutzernamen und Kennwort für die Anmeldung

  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 wird, 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, um die Daten von unformatiertem XML in eine lesbare Form zu transformieren. Weitere Informationen finden Sie unter Anzeigen der XML-Ausgabe von 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 herstellen

  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 wird, 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 Administratorgruppe des lokalen Computers sein.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "Username"
    objConnectionOptions.Password = "Password"
    
  4. Geben Sie im WSman.CreateSession-Aufruf die entsprechenden Sitzungsverbindungsflags im flags-Parameter an. Weitere Informationen finden Sie unter Sitzungskonst konstanten. Geben Sie den Zielcomputer mit einem vollqualifizierten Computernamen oder einer IP-Adresse und dem Transport an – http oder https. Dieses Skript fordert die Kerberos-Authentifizierung vom WinRM-Remotedienst an.

    Im Gegensatz zu WMI-Skripts können Sie mehrere 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 zu erhalten. Sie können Daten für jede Ressource erhalten, 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, um die Daten von unformatiertem XML in eine lesbare Form zu transformieren. Weitere Informationen finden Sie unter Anzeigen der XML-Ausgabe von WinRM-Skripts. Das Skript gibt die Kerberos-Authentifizierung an. Wenn sich der Remotecomputer jedoch 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 Windows Remoteverwaltung

Verwenden Windows Remoteverwaltung

Windows Remoteverwaltungsreferenz