Abrufen von Daten von einem Remotecomputer

Sie können Sowohl auf Remotecomputern als auch auf dem lokalen Computer Daten abrufen oder Ressourcen verwalten. Das Herstellen einer verbindung mit einem Remotecomputer in einem Windows-Remoteverwaltungsskript ähnelt dem Herstellen einer lokalen Verbindung. WMI-instance Daten 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 über den typ der für die Anmeldung angeforderten Authentifizierung anzugeben.

Wenn das Konto auf dem Remotecomputer über denselben Anmeldebenutzernamen und dasselbe Kennwort verfügt, 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 es sich bei dem Remotekonto um ein Domänenkonto und ein Mitglied der Gruppe Administratoren für Remotecomputer handeln. Wenn das Konto ein lokales Computermitglied der Gruppe Administratoren ist, lässt die UAC keinen Zugriff auf den WinRM-Dienst zu. Um auf einen WinRM-Remotedienst in einer Arbeitsgruppe zugreifen zu können, muss die UAC-Filterung für lokale Konten deaktiviert werden, indem der folgende DWORD-Registrierungseintrag erstellt und dessen Wert auf 1 festgelegt wird: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.

So stellen Sie mithilfe Ihres Anmeldebenutzernamens und Kennworts eine Verbindung mit einem Remotecomputer her

  1. Geben Sie den Zielcomputer mit einem vollqualifizierten Domänennamen oder einer IP-Adresse an, und weisen Sie diese einer Konstanten 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, indem Sie den Transport, HTTP oder HTTPS angeben und mit der Konstanten verketten, 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 unformatiertem XML in lesbare Form. 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 her

  1. Geben Sie den Zielcomputer mit einem vollqualifizierten Domänennamen oder einer IP-Adresse an, und weisen Sie diese einer Konstanten 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 Lokalen Computeradministratorgruppe 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 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 in WinRM-Skripts mehrere Authentifizierungsmethoden 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 jede 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 unformatiertem XML in lesbare Form. 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 zur Windows-Remoteverwaltung

Verwenden der Windows-Remoteverwaltung

Windows-Remoteverwaltungsreferenz