Подключение к WMI с помощью VBScript
Скрипты WMI могут сжимать многие шаги, необходимые в программе C++. Они могут подключаться к WMI не только через объект SWbemLocator , но и через моникер "winmgmts:". Моникер — это короткое имя, которое находит пространство имен, класс или экземпляр в WMI. Имя "winmgmts:" — это моникер WMI, который сообщает узлу сценариев Windows использовать объекты WMI, подключается к пространству имен по умолчанию и получает объект SWbemServices . Другие сведения о подключении, такие как уровень олицетворения или определенный класс или экземпляр, отображаются в строке после имени моникера. Моникеры можно использовать в вызовах, которые создают или получают объекты WMI. Дополнительные сведения см. в разделе Создание строки моникера.
В следующей процедуре описывается подключение к WMI с помощью SWbemLocator.
Подключение к WMI с помощью SWbemLocator
Получение объекта указателя с помощью вызова CreateObject.
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Войдите в пространство имен с помощью вызова метода ConnectServer .
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2")
Если вы не укажете компьютер в вызове ConnectServer, WMI подключается к локальному компьютеру. Если пространство имен не указано, WMI подключается к пространству имен, указанному в разделе реестра.
HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\WBEM\Сценариев\Пространство имен по умолчанию
Пространство имен по умолчанию — \root\cimv2. Дополнительные сведения о пространствах имен см. в разделе Создание иерархий в WMI.
Задайте уровень олицетворения с помощью вызова метода SWbemServices.Security_ .
objService.Security_.ImpersonationLevel = 3
Дополнительные сведения см. в разделе Настройка уровня безопасности процесса по умолчанию с помощью VBScript.
Реализуйте назначение скрипта.
WMI предоставляет различные объекты скриптов, которые используются для доступа к данным в сети и управления ими. Дополнительные сведения см. в разделах Управление сведениями о классах и экземплярах и API скриптов для 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
В следующей процедуре описывается, как подключиться к WMI и получить объект с помощью моникера.
Подключение к WMI и получение объекта с помощью моникера
Вызовите GetObject с моникером во входном параметре.
'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 содержит ряд элементов, которые можно использовать для подключения к WMI:
"winmgmts:" указывает WSH использовать объекты API скриптов. В этом конкретном примере WSH будет знать, что он должен вернуть SWbemObject, описывающий первый Win32_scheduledJob в системе. Другими возможными объектами для возврата будут SWbemCollection или SWbemServices , в зависимости от того, что описывает моникер.
При необходимости можно задать уровни безопасности для подключения. Обратите внимание, что нельзя задать имя и пароль в моникере. Дополнительные сведения см. в разделе Защита клиентов скриптов.
При необходимости можно определить путь к объекту WMI. Сюда входит локальный или удаленный компьютер, пространство имен, а также имя класса . Дополнительные сведения об использовании getObject VBScript в скриптах WMI см. в статье Создание экземпляра и получение экземпляра WMI.
Вместо получения одного элемента или коллекции можно также выбрать получение объекта SWbemServices (как описано в предыдущем примере). После этого можно вызвать дополнительные запросы к возвращаемого объекту.
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
В предыдущем примере олицетворение или impersonationLevel=3 является уровнем безопасности процесса по умолчанию. В следующем примере нет необходимости указывать этот уровень безопасности процесса, если не нужно изменить уровень безопасности процесса для делегирования. Дополнительные сведения см. в разделе Настройка уровня безопасности процесса по умолчанию с помощью VBScript.
Связанные темы