PowerShell Get-ADObject 和 Set-ADObject 的 Active Directory 模块不适用于自定义属性

Mas*_*one 3 powershell ad-lds

我正在尝试使用适用于 PowerShell 的 Active Directory 模块在我未创建的 AD LDS 实例中使用自定义属性。不幸的是,cmdlet 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'
Run Code Online (Sandbox Code Playgroud)

但是,如果我在过滤器参数中使用自定义属性,则会看到预期的结果列表:

Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'jenzabar-ICSNET-GenericFlags -eq 1'
Run Code Online (Sandbox Code Playgroud)

此外,如果我使用该查询并从结果中选择 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'}
Run Code Online (Sandbox Code Playgroud)

我知道必须有一些关于我可以在哪些属性上使用 Get-ADObject 和 Set-ADObject cmdlet 的规则,但我不知道这些规则是什么。我不知道如何确定这个自定义属性是什么类型的属性。未安装 Active Directory 架构。

提前致谢。

Mat*_*sen 5

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 }
Run Code Online (Sandbox Code Playgroud)