Delen via


Verbinding maken met WMI met VBScript

WMI-scripts kunnen veel van de benodigde stappen in een C++-programma verkorten. Ze kunnen verbinding maken met WMI, niet alleen via een SWbemLocator object, maar ook via de moniker "winmgmts:". Een moniker is een korte naam waarmee een naamruimte, klasse of exemplaar in WMI wordt gevonden. De naam 'winmgmts:' is de WMI-moniker die aangeeft dat de Windows Script Host de WMI-objecten gebruikt, verbinding maakt met de standaardnaamruimte en een SWbemServices--object verkrijgt. Andere verbindingsgegevens, zoals een imitatieniveau of een specifieke klasse of instantie, worden weergegeven in de tekenreeks na de naam van de moniker. U kunt monikers gebruiken bij het aanmaken of ophalen van WMI-objecten. Zie Het construeren van een Moniker-tekenreeksvoor meer informatie.

In de volgende procedure wordt beschreven hoe u verbinding maakt met WMI met behulp van SWbemLocator-.

Verbinding maken met WMI met behulp van SWbemLocator

  1. Een locatorobject ophalen met een aanroep naar CreateObject.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. Meld u aan bij de naamruimte met behulp van een aanroep naar de methode ConnectServer.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    

    Als u geen computer opgeeft in de aanroep naar ConnectServer, maakt WMI verbinding met de lokale computer. Als u geen naamruimte opgeeft, maakt WMI verbinding met de naamruimte die is opgegeven in de registersleutel.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Default Namespace

    De standaardnaamruimte is \root\cimv2. Zie Hiërarchieën maken binnen WMI-voor meer informatie over naamruimten.

  3. Stel het imitatieniveau in met een aanroep naar de methode SWbemServices.Security_.

    objService.Security_.ImpersonationLevel = 3 
    

    Zie Het standaardbeveiligingsniveau voor procesbeveiliging instellen met behulp van VBScript-voor meer informatie.

  4. Implementeer het doel van uw script.

    WMI maakt verschillende scriptobjecten beschikbaar die gebruikmaken van toegang tot en manipulatie van gegevens in uw netwerk. Voor meer informatie, zie Informatie over klasse- en instantiegegevens en Scripting-API voor WMI.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    objService.Security_.ImpersonationLevel = 3
    Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob")
    i=0
    For each Job in Jobs
        i = i+1   
        WScript.Echo Job.JobId & "  " & Job.Command & VBNewLine
    Next
    If i = 0 Then
        WScript.Echo "No Jobs Scheduled with the AT command were found"
    End If
    

In de volgende procedure wordt beschreven hoe u verbinding maakt met WMI en een object ophaalt met behulp van een moniker.

Verbinding maken met WMI en een object ophalen met behulp van een moniker-

  1. Roep GetObject- aan met een moniker in de invoerparameter.

    'the simple version
    Set MyObject = GetObject("winMgmts::Win32_scheduledJob")
    
    'Or the more complex version
    strComputer = "."
    Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
    

    De moiniker bevat een aantal elementen die u kunt gebruiken om verbinding te maken met WMI:

    • Met "winmgmts:" geef je aan WSH om Scripting API-objectente gebruiken. In dit specifieke voorbeeld weet de WSH dat het een SWbemObject moet retourneren dat de eerste Win32_scheduledJob op het systeem beschrijft. Andere mogelijke objecten die moeten worden geretourneerd, zijn een SWbemCollection of een SWbemServices object, afhankelijk van wat de moniker heeft beschreven.

    • U kunt eventueel de beveiligingsniveaus voor de verbinding instellen. U kunt echter geen naam- en wachtwoordgegevens instellen in een moniker. Voor meer informatie, zie Scripting Clients beveiligen.

    • U kunt desgewenst het pad naar het WMI-object definiëren. Dit omvat de lokale of externe computer, de naamruimte en de naam van de klasse. Voor meer informatie over het gebruik van de VBScript-GetObject- in WMI-scripts, zie Een exemplaar maken en een WMI-exemplaar ophalen.

  2. In plaats van één item of verzameling op te halen, kunt u er ook voor kiezen om het SWbemServices-object op te halen (zoals beschreven in het vorige voorbeeld). Daarna kunt u extra query's aanroepen op het geretourneerde object.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
    For Each objJob in colScheduledJobs
        Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine
    Next
    

    In het vorige voorbeeld is imitatie of imitationLevel=3 het standaard beveiligingsniveau voor processen. In het volgende voorbeeld is het niet nodig om dit procesbeveiligingsniveau op te geven, tenzij u de procesbeveiliging moet wijzigen in gedelegeerde. Zie Het standaardbeveiligingsniveau voor procesbeveiliging instellen met behulp van VBScript-voor meer informatie.

Scripts schrijven in WMI