2014-10-24 6 views
2

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

Мне нужно изменить имена для каждого, у каждого есть другое имя ученика в формате «Последний, Первый». Я пытаюсь использовать модуль 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' 

Я получаю DistinguishedName, имя, ObjectClass и ObjectGUID для всех трех ожидаемых объектов и не неожиданных объектов. Отлично.

я могу изменить DisplayName любого одного объекта в то время:

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" 

Указанный объект имеет свой отображаемое_имя изменено на «тестирование». Потрясающие.

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

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, столбец «lastname» и столбец «firstname», и я изменю отображаемое имя каждой страницы соответствует «,» для каждого ученика, но я пока не в этом.

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

ответ

1

Это может быть связано с тем, что $_ содержит объект, а не его 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"} 
+0

Это решило мою проблему. Я смог установить все отображаемые имена на «тестирование» сразу. Для моей конечной цели у меня еще есть работа, но это ответ на вопрос, который я задал. Спасибо! – MasterOfNone

2

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

something | Foreach-Object {Do something with $_} 
+0

Thanks ojk. Я довольно новичок в Powershell, и я не могу понять, какой синтаксис вы предлагаете использовать. Для последней части я пробовал несколько вариантов того, что, как я думал, может быть правильным на основе вашего ответа. Многие из них выполняются без ошибок, но отображаемые имена никогда не меняются. Если бы вы могли предоставить более явный пример, я был бы благодарен (и я уже благодарен!). – MasterOfNone