| Нажатие кнопок в сторонних программах |
Сценарии 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.
Вывод информации о пользователе компьютера и смена его пароля