Вопрос по лекции 7, где рассматривается взаимодействие со сторонними программами, в том числе эмуляция нажатия кнопок клавиатуры WshShell.SendKeys. Вопрос в том что во время автоматизации может потребоваться не нажатие клавиатуры, а нажатие кнопок в сообщениях этих программ. Можно вытащить информацию о объекте (кнопке) скажем с помощью AutoIt Info, или ориентироваться скажем на текст на кнопке..., но как на эту кнопку нажать? (без обхода по клавиатуре) |
Сценарии WSH для доступа к службе каталогов АDSI
Создание пользователя и группы на рабочей станции
В сценарии AddUser.vbs, который приведен в листинге 8.2, для создания нового пользователя на рабочей станции выполняются следующие шаги. Во-первых, производится связывание с нужным компьютером (в нашем примере это рабочая станция с именем Popov), то есть создается экземпляр objComputer объекта Computer:
Set objComputer = GetObject("WinNT://Popov")
Во-вторых, создается экземпляр UserObj объекта User для нового пользователя. Для этого используется метод Create() объекта Computer ; в качестве параметров этого метода указывается имя класса "user" и имя создаваемого пользователя (в нашем примере это имя хранится в переменной strUser ):
Set objUser = objComputer.Create("user",strUser)
Замечание
Для создания пользователя или группы у вас в системе должны быть назначены права, которыми обладает администратор.
Для созданного пользователя в свойство Description мы помещаем текст описания:
UserObj.Description="Этот пользователь создан из сценария ADSI"
Для сохранения информации о новом пользователе в базе данных пользователей вызывается метод SetInfo объекта User.
'******************************************************************** ' Имя: AddUser.vbs ' Язык: VBScript ' Описание: Создание нового пользователя компьютера '******************************************************************** Option Explicit 'Объявляем переменные Dim objComputer ' Экземпляр объекта Computer Dim objUser ' Экземпляр объекта User Dim strUser ' Имя создаваемого пользователя ' Задаем имя пользователя strUser = "XUser" ' Связываемся с компьютером Popov Set objComputer = GetObject("WinNT://Popov") ' Создаем объект класса User Set objUser = objComputer.Create("user",strUser) ' Добавляем описание созданного пользователя objUser.Description = "Этот пользователь создан из сценария ADSI" ' Сохраняем информацию на компьютере objUser.SetInfo '************* Конец *********************************************Листинг 8.2. Создание нового локального пользователя на рабочей станции
Группа на рабочей станции создается аналогичным образом (листинг 8.3).
'******************************************************************** ' Имя: AddGroup.vbs ' Язык: VBScript ' Описание: Создание новой группы на компьютере '******************************************************************** Option Explicit 'Объявляем переменные Dim objComputer ' Экземпляр объекта Computer Dim objGroup ' Экземпляр объекта Group Dim strGroup ' Имя создаваемой группы ' Задаем имя пользователя strGroup = "XGroup" ' Связываемся с компьютером Popov Set objComputer = GetObject("WinNT://Popov") ' Создаем объект класса Group Set objGroup = objComputer.Create("group",strGroup) ' Сохраняем информацию на компьютере objGroup.SetInfo '************* Конец *********************************************Листинг 8.3. Создание новой локальной группы на рабочей станции
Вывод информации о пользователе и смена его пароля
В листинге 8.4 приведен сценарий UserInfo.vbs, в котором выводится на экран информация о созданном в сценарии AddUser.vbs пользователе XUser. Для получения этой информации мы производим связывание с нужным пользователем, т.е. создаем экземпляр objUser объекта User и читаем данные из полей этого объекта:
' Связываемся с пользователем XUser компьютера Popov Set objUser = GetObject("WinNT://Popov/XUser,user") ' Формируем строку с информацией о пользователе strResult = "Информация о пользователе XUser" & vbCrLf &_ "Имя: " & objUser.Name & vbCrLf & _ "Описание: " & objUser.Description & vbCrLf ' Выводим сформированную строку на экран WScript.Echo strResult
После этого в сценарии выдается запрос на изменение пароля пользователя XUser. Для этого мы используем метод Popup() объекта WshShell:
' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Запрос на изменение пароля Res = WshShell.Popup("Изменить пароль у XUser?",0,_ "Администрирование пользователей",vbQuestion+vbYesNo)
В случае утвердительного ответа пароль изменяется с помощью метода SetPassword объекта User, после чего все произведенные изменения сохраняются на рабочей станции с помощью метода SetInfo:
If Res=vbYes Then ' Нажата кнопка Да ' Устанавливаем новый пароль objUser.SetPassword "NewPassword" ' Сохраняем сделанные изменения objUser.SetInfo
'******************************************************************** ' Имя: UserInfo.vbs ' Язык: VBScript ' Описание: Вывод информации о пользователе компьютера и смена ' его пароля '******************************************************************** Option Explicit 'Объявляем переменные Dim objUser ' Экземпляр объекта User Dim WshShell ' Объект WshShell Dim Res ' Результат нажатия кнопки в диалоговом окне Dim strPassword ' Строка с новым паролем Dim strResult ' Строка для вывода на экран '********************** Начало ************************************* ' Связываемся с пользователем XUser компьютера Popov Set objUser = GetObject("WinNT://Popov/XUser,user") ' Формируем строку с информацией о пользователе strResult = "Информация о пользователе XUser" & vbCrLf &_ "Имя: " & objUser.Name & vbCrLf & _ "Описание: " & objUser.Description & vbCrLf ' Выводим сформированную строку на экран WScript.Echo strResult ' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Запрос на изменение пароля Res = WshShell.Popup("Изменить пароль у XUser?",0,_ "Администрирование пользователей",vbQuestion+vbYesNo) If Res=vbYes Then ' Нажата кнопка Да ' Устанавливаем новый пароль objUser.SetPassword "NewPassword" ' Сохраняем сделанные изменения objUser.SetInfo WScript.Echo "Пароль был изменен" Else WScript.Echo "Вы отказались от изменения пароля" End If '************* Конец *********************************************/Листинг 8.4. Вывод информации о пользователе компьютера и смена его пароля