Соединение с помощью объекта SWbemLocator

Объект SWbemLocator позволяет установить соединение с определенным пространством имен WMI на удаленном компьютере от имени заданной учетной записи (на локальном компьютере соединение с WMI всегда производится от имени текущей учетной записи). Использование этого объекта бывает необходимо, если в сценарии нужно явно задать имя пользователя и пароль для подключения к пространству имен WMI, либо сценарий используется внутри HTML-страницы.

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

Set objSWbemLocator = CreateObject

("WbemScripting.SWbemLocator")

Единственный имеющийся у SWbemLocator метод ConnectServer позволяет подключиться к службе WMI на указанном компьютере и получить ссылку на соответствующий объект SWbemServices. Имя компьютера, с которым следует произвести соединение, указывается в качестве первого параметра этого метода, а имя пространства имен WMI — в качестве второго. Например, чтобы подключиться к пространству имен Root\CIMV2 на компьютере POPOV, в сценарии следует выполнить следующие строки:

Set objLocator = CreateObject

("WbemScripting.SWbemLocator")

Set objService = objLocator.ConnectServer

("POPOV", "Root\CIMV2")

При этом будет произведена попытка соединения от имени текущей учетной записи. В качестве третьего и четвертого параметров метода ConnectServer можно при необходимости указать имя пользователя и пароль для связи с нужным пространством имен. Например, для подключения к пространству имен Root\CIMV2 на компьютере POPOV от имени учетной записи Popov домена Domain1 с паролем MyPassword, в сценарии следует выполнить следующие строки:

Set objLocator = CreateObject

("WbemScripting.SWbemLocator")

Set objService = objLocator.ConnectServer

("POPOV", "Root\CIMV2", "Domain1\Popov", "MyPassword")

Естественно, можно не указывать явно пароль в тексте сценария, а вводить его с клавиатуры в какую-либо переменную, которую затем подставить в метод ConnectServer. Напомним, что для ввода строки с клавиатуры в консольном режиме выполнения сценариев используются стандартные входной и выходной потоки WScript.StdIn и WScript.StdOut, а в графическом режиме — функция InputBox() языка VBScript. Кроме этого, в Windows XP и Windows Server 2003 имеется объект ScriptPW, позволяющий выполнять ввод текста с клавиатуры в консольном режиме без дублирования вводимых символов на экране. В листинге 12.1 приведен сценарий InputPassw.vbs (запускать этот сценарий нужно обязательно с помощью cscript.exe), в котором запрашивается пароль пользователя и производится соединение со службой WMI на удаленном компьютере с использованием этого пароля, после чего на экран выводится описание роли компьютера в домене (при этом сам введенный пароль на экране не отображается).

'*******************************************************************

' Имя: InputPassw.vbs

' Язык: VBScript

' Описание: Ввод пароля без отображения на экране для соединения

' с WMI на удаленном компьютере

'*******************************************************************

Option Explicit

 

' Объявляем переменные

Dim strComputer ' Имя компьютера

Dim strNamespace ' Имя пространства имен

Dim strClass ' Имя класса

Dim strUser ' Имя пользователя

Dim strPassw ' Пароль пользователя

Dim objPassw ' Объект ScriptPW

Dim objLocator ' Объект SWbemLocator

Dim objService ' Объект SWbemServices

Dim colInstances ' Коллекция экземпляров класса WMI

Dim objInstance ' Элемент коллекции

Dim strComputerRole ' Роль компьютера в домене

 

'********************** Начало *************************************

' Присваиваем начальные значения переменным

strComputer = "POPOV"

strNamespace = "Root\CIMV2"

strClass = "Win32_ComputerSystem"

strUser = "POPOV\404_Popov"

 

'Создаем объект ScriptPW

Set objPassw = CreateObject("ScriptPW.Password")

' Выводим подсказку для ввода пароля

WScript.StdOut.Write "Введите пароль для " & strUser & ": "

'Вводим пароль

strPassw = objPassw.GetPassword()

 

'Создаем объект SWbemLocator

Set objLocator = CreateObject("WbemScripting.SWbemLocator")

'Соединяемся с пространством имен WMI от имени заданной учетной записи

Set objService = objLocator.ConnectServer(strComputer, strNamespace, strUser, strPassw)

 

' Создаем коллекцию экземпляров класса Win32_ComputerSystem

Set colInstances = objService.InstancesOf(strClass)

 

' Перебираем элементы коллекции

For Each objInstance In colInstances

' Определяем описание роли

Select Case objInstance.DomainRole

Case 0

strComputerRole = "Standalone Workstation"

Case 1

strComputerRole = "Member Workstation"

Case 2

strComputerRole = "Standalone Server"

Case 3

strComputerRole = "Member Server"

Case 4

strComputerRole = "Backup Domain Controller"

Case 5

strComputerRole = "Primary Domain Controller"

End Select

 

' Выводим результат на экран

Wscript.Echo "Роль компьютера " & strComputer & ": " & strComputerRole

Next

'************************* Конец ***********************************

Листинг 12.1. Ввод пароля без отображения на экране для соединения с WMI на удаленном компьютере

 








Дата добавления: 2018-03-01; просмотров: 1479;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.