Perl для системного администрирования



         

ADSI (Интерфейсы служб активных каталогов) - часть 13


Также обратите внимание, что свойства объектов в двух пространствах имен похожи, но не идентичны. Например, можно обратиться к одним и тем же объектам из обоих пространств имен WinNT и LDAP, но обратиться к некоторым свойствам Active Directory конкретного объекта пользователя можно только через пространство имен LDAP.

Особенно важно заметить различия между схемами в этих двух пространствах имен. Например, класс Use для WinNT не имеет обязательных свойств, тогда как класс User в LDAP требует наличия свойств  samAccountNarne в каждом объекте пользователя.

Не забывая об этих различиях, посмотрим на сам код. В целях экономии места пропустим большую часть проверок ошибок, но рекомендуется запустить сценарий с ключом -w и добавить в текст программы примерно такие строки:

die "Ошибка OLE: ".Win32: :OLE->LastError()

if Win32: :OLE->Lar,tError():

Работа с пользователями через ADSI

Для получения списка пользователей домена применяется следующее:

use Win32::OLE 'in':

SADsPath = "WinNT://DomainName/PDCName,computer":

$c = Win32::OLE->GetObject($ADsPath) or

die "Невозможно получить $ADsPath\n":

foreach $adsobj (in $c){

print $adsobj->{Nane}."\n" if ($adsobj->{Class} eq "User"): }

Для создания нового пользователя и установки его полного имени (свойство Full Name):

use Win32::OLE;

$ADsPatn="WinNT://Domain Name/ComputerName,computer":

$c = Win32::OLE->GetOaject($ADsPatn) or

die "Невозможно получить SADsPath г":

tt создаем и возвращаем объект User $u = $c->Create("jser".$usernaTie);

Su->SetInfc(): tt н,жно создать лолазона^еля. чеойд тем как меня~^ з^а-е-/-

Name тедогус^.'м $u->{Fjll'Janei = З'Л'.г.;: ,;.-. $bj->3eil';fo()

Если Cciroutf rfJri! r - это первичный контроллер домена (Primary Domain Controller), то мы создали пользователя домена. Если нет, этот пользователь будет локальным для данной машины.

Эквивалентная программа создания глобального пользователя (при помощи LDAP нельзя создавать локальных пользователей) в Active Directory выглядит так:




Содержание  Назад  Вперед