| |
15.19 ADSI. Работа с объектами пользователей и интерфейс IADsUser
Интерфейс IADsUser в скриптах ADSI на VBScript, создание объектов пользователей в Active Directory, работа со свойствами объекта пользователя, получение информации о членстве пользователей в группе из скрипта
На практике чаще всего средствами ADSI приходится работать с объектами пользователей. Например, можно настраивать программным образом параметры сразу для больших групп пользователей, можно синхронизировать информацию в Active Directory с информацией в других службах каталогов и источников данных (например, с программами учета кадров), создавать отчеты и т.п.
Создание объекта пользователя обычно производится при помощи метода IADsContainer.Create() вышестоящего контейнерного объекта (домена или организационного подразделения). При этом обязательно нужно при помощи метода IADs.Put() для создаваемого объекта присвоить в кэше значения всем обязательным свойствам: иначе вызов метода IADs.SetInfo() для сохранения созданного объекта пользователя приведет к ошибке. Создать объект пользователя в Active Directory можно, например, так:
Dim oUser, oOU
Set oOU = GetObject("LDAP://OU=HQ,DC=nwtraders1,DC=msft")
Set oUser = oOU.Create("user", "CN=Сергей Петров")
oUser.Put "samAccountName", "SPetrov"
oUser.Put "userPrincipalName", "SPetrov@nwtraders1.msft"
oUser.SetInfo
oUser.SetPassword "P@ssw0rd"
oUser.AccountDisabled = False
oUser.SetInfo
Получить ссылку на уже существующий объект пользователя можно, как и для других объектов, при помощи пути к нему в формате свойства ADsPath:
Dim oUser
Set oUser = GetObject("LDAP://CN=Сергей Петров,OU=HQ,DC=nwtraders1,DC=msft")
Wscript.Echo oUser.AccountDisabled
Работа с объектами пользователей, конечно, поддерживается и средствами провайдера LDAP, и средствами провайдера WinNT (в этом случае вам не будет доступно около 30 свойств объекта пользователя, появившиеся в Windows 2000 и Windows 2003, такие, как Department, Division, FaxNumber и т.п.). Для получения ссылки на объект пользователя можно использовать и его SID.
Объект пользователя в ADSI поддерживает свойства и методы стандартных интерфейсов IADs и IADsPropertyList. Также для него реализован специализированный интерфейс IADsUser, в который сведены свойства для доступа к наиболее часто используемым атрибутам объекта пользователя в Active Directory. Отметим, что для объекта пользователя в Active Directory предусмотрено огромное количество атрибутов (несколько сотен), и для многих из них доступ возможен только напрямую, через интерфейсы IADsPropertyList/PropertyEntry/PropertyValue (но не через IADsUser). Тем не менее во многих ситуациях применение интерфейса IADsUser может оказаться очень удобным.
Большая часть свойств (Department, Division, EmailAddress, FaxNumber, FirstName, FullName и т.п.) очевидна и комментариев не требует. Ниже будут рассмотрены некоторые не самые очевидные свойства, предусмотренные в этом интерфейсе, а также все методы:
- AccountDisabled — это свойство определяет, отключена ли учетная запись. По умолчанию объект пользователя создается в отключенном состоянии. Для этого свойства используются только значения True и False. Однако для атрибута UserAccountControl объекта пользователя в Active Directory, который соответствует этому свойству, предусмотрено несколько десятков значений, которые вам могут пригодиться. Отметим только, что значению False свойства AccountDisabled соответствует значение атрибута UserAccountControl 544, а значению True (то есть учетная запись отключена) — 546.
- AccountExpirationDate — время и дата, когда учетная запись автоматически отключится. Обычно используется для временных сотрудников.
- BadLoginAddress — информация о компьютере, с которого была произведена последняя попытка неудачного входа (с неверным паролем) для данной учетной записи. Эту информацию (свойство доступно только на чтение) можно использовать для обнаружения вторжений.
- BadLoginCount — информация о количестве неудачных попыток входа (с неверным паролем) после последнего сброса счетчика.
- GraceLoginsAllowed — информация о количестве входов в сеть, которые пользователь может произвести после того, как срок его пароля истек.
- GraceLoginsRemaining — количество оставшихся входов в сеть для данного пользователя (это свойство доступно только тогда, когда срок действия пароля закончился).
- IsAccountLocked — заблокирована ли учетная запись пользователя после превышения порогового значения неверных попыток входа. Это свойство доступно и на чтение, и на запись, поэтому его можно использовать для разблокирования учетной записи.
- LastFailedLogin — информация о дате и времени последней неудачной попытки (по причине неверного пароля) входа пользователя. Можно использовать для расследования попыток вторжения.
- LastLogin — информация о дате и времени последнего входа в сеть.
- LastLogoff — информация о последнем выходе пользователя из сети (если этот выход был произведен корректно).
- MaxLogins — информация о максимальном количестве пользователей, которые могут одновременно входить в сеть от имени данной учетной записи.
- PasswordExpirationDate — дата и время, когда срок действия пароля данного пользователя истечет.
- PasswordLastChanged — дата и время последнего изменения пароля.
- PasswordMinimumLength — минимальная длина пароля в символах.
- PasswordRequired — это свойство (доступное и на чтение, и на запись) позволяет определить, обязателен ли пароль для данного пользователя.
- RequireUniquePassword — это свойство (также доступное и на чтение, и на запись) позволяет определить, распространяются ли на данную учетную запись требования по уникальности пароля (то есть будет ли к нему применяться проверка истории паролей).
- ChangePassword() — этот метод позволяет поменять пароль пользователя. В качестве параметров этот метод принимает старый пароль и новый пароль. Обычно этот метод используется для того, чтобы создать свой собственный интерфейс, при помощи которого пользователь сможет менять себе пароль.
- SetPassword() — этот метод предназначен уже не для пользователей, а для администраторов. Он позволяет поменять пароль, не зная старого. В качестве параметра он принимает только новый пароль.
- Groups() — этот метод позволяет вернуть коллекцию объектов групп, в которые входит данный пользователь. При этом системные группы (такие, как Domain Users) не учитываются. Этот метод удобно использовать для различных проверок. Пример его применения может выглядеть, например, так:
Dim oUser
Dim oGroups, oGroup
Set oUser = GetObject _
("LDAP://CN=Сергей Петров,OU=HQ,DC=nwtraders1,DC=msft")
Set oGroups = oUser.Groups
For Each oGroup In oGroups
Wscript.Echo oGroup.ADsPath
Next
| |
 |
|