Как клонировать объект UserPrincipal в VB.NET - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать нового пользователя в Active Directory из приложения VB. NET. Большинство полей будут идентичны уже существующему "шаблону" пользователя, за исключением таких вещей, как Name, SurName, Email, SamAccountName и т. Д. c.

Итак, я хочу скопировать или клонировать этот шаблон User, назначить несколько поля с новым / другим значением, а затем сохраните этого нового пользователя в Active Directory. Я бы не хотел вручную назначать неизвестно сколько свойств из моего шаблона новому пользователю и, возможно, забыть что-то по ходу дела ..

Нет способа сделать это? Я нашел кое-что об использовании DirectoryEntry.CopyTo(), но просто получаю ошибку «Не реализовано», и в любом случае я сомневаюсь, что это правильное направление (не знаю, как использовать этот класс вместе с объектом UserPrincipal)

Должен ли я использовать класс, отличный от System.DirectoryServices.AccountManagement.UserPrincipal, для сохранения моего нового пользователя в AD? У меня неправильный подход?

Любая помощь будет оценена :)

1 Ответ

1 голос
/ 14 июля 2020

Если вы посмотрите на исходный код для DirectoryEntry.CopyTo, он вызовет:

newParent.ContainerObject.CopyHere(Path, newName)

И ContainerObject имеет тип IADsContainer . Если вы посмотрите документацию для IADsContainer.CopyHere, там написано (в разделе «Примечания»):

Поставщики, поставляемые с ADSI, возвращают сообщение об ошибке E_NOTIMPL .

ADSI - это «Интерфейсы службы Active Directory». Итак, краткий ответ: он просто не будет работать с объектами AD.

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

...