Подключение к WMI с помощью объекта SWbemLocator

Еще одним способом подключится из сценария к пространству WMI является использование объекта SWbemLocator, в отличии от моникера, для создания объекта SWbemLocator используется метод CreateObject(), в качестве параметра указывается программный идентификатор WbemScripting.SWbemLocator. В отличии от моникера, данный объект позволяет подключаться к удаленной системе не только под своей учетной записью, но и под любой другой. Если же подключение осуществляется на локальном компьютере, то всегда используется текущая учетная запись, плюс, вы вправе использовать свои сценарии в теле HTML страницы.

И так, давайте начнем:

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Тут мы всего лишь создали экземпляр объекта SWbemLocator, ссылка на него хранится в переменной objSWbemLocator. У объекта есть всего один метод ConnectServer, который позволяет подключится к пространству WMI:

objSWbemServices = objSWbemLocator.ConnectServer([strServer], [strNamespace], [strUser], [strPassword], [strLocale], [strAuthority], [iSecurityFlags], [objWbemNamedValueSet])

Как видим, методу передаются несколько параметров, давайте их изучим:

strServer – тут мы прописываем имя компьютера (локального или удаленного), если параметр отсутствует, то подключение произойдет к локальной системе.

strNamespace – задаем пространство имен (например, rootCIMV2), если оно отсутствует, то будет взято пространство по умолчанию (оно прописано в реестре в ветке HKLMSOFTWAREMicrosoft WBEMScripting Default Namespace)

strUser – прописываем имя пользователя в виде DomainUsername, этот параметр стоит задавать только в том случае, если происходит попытка подключится к удаленной системе, для локального подключения произойдет ошибка.

strPassword — пароль пользователя.

strLocale — код локализации (если не указано, то текущий язык).

strAuthority – прописываем имя домена, если он не был прописан в параметре strUser, повторное указание названия домена приведет к ошибке.

iSecurityFlags – задаем время ожидания подключения, например, 0 – перейти к следующей строке кода только после подключения к серверу, 128 – максимальное время ожидания, которое ровно 2 минутам.

objWbemNamedValueSet – контекстная информация, которая может использоваться провайдером.

У объекта SWbemLocator есть единственное свойство Security_, которое позволяет задавать уровни олицетворения и привилегии, они задаются не так, как в моникере. Фактически, данное свойство предоставляет доступ к объекту SWbemSecurity, который и отвечает за параметры безопасности, он описан в статье “Объект SWbemSecurity ”.

Скачать архив с примером

Ниже привожу пример, сценария, который будет выводить список всех запущенных в системе процессов:

 '*********************************************
' Имя: process_list_1.vbs 
' Выводим список запущенных процессов
'*********************************************
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
set objServices = objSWbemLocator.ConnectServer(".","root\CIMV2")
Set colNamespaces = objServices.InstancesOf("Win32_Process")
strResult=""
For Each objNamespace In colNamespaces 
    strResult = strResult & objNamespace.Name & VbCrLf
Next 
Wscript.Echo strResult
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий