Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用Powershell更改AD LDS中的displayname_Powershell_Adlds - Fatal编程技术网

尝试使用Powershell更改AD LDS中的displayname

尝试使用Powershell更改AD LDS中的displayname,powershell,adlds,Powershell,Adlds,我有一个在线学习管理系统,它的大部分数据都在sql server中,但它的页面结构和内容都在AD LDS实例中。我有几个类已经设置了50页,叫做“unusedportfolio01”到“unusedportfolio50”。这些是它们的显示名。其投资组合为“投资组合01”至“投资组合50” 我需要将显示名更改为每个都有不同的学生名,格式为“Last,First”。我正在尝试使用Windows Powershell的Active Directory模块。现在,我在一个测试服务器上,试图让它只运行几

我有一个在线学习管理系统,它的大部分数据都在sql server中,但它的页面结构和内容都在AD LDS实例中。我有几个类已经设置了50页,叫做“unusedportfolio01”到“unusedportfolio50”。这些是它们的显示名。其投资组合为“投资组合01”至“投资组合50”

我需要将显示名更改为每个都有不同的学生名,格式为“Last,First”。我正在尝试使用Windows Powershell的Active Directory模块。现在,我在一个测试服务器上,试图让它只运行几页。我无法一次更改多个displayname

我可以获得这些页面的对象列表:

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'
我获得了所有三个预期对象的DiscrimitedName、name、objectclass和objectguid,没有意外对象。太好了

我可以一次更改任何一个对象的显示名:

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"
指定对象的displayname已更改为“testing”。太棒了

我正试图用它将这三个对象的所有显示名同时更改为“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 server的sql查询中获得),其中包含“number”列01到50、“lastname”列和“firstname”列,并且我将更改每个页面的显示名称以匹配每个学生的“,”,但我还没有达到这一点


感谢您提供的帮助。

Foreach对象使用脚本块而不是字符串,因此请使用:

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

这可能是因为
$\uuu
包含一个对象而不是其DN<代码>$\区分名称。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"}

谢谢ojk。我对Powershell非常陌生,我无法理解您建议我使用的语法。在最后一部分,我尝试了几种根据你的回答我认为可能是正确的方法。其中许多在执行时没有错误,但显示名从未更改。如果你能提供一个更明确的例子,我将不胜感激(我已经很感激!)。这解决了我的问题。我能够一次将所有显示名设置为“测试”。对于我的最终目标,我还有更多的工作要做,但这回答了我提出的问题。非常感谢。