我正在尝试使用 PowerShell 的 Active Directory 模块来处理 AD LDS 实例中未创建的自定义属性。不幸的是,Get-ADObject 和 Set-ADObject 命令未返回我预期的结果。事实上,使用 PowerShell 语言的任何参数都无法在此属性上工作。自定义属性的 LDAP 显示名称为“jenzabar-ICSNET-GenericFlags”。
如果我在 Where-Object 参数中使用自定义属性,Get-ADObject 不会返回任何结果,尽管我知道有很多对象将此自定义属性设置为此值:
Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' | Where-Object {$_.'jenzabar-ICSNET-GenericFlags' -eq '1'
但是,如果我在过滤参数中使用自定义属性,那么我会看到预期的结果列表:
Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'jenzabar-ICSNET-GenericFlags -eq 1'
此外,如果我使用该查询并从结果中选择 jenzabar-ICSNET-GenericFlags,那么即使我得到了结果,显示自定义属性的列也是空的。该列甚至没有显示括号 {},就好像我选择了未知属性一样。该列中什么都没有。
最后,用于替换自定义属性值的 Set-ADObject 似乎默默失败了。此查询不会产生任何错误或其他消息,但无法修改自定义属性:
Set-ADObject -Server 'localhost:389' -Identity 'CN=Overview,OU=Pages,CN=2014 JA-WTC 600-05,CN=WTC 600,CN=WTC,CN=Academics,CN=Portal,O=Jenzabar,C=US' -Replace @{'jenzabar-ICSNET-GenericFlags'='0'}
我知道肯定存在一些关于我可以在哪些类型的属性上使用 Get-ADObject 和 Set-ADObject cmdlet 的规则,但我不知道这些规则是什么。我不知道如何确定此自定义属性属于哪种属性。未安装 Active Directory 架构。
提前致谢。
答案1
Get-ADObject
仅返回 Active Directory 的属性子集。
您可以使用参数指定附加属性Properties
:
$ADObjectSplat = @{
Server = 'localhost:389'
SearchBase = 'CN=Academics,CN=Portal,O=Jenzabar,C=US'
Properties = 'jenzabar-ICSNET-GenericFlags'
}
Get-ADObject @ADObjectSplat | Where-Object { $_.'jenzabar-ICSNET-GenericFlags' -eq 1 }