Číst v angličtině

Sdílet prostřednictvím


Připojení k rozhraní WMI pomocí jazyka VBScript

Skripty rozhraní WMI můžou kondenzovat mnoho kroků požadovaných v programu jazyka C++. Mohou se připojit k rozhraní WMI, nejen prostřednictvím SWbemLocator objektu, ale také prostřednictvím monikeru "winmgmts:". Moniker je krátký název, který identifikuje obor názvů, třídu nebo instanci ve službě WMI. Název "winmgmts:" je moniker služby WMI, který říká hostiteli skriptů systému Windows, aby používal objekty WMI, připojuje se k výchozímu oboru názvů a získává objekt SWbemServices. Další informace o připojení, například úroveň zosobnění nebo konkrétní třída či instance, se zobrazí v řetězci následujícím za názvem monikeru. Monikery můžete použít ve voláních, která objekty WMI buď vytvářejí, nebo získávají. Další informace naleznete v tématu vytvoření moniker string.

Následující postup popisuje, jak se připojit k rozhraní WMI pomocí SWbemLocator.

Připojení k rozhraní WMI pomocí nástroje SWbemLocator

  1. Získejte objekt lokátoru pomocí volání CreateObject.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. Přihlaste se k oboru názvů pomocí volání metody ConnectServer.

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

    Pokud nezadáte počítač ve volání ConnectServer, služba WMI se připojí k místnímu počítači. Pokud nezadáte obor názvů, služba WMI se připojí k oboru názvů zadanému v klíči registru.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Skriptování\Výchozí obor názvů

    Výchozí obor názvů je \root\cimv2. Další informace o oborech názvů naleznete v tématu Vytváření hierarchií v rámci rozhraní WMI.

  3. Nastavte úroveň zosobnění voláním metody SWbemServices.Security_.

    objService.Security_.ImpersonationLevel = 3 
    

    Další informace naleznete v tématu Nastavení výchozí úrovně zabezpečení procesu pomocí jazyka VBScript.

  4. Implementujte účel skriptu.

    Rozhraní WMI zveřejňuje různé skriptovací objekty, které slouží k přístupu k datům v síti a manipulaci s nimi. Další informace naleznete v tématu Manipulace s informacemi o třídě a instanci a skriptovací API pro 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
    

Následující postup popisuje, jak se připojit k rozhraní WMI a načíst objekt pomocí monikeru.

Připojení k rozhraní WMI a načtení objektu pomocí monikeru

  1. Zavolejte GetObject s identifikátorem (monikerem) ve vstupním parametru.

    '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 obsahuje řadu prvků, které můžete použít pro připojení k rozhraní WMI:

    • "winmgmts:" říká WSH, aby používal objekty skriptovacího API . V tomto konkrétním příkladu WSH bude vědět, že by měl vrátit objekt SWbemObject, který popisuje první Win32_scheduledJob v systému. Další možné objekty k vrácení by byly SWbemCollection nebo SWbemServices objekt, v závislosti na tom, co moniker popisoval.

    • Volitelně můžete nastavit úrovně zabezpečení pro připojení. Všimněte si, že v monikeru ale nemůžete nastavit informace o jménu a hesle. Další informace naleznete v tématu Zabezpečení skriptovacích klientů.

    • Volitelně můžete definovat cestu k objektu WMI. To zahrnuje buď místní, nebo vzdálený počítač, obor názvů, a také název třídy. Další informace o použití GetObject v skriptech VBScript ve WMI najdete v tématu Vytvoření instance a Načtení instance WMI.

  2. Místo načtení jedné položky nebo kolekce můžete také zvolit načtení objektu SWbemServices objektu (jak je popsáno v předchozím příkladu). Poté můžete na vráceném objektu spouštět další dotazy.

    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
    

    V předchozím příkladu je napodobování, nebo impersonationLevel=3, výchozí úroveň zabezpečení procesu. V následujícím příkladu není nutné určit úroveň zabezpečení tohoto procesu, pokud potřebujete změnit zabezpečení procesu na úroveň delegování . Další informace naleznete v tématu Nastavení výchozí úrovně zabezpečení procesu pomocí jazyka VBScript.

skriptování ve WMI