|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
15.12 ADSI. Интерфейс IADsContainer Интерфейс IADSContainer в скриптах ADSI на VBScript, общие свойства и методы контейнерных объектов (Site, Domain, OU), свойства Count и Filter, методы CopyHere(), Create(), Delete(), GetObject(), MoveHere() Интерфейс IADsContainer обеспечивает набор свойств и методов для контейнерных объектов Active Directory (в основном — объектов организационных подразделений и доменов). Чаще всего свойства и методы этого интерфейса используются для двух задач:
Dim oContainer Dim oUser Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") oContainer.Filter = Array("user") For Each oUser In oContainer Wscript.Echo oUser.ADsPath Next
Dim oContainer Dim oUser Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") 'Создаем объект пользователя и настраиваем обязательные свойства Set oUser = oContainer.Create("user", "CN=Alexander Ivanov") oUser.Put "samAccountName", "AIvanov" oUser.Put "userPrincipalName", "AIvanov@nwtraders1.msft" oUser.SetInfo 'Приводим объект пользователя в рабочее состояние oUser.SetPassword "P@ssw0rd" oUser.AccountDisabled = False oUser.SetInfo В интерфейсе IADsContainer предусмотрены следующие свойства:
Dim oContainer Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") oContainer.Filter = Array("user") 'Проверяем фильтр For Each oFilter In oContainer.Filter Wscript.Echo oFilter Next Чтобы снять фильтр, можно использовать код вида oContainer.Filter = Nothing
Работает это свойство с массивом строковых значений. Пример его применения может выглядеть так: Dim oContainer Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") oContainer.Hints = Array("adminDescription") Wscript.Echo oContainer.Description Ниже представлена информация о методах интерфейса IADsContainer:
Этот метод принимает два параметра: путь в формате свойства ADsPath для исходного объекта и имя в формате относительного отличительного имени для создаваемого объекта. Второй параметр является необязательным, если его пропустить, то имя скопированного объекта будет таким же, как и у исходного. Этот метод возвращает ссылку на созданный объект, при помощи которой можно донастроить его свойства после копирования и сохранить внесенные изменения.
Этот метод возвращает ссылку на созданный объект в оперативной памяти. Затем можно присвоить значение свойствам данного объекта (лучше при помощи метода IADs.Put(), чтобы гарантировать отсутствие ошибок) и сохранить созданный объект в службе каталогов при помощи метода SetInfo(). Например, создание глобальной группы может выглядеть так: Dim oContainer Dim oGroup Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") Set oGroup = oContainer.Create("group", "CN=Script Users") oGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _ ADS_GROUP_TYPE_SECURITY_ENABLED oGroup.Put "samAccountName", "Script Users" oGroup.Put "name", "Script Users" oGroup.Put "displayName", "Script Users" oGroup.Put "description", "Script Users Security Group" oGroup.SetInfo
Dim oContainer Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") oContainer.Delete "group", "CN=Script Users"
Dim oContainer Dim Item Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") For Each Item In oContainer Wscript.Echo Item.Name Next
Dim oContainer Dim oUser Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") Set oUser = oContainer.GetObject("user", "CN=Alexander Ivanov") Wscript.Echo oUser.ADsPath
Dim oContainer Dim oUser Set oContainer = GetObject("LDAP://ou=HQ,dc=nwtraders1,dc=msft") Set oUser = oContainer.MoveHere _ ("LDAP://CN=TestUser1,CN=Users,DC=nwtraders1,DC=msft", "CN=TestUser1") Wscript.Echo oUser.ADsPath Этот метод возвращает ссылку на интерфейс IADs для перемещенного объекта, поэтому вы можете использовать полученную ссылку для дальнейшей настройки свойств данного объекта. Если переместить объект в тот же контейнер, в котором он уже находится, указав при помощи второго параметра новое имя для этого объекта, то тем самым можно переименовать объект в данном каталоге. Отметим некоторые моменты, связанные с применением метода MoveHere(). При помощи этого метода можно перемещать в данный контейнерный объект как объекты из того же домена, так и объекты из других доменов данного леса. Однако для перемещения объектов из других доменов необходимо обязательно выполнить некоторые условия:
При перемещении объекта между доменами для объекта создается новый SID, а старый сохраняется при помощи атрибута SIDHistory. Явно предоставленные разрешения для пользователя при этом сохраняются, но теряется его членство в глобальных группах (и, соответственно, предоставленные через глобальные группы разрешения). Для перемещаемых объектов пользователей назначенные им пароли сохраняются. Если же вам нужно переместить между доменами целое организационное подразделение со вложенными элементами (другими организационными подразделениями, объектами пользователей и т.п.), то лучше использовать вместо метода MoveHere() утилиту командной строки MoveTree, которая входит в состав Windows Server 2003 Support Tools.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||