Еще одним способом подключится из сценария к пространству 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