2013-07-11 2 views
1

У меня есть задача создать новых пользователей LDAP с помощью сценария Powershell. Я гугле много, но я не нашел хороших результатов ...Новый пользователь LDAP с Powershell

Это мой код, чтобы получить пользователей из LDAP ...

$authenticationType = [System.DirectoryServices.AuthenticationTypes]::ServerBind 
$objSearcherRoot = New-Object System.DirectoryServices.DirectoryEntry("LDAP://***.local.com:777/ou=user,o=company", "uid=testuser,ou=system,o=company", "password" , $authenticationType) 
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
$objSearcher.SizeLimit= 0 
$objSearcher.PageSize = 1000 
$objSearcher.SearchRoot = $objSearcherRoot 
$objSearcher.Filter = "cn=$cn" 
$result = $objSearcher.FindAll() 

Моя проблема, я не знаю, как вставить новый LDAP пользователя (не Active Directory) было бы очень хорошо, если бы кто-то может помочь мне ...;)

Благодаря

ответ

0

LDAP не поддерживает «вставки», но поддерживает «добавляет». Клиент LDAP должен создать запись и передать эту запись на сервер каталогов, используя запрос ADD. Сервер возвращает результат ADD клиенту LDAP, который содержит информацию об успехе или неудаче запроса ADD. Итак, проверьте документацию на информацию о передаче запроса ADD на сервер каталогов и интерпретируйте последующий ответ.

Клиент LDAP должен иметь разрешение для добавления записи (пользователь в этом случае). Это включает в себя использование запроса BIND для изменения состояния авторизации соединения с тем, которое позволяет добавлять запись в указанное место в дереве информации каталога.

Возможно, это link поможет.

+0

Okay Большое спасибо за интересную и хорошее описание. Знаете ли вы, возможно ли это с помощью Powershell? – Madeye

-1

Вы говорите «создайте новых пользователей LDAP», но вы можете создать пользователей AD, а затем они будут доступны с помощью LDAP.

Я использовал script from Microsoft, чтобы сделать что-то подобное.

Если вы просматриваете код, вы должны быть в состоянии видеть, как они это сделали. Мы использовали их код с несколькими настройками, чтобы делать то, что нам нужно.

-Джим

+0

Джим: Вы пропустили то, что это было выполнено против экземпляра LDAP, который не был Active Directory. –

1

Да, это возможно, я сделал это. Вам необходимо привязать к LDAP-серверу с помощью объекта System.DirectoryServices.Protocols.LdapConnection (скажем, $ c), а затем создать объект System.DirectoryServices.Protocols.AddRequest и заполнить его атрибуты (я показываю пару в этом пример):

[System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.Protocols") 
[System.Reflection.Assembly]::LoadWithPartialName("System.Net") 
$c = New-Object -TypeName System.DirectoryServices.Protocols.LdapConnection -ArgumentList "***.local.com:777,uid=testuser,ou=system,o=company", "password" , $authenticationType" 
$c.Bind() 
$r = New-Object -TypeName System.DirectoryServices.Protocols.AddRequest 
$r.DistinguishedName = "uid= xxxx, ou=user, o=company" 
$r.Attributes.Add((New-Object -TypeName System.DirectoryServices.Protocols.DirectoryAttribute -ArgumentList "objectclass",@("top","organizationalPerson","person","inetorgperson","inetuser","mailrecipient","pwmuser","posixAccount"))) | Out-Null 
$r.Attributes.Add((New-Object -TypeName System.DirectoryServices.Protocols.DirectoryAttribute -ArgumentList "cn",($FirstName+" "+$LastName))) | Out-Null 

Тогда просто отправить запрос:

$c.SendRequest($r)