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

我正尝试使用PowerShell的Active Directory模块在AD LDS实例中使用自定义属性,该实例不是我创build的。 不幸的是,cmdlet Get-ADObject和Set-ADObject没有返回我期望的结果。 实际上,使用PowerShell语言的任何参数都不适用于此属性。 自定义属性的LDAP显示名称为“jenzabar-ICSNET-GenericFlags”。

Get-ADObject如果我在我的Where-Object参数中使用自定义属性,将返回任何结果,即使我知道有很多对象的自定义属性设置为这个值:

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' 

此外,如果我使用该查询,并从结果中selectjenzabar-ICSNET-GenericFlags,那么即使我得到结果,显示自定义属性的列也是空的。 该列甚至不显示括号{},就好像我select了一个未知的属性。 根本没有任何内容。

最后,用于replace自定义属性值的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架构未安装。

提前致谢。

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 }