Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Скрипты 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\SOFTWARE\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. К ним относятся локальный или удаленный компьютер, пространство имен, а также имя класса. Дополнительные сведения об использовании VBScript GetObject в скриптах 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
В предыдущем примере имперсонация или уровень_имперсонации=3 является уровнем безопасности процесса по умолчанию. В следующем примере этот уровень безопасности процесса не требуется указывать, если не нужно изменить безопасность процесса на делегата. Дополнительные сведения см. в разделе Настройка уровня безопасности процесса по умолчанию с помощьюVBScript.
Связанные разделы
-
Скриптинг в WMI