Опубликован: 12.01.2008 | Уровень: специалист | Доступ: свободно
Лекция 8:

Сценарии WSH для доступа к службе каталогов АDSI

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Создание пользователя и группы на рабочей станции

В сценарии 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. Вывод информации о пользователе компьютера и смена его пароля
< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Валентина Тюрина
Валентина Тюрина
Нажатие кнопок в сторонних программах
Александр Тагильцев
Александр Тагильцев
Где проводится профессиональная переподготовка?
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Ермачков
Игорь Ермачков
Латвия, Рига