Попытка изменить отображаемое имя в AD LDS с помощью Powershell

У меня есть система управления онлайн-обучением, большая часть данных которой находится на сервере sql, а структура и содержимое страниц - в экземпляре AD LDS. У меня есть несколько классов, которые уже настроены на 50 страниц под названиями «Неиспользованное портфолио 01» - «Неиспользованное портфолио 50». Это их отображаемые имена. Их CN - от «Портфель 01» до «Портфель 50».

Мне нужно изменить отображаемые имена, чтобы у каждого было свое имя ученика в формате «Фамилия, имя». Я пытаюсь использовать модуль Active Directory для Windows Powershell. Прямо сейчас я нахожусь на тестовом сервере, пытаясь заставить работать всего несколько страниц. Мне не удается изменить более одного отображаемого имени за раз.

Я могу получить список объектов для этих страниц:

Get-ADObject -Server localhost:389 -filter 'displayname -like "*Portfolio*" -and cn -like "Portfolio*"' -searchbase 'CN=DMIN2013-LMS 101-02,CN=LMS 101,CN=LMS,CN=Academics,CN=Portal,O=Jenzabar,C=US'

Я получаю отличительное имя, имя, объектный класс и объектный идентификатор для всех трех ожидаемых объектов и никаких неожиданных объектов. Большой.

Я могу изменить отображаемое имя любого объекта за раз:

set-adobject -Server localhost:389 -identity "CN=Portfolio 01,CN=DMIN2013-LMS 101-02,CN=LMS 101,CN=LMS,CN=Academics,CN=Portal,O=Jenzabar,C=US" -displayname "testing"

Отображаемое имя указанного объекта изменено на "тестирование". Потрясающие.

Я пытаюсь использовать это, чтобы сразу изменить все отображаемые имена для этих трех объектов на «тестирование», и, очевидно, у меня что-то не так, потому что это не работает:

Get-ADObject -Server localhost:389 -filter 'displayname -like "*Portfolio*" -and cn -like "Portfolio*"' -searchbase 'CN=DMIN2013-LMS 101-02,CN=LMS 101,CN=LMS,CN=Academics,CN=Portal,O=Jenzabar,C=US' | foreach-object 'set-adobject -Server localhost:389 -identity $_ -displayname "testing"'

Конечная цель состоит в том, что у меня будет файл csv (который я получу из sql-запроса с сервера sql), содержащий столбец «число» от 01 до 50, столбец «фамилия» и столбец «имя», и Я изменю отображаемое имя каждой страницы, чтобы оно соответствовало "," для каждого учащегося, но я еще не на этом этапе.

Спасибо за любую помощь, которую вы можете предложить.


person MasterOfNone    schedule 24.10.2014    source источник


Ответы (2)


Это может быть связано с тем, что $_ содержит объект, а не его DN. $_.DistinguishedName. И что говорит ojk

Get-ADObject -Server localhost:389 -filter 'displayname -like "*Portfolio*" -and cn -like "Portfolio*"' -searchbase 'CN=DMIN2013-LMS 101-02,CN=LMS 101,CN=LMS,CN=Academics,CN=Portal,O=Jenzabar,C=US' | foreach-object {set-adobject -Server localhost:389 -identity $_.DistinguishedName -displayname "testing"}
person Paul    schedule 24.10.2014
comment
Это решило мою проблему. Я смог одновременно настроить все отображаемые имена для тестирования. Для моей конечной цели мне еще предстоит поработать, но это ответило на заданный мною вопрос. Спасибо! - person MasterOfNone; 24.10.2014

Foreach-Object использует блок скрипта, а не строку, поэтому используйте:

something | Foreach-Object {Do something with $_}
person ojk    schedule 24.10.2014
comment
Спасибо ojk. Я новичок в Powershell и не могу понять синтаксис, который вы предлагаете мне использовать. В последней части я попробовал несколько вариантов того, что, по моему мнению, могло быть правильным, исходя из вашего ответа. Многие из них выполняются без ошибок, но отображаемые имена никогда не меняются. Если бы вы могли привести более подробный пример, я был бы признателен (и я уже благодарен!). - person MasterOfNone; 24.10.2014