2

我有一个在线学习管理系统,它的大部分数据都在 sql server 中,但它的页面结构和内容在 AD LDS 实例中。我有一些课程已经设置了 50 页,称为“未使用的投资组合 01”到“未使用的投资组合 50”。这些是他们的显示名称。他们的 CN 是“Portfolio 01”到“Portfolio 50”。

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

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

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'

我得到了所有三个预期对象的专有名称、名称、对象类和 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"

指定对象的显示名称更改为“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、一个“姓氏”列和一个“名字”列,以及我将更改每个页面的显示名称以匹配每个学生的“,”,但我还没有到那个时候。

谢谢你尽你所能的帮助。

4

2 回答 2

2

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

something | Foreach-Object {Do something with $_}
于 2014-10-24T16:27:53.667 回答
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"}
于 2014-10-24T18:57:14.830 回答