我的任务是创建 Active Directory 中自定义对象/自定义属性的成员列表。我认为最好的方法是使用 PowerShell。我可以列出特定 OU 中的对象,但无法进一步深入获取对象内特定属性的成员/值。以下是我所拥有的:
自定义属性:bofaAMLMember(这是一个 objectclass=top:attributeSchema)
如果我运行:
Get-ADObject –LDAPFilter "(ObjectClass=bofaAML)" –SearchBase "OU=DEVELOPMENT,OU=IIS,OU=APPHOST,OU=SERVERS AML,OU=BAND,DC=CORP,DC=someplace,DC=COM" -searchscope subtree
输出是一长串数据:
DistinguishedName Name ObjectClass
--------------------------------------------------------------------------------------------------
CN=RG-AdministratorsMembers,OU=Ld Unified RG-AdministratorsMembers bofaAML
CN=RG-PowerUsersMembers,OU=Ld Unified RG-PowerUsersMembers bofaAML
CN=UR-DenyLogonViaTerminalServ,OU=India UR-DenyLogonViaTerminalServ bofaAML
CN=UR-LogonAsService,OU=India Remitter UR-LogonAsService bofaAML
由于宽度等原因,我截断了列表。
它向我展示了所有具有自定义属性 bofaaml 和 attributeSchema 对象类的项目。
如果您在 AD 或 ADSI 中,打开其中任何一个并转到“属性编辑器”,您将看到一个名为 bofaAMLMember 的属性 - 它具有多值“成员”成员是 CN 列出的其他 AD 帐户/属性。我需要成员列表。我已经为此工作了一个星期,但似乎无法让它发挥作用。我不确定是否有办法添加 Get-Member 等...
答案1
Get-ADObject
与所有其他 PowerShell cmdlet 一样Get-AD*
,默认情况下仅查询 Active Directory 以获取对象属性的子集。如果您希望它查询非默认属性,则需要使用参数-Properties
。
例如:
Get-ADUser
默认情况下不查询mail
属性;如果您想获取用户的电子邮件地址,则必须运行Get-ADUser -Properties mail
。
对于自定义对象类中的自定义属性来说,情况当然更是如此,因为 PowerShell cmdlet 对此根本一无所知。
尝试添加-Properties bofaAMLMember
到您的命令中,它应该返回包含非标准属性和标准属性的对象。
您还可以使用-Properties *
查询 Active Directory 来获取全部与过滤器匹配的对象中的属性。警告:这可能非常慢,并且可能会对您正在查询的域控制器和您正在运行 PowerShell 的计算机(如果不是 DC 本身)造成很大的负载。Active Directory 对象具有比常用属性更多的属性。