Dela via


Ansluta till WMI med VBScript

WMI-skript kan komprimera många av de steg som krävs i ett C++-program. De kan ansluta till WMI, inte bara via ett SWbemLocator--objekt, utan också via monikern "winmgmts:". En moniker är ett kort namn som letar upp ett namnområde, en klass eller en instans i WMI. Namnet "winmgmts:" är WMI-monikern som talar om för Windows-skriptvärden att använda WMI-objekten, ansluter till standardnamnområdet och hämtar ett SWbemServices-objekt. Annan anslutningsinformation, till exempel en personifieringsnivå eller en specifik klass eller instans, visas i strängen efter monikernamnet. Du kan använda monikers i anrop som antingen skapar eller hämtar WMI-objekt. Mer information finns i Att konstruera en Moniker-sträng.

Följande procedur beskriver hur du ansluter till WMI med hjälp av SWbemLocator.

Ansluta till WMI med SWbemLocator

  1. Hämta ett positionerarobjekt med ett anrop till CreateObject.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. Logga in på namnområdet med ett anrop till metoden ConnectServer.

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

    Om du inte anger en dator i anropet till ConnectServeransluter WMI till den lokala datorn. Om du inte anger ett namnområde ansluter WMI till det namnområde som anges i registernyckeln.

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

    Standardnamnområdet är \root\cimv2. Mer information om namnområden finns i Skapa hierarkier i WMI-.

  3. Ange personifieringsnivån med ett anrop till metoden SWbemServices.Security_.

    objService.Security_.ImpersonationLevel = 3 
    

    Mer information finns i Ange standardprocesssäkerhetsnivå med VBScript-.

  4. Implementera syftet med skriptet.

    WMI exponerar en mängd olika skriptobjekt som använder för att komma åt och manipulera data i nätverket. Mer information finns i Manipulera klass- och instansinformation och Skript-API för 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
    

Följande procedur beskriver hur du ansluter till WMI och hämtar ett objekt med hjälp av en moniker.

Ansluta till WMI och hämta ett objekt med hjälp av en moniker-

  1. Anropa GetObject- med en moniker i inmatningsparametern.

    '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")
    

    Moiniker innehåller ett antal element som du kan använda för att ansluta till WMI:

    • "winmgmts:" säger till WSH att använda skript-API-objekt . I det här exemplet vet WSH att den ska returnera en SWbemObject som beskriver den första Win32_scheduledJob i systemet. Andra möjliga objekt att returnera är ett SWbemCollection- eller ett SWbemServices--objekt, beroende på vad monikern beskrev.

    • Du kan också ange säkerhetsnivåerna för anslutningen. Observera dock att du inte kan ange namn- och lösenordsinformation i en moniker. Mer information finns i Skydda skriptklienter.

    • Du kan också definiera sökvägen till WMI-objektet. Detta omfattar antingen den lokala datorn eller fjärrdatorn, namnområdet och namnet på klassen. Mer information om hur du använder VBScript-GetObject- i WMI-skript finns i Skapa en instans och Hämta en WMI-instans.

  2. I stället för att hämta ett enskilt objekt eller en samling kan du också välja att hämta SWbemServices- -objekt (enligt beskrivningen i föregående exempel). Därefter kan du anropa ytterligare frågor för det returnerade objektet.

    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
    

    I föregående exempel är imitation, eller imitationnivå=3, standardnivån för processens säkerhet. I följande exempel är det inte nödvändigt att ange den här processsäkerhetsnivån om du inte behöver ändra processsäkerheten till delegera. Mer information finns i Ange standardprocesssäkerhetsnivå med VBScript-.

skript i WMI