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
Získejte objekt lokátoru pomocí volání CreateObject.
Set Locator = CreateObject("WbemScripting.SWbemLocator")
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.
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.
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
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.
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.