Delen via


Gegevens ophalen van een externe computer

U kunt gegevens verkrijgen of resources beheren op zowel externe als lokale computers. Verbinding maken met een externe computer in een Windows Remote Management-script is vergelijkbaar met het maken van een lokale verbinding. WMI-exemplaargegevens zijn beschikbaar en als de externe computer BMC-hardware heeft die kan communiceren met behulp van het WS-Management protocol, is IPMI- gegevens (Intelligent Platform Management Interface) ook beschikbaar. Zie Windows Remote Management en WMI en Remote Hardware Managementvoor meer informatie.

Mogelijk moet u een ConnectionOptions--object maken om informatie op te geven over het type verificatie dat is aangevraagd voor de aanmelding.

Als het account op de externe computer dezelfde gebruikersnaam en hetzelfde wachtwoord voor aanmelding heeft, is de enige informatie die u nodig hebt het transport, de domeinnaam en de computernaam. Vanwege gebruikersaccountbeheer (UAC)moet het externe account een domeinaccount zijn en lid zijn van de beheerdersgroep van de externe computer. Als het account een lokaal computerlid is van de groep Administrators, staat UAC geen toegang toe tot de WinRM-service. Als u toegang wilt krijgen tot een externe WinRM-service in een werkgroep, moet UAC-filtering voor lokale accounts worden uitgeschakeld door de volgende DWORD-registervermelding te maken en de waarde ervan in te stellen op 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.

Verbinding maken met een externe computer met behulp van uw gebruikersnaam en wachtwoord voor aanmelding

  1. Geef de doelcomputer op met een volledig gekwalificeerde domeinnaam of een IP-adres en wijs deze toe aan een constante. Als er een IPv6-adres is opgegeven, moet het adres tussen vierkante haken worden geplaatst.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Maak een WSMan--object.

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. Maak de sessie, geef het transport, HTTP of HTTPS op en voeg deze samen met de constante die de doelcomputer vertegenwoordigt.

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

In het volgende voorbeeld van VBScript-code ziet u het volledige script. Het script bevat een subroutine om de gegevens te transformeren van onbewerkte XML naar leesbare vorm. Zie XML-uitvoer van WinRM-scripts weergevenvoor meer informatie.

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

Verbinding maken met een externe computer met behulp van een ander account

  1. Geef de doelcomputer op met een volledig gekwalificeerde domeinnaam of een IP-adres en wijs deze toe aan een constante. Als er een IPv6-adres is opgegeven, moet het adres tussen vierkante haken worden geplaatst.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Maak een WSMan--object.

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. Roep de methode WSMan.CreateConnectionOptions aan om een ConnectionOptions--object te maken. Het account op de externe computer moet lid zijn van de groep administrators van de lokale computer. Opmerking: Sla wachtwoorden niet op in tekst zonder opmaak in scripts.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "<username>"
    objConnectionOptions.Password = "<password>"
    
  4. Geef in de aanroep WSman.CreateSession de juiste sessieverbindingsvlagken op in de vlaggen parameter. Zie Sessieconstantenvoor meer informatie. Geef de doelcomputer op met een volledig gekwalificeerde computernaam of een IP-adres en het transport( http of https). Met dit script wordt Kerberos--verificatie van de externe WinRM-service aangevraagd.

    In tegenstelling tot WMI-scripts kunt u verschillende verificatiemethoden gebruiken in WinRM-scripts. Zie verificatie voor externe verbindingenvoor meer informatie.

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. Nadat het sessieobject beschikbaar is, kunt u een van de Sessie objectmethoden aanroepen om gegevens voor een resource te verkrijgen. U kunt gegevens ophalen voor elke resource die beschikbaar is op de computer waarop de sessie wordt uitgevoerd. Zie Gegevens ophalen van de lokale computervoor meer informatie.

In het volgende voorbeeld van VBScript-code ziet u het volledige script. Het script bevat een subroutine om de gegevens te transformeren van onbewerkte XML naar leesbare vorm. Zie XML-uitvoer van WinRM-scripts weergevenvoor meer informatie. Met het script wordt Kerberos-verificatie opgegeven, maar als de externe computer zich in een werkgroep bevindt in plaats van een domein, wordt er een fout gegenereerd door Kerberos op te geven.

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

Over Windows Remote Management

Windows Remote Management gebruiken

Referentie voor Windows Remote Management