我正在尝试使用适用于 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 架构。
提前致谢。
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)
归档时间: |
|
查看次数: |
1171 次 |
最近记录: |