Delen via


Extern verbinding maken met WMI met VBScript

U kunt een externe verbinding met WMI maken met VBScript door een verbindingsobject te maken. Dit object bevat de naam van de computer, de WMI-naamruimte waarmee u verbinding wilt maken, evenals alle relevante referenties en verificatieniveaus.

Verbinding maken met een extern systeem met behulp van VBScript-

  1. Geef de verbindingsgegevens op, zoals de naam van de externe computer, referenties en het verificatieniveau voor de verbinding.

    Als u verbinding maakt met een externe computer met dezelfde referenties (domein en gebruikersnaam) waarmee u bent aangemeld, kunt u de verbindingsgegevens opgeven in een GetObjectmoniker, zoals beschreven in het volgende codevoorbeeld.

    strComputer = "Computer_B"
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\Root\CIMv2")
    

    Over het algemeen moet u de WMI-naamruimte opgeven waarmee verbinding moet worden gemaakt op de externe computer. Dit komt doordat het mogelijk is dat de standaardnaamruimte niet hetzelfde is op verschillende computers. Als u de naamruimte opgeeft, zorgt u ervoor dat u verbinding maakt met dezelfde naamruimte op alle computers.

    Zie voor meer informatie over VBScript-constanten en scriptreeksen voor het gebruik van de moniker-verbinding het standaardniveau voor procesbeveiliging instellen met behulp van VBScript-.

  2. Als u verbinding maakt met een externe computer in een ander domein of een andere gebruikersnaam en een ander wachtwoord gebruikt, moet u de methode SWbemLocator.ConnectServer gebruiken.

    Net als bij een moniker gebruikt u ConnectServer om de referenties, het verificatieniveau en de naamruimte voor de externe verbinding op te geven. In het volgende codevoorbeeld wordt beschreven hoe u ConnectServer gebruikt om toegang te krijgen tot een externe computer met behulp van een beheerdersaccount en wachtwoord.

    strComputer = "Computer_B"
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
                                                         "Root\CIMv2", _
                                                         "fabrikam\administrator", _
                                                         "password")
    
  3. Wanneer u de functie ConnectServer gebruikt voor externe verbindingen, stelt u imitatie en verificatie in voor het beveiligingsobject dat is verkregen door een aanroep naar SWbemServices.Security. U kunt de opsomming WbemImpersonationLevelEnum gebruiken om imitatieniveau op te geven.

    In het volgende codevoorbeeld wordt het imitatieniveau voor het vorige VBScript-codevoorbeeld ingesteld.

    objSWbemServices.Security_.ImpersonationLevel = 3
    

    Houd er rekening mee dat voor sommige verbindingen een specifiek verificatieniveau is vereist. Zie Client Application Process Security instellen en scriptclients beveiligenvoor meer informatie.

    U moet met name het verificatieniveau instellen op RPC_C_AUTHN_LEVEL_PKT_PRIVACY of 6 als voor de naamruimte waarmee u verbinding maakt op de externe computer een versleutelde verbinding is vereist voordat er gegevens worden geretourneerd. U kunt dit verificatieniveau ook gebruiken, zelfs als de naamruimte deze niet nodig heeft. Dit zorgt ervoor dat gegevens worden versleuteld wanneer deze het netwerk kruisen. Als u probeert een lager verificatieniveau in te stellen dan is toegestaan, wordt er een bericht met geweigerde toegang geretourneerd. Zie Een versleutelde verbinding met een naamruimtevereisen voor meer informatie.

Zodra u verbinding hebt gemaakt, kunt u toegang blijven krijgen tot WMI-gegevens. Zie WMI-taken voor scripts en toepassingenvoor meer informatie.

Voorbeelden

Zie de sectie Voorbeelden in de SWbemLocator.ConnectServer referentiepagina voor een groter VBScript-voorbeeld.

In het volgende VOORBEELD van VBScript-code wordt verbinding gemaakt met een groep externe computers in hetzelfde domein door een matrix met namen van externe computers te maken en vervolgens namen weer te geven van de Plug en Play-apparaten (exemplaren van Win32_PnPEntity) op elke computer. Als u het onderstaande script wilt uitvoeren, moet u een beheerder zijn op de externe computers. Houd er rekening mee dat de '\\' vereist is voordat door het script de naam van de externe computer wordt toegevoegd, volgend op de instelling van het imitatieniveau. Zie De locatie van een WMI-object beschrijvenvoor meer informatie over WMI-paden.

On Error Resume Next 
arrComputers = Array("Computer1","Computer2","Computer3")
For Each strComputer In arrComputers
    WScript.Echo
    WScript.Echo "===================================="
    WScript.Echo "Computer: "& strComputer
    WScript.Echo "===================================="

    Set objWMIService = GetObject("winmgmts:\\" & strComputer& "\Root\CIMv2") 
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity",,48) 
    For Each objItem in colItems 
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Win32_PnPEntity instance"
        Wscript.Echo "-----------------------------------"
        Wscript.Echo "Name: "& objItem.Name
        Wscript.Echo "Status: "& objItem.Status
    Next
Next

In het volgende VBScript-codevoorbeeld kunt u verbinding maken met een externe computer met behulp van verschillende referenties. Bijvoorbeeld een externe computer in een ander domein of verbinding maken met een externe computer waarvoor een andere gebruikersnaam en een ander wachtwoord is vereist. In dit geval gebruikt u de SWbemServices.ConnectServer verbinding.

' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName" 
strDomain = "DOMAIN" 
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine 
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
 
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
                                                     "Root\CIMv2", _
                                                     strUser, _
                                                     strPassword, _
                                                     "MS_409", _
                                                     "ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
    Wscript.Echo "Process Name: " & objProcess.Name 
Next

verbinding maken met WMI op een externe computer