如何返回按其属性名称过滤的Powershell对象属性通配符?

s

我正在尝试使用Get-ADUser查找我不知道其名称的特定扩展属性。在我的组织中,每个AD用户都应该有一个属性字段,该字段指定他们是否已经接受过某个主题的培训,但是我不知道该字段的确切名称。因此,我希望搜索名称中可能包含特定字符串的属性,例如“ titleIX”。

下面的代码不起作用(很显然),但是我希望它能说明我在寻找什么: Get-ADUser -filter 'name -like "johndoe"' -properties * | Where-Object {$_.propertyname -like "*titleIX*"}

在此示例中,希望输出看起来像这样。trngTitleIXDone: Yes那时,我知道该字段称为“ trngTitleIXDone”,并且可以以我喜欢的方式继续使用该字段作为我要生成的实际报告。

我意识到我可能需要更多的管道命令来实现我正在寻找的实际过滤,而不只是与一个对象相关联的属性的完整列表,而该对象具有一个名称与查询匹配的属性。

谢谢,请告诉我是否需要更好地说明自己。==马特

PS根据要求提供更多背景信息:

问:您不能问您的管理员,还是在ADUC中找到它?
答:组织非常庞大,并且有很多未记录的自定义属性(以我可以访问的方式)。获得这些信息,甚至找到合适的人要比自己找到它要花费更多的时间。我想知道这种技能,以防万一再次出现,这样我就可以避免下次的延迟。

至于ADUC,我不清楚确切返回属性的逻辑,但我的理解是,我要查找的属性具有某种分类,可以防止它们被返回,除非您特别指定按名称定位他们。简单使用properties *不会返回我要查找的内容,并且ADUC中列出的属性或多或少是同一数据集。

s

最后,由于自定义AD属性的工作方式的奥秘细节,我发现我对自己的问题提出了错误的答案,而我对此并不完全了解。感谢@ LotPings,@ Theo和@TheMadTechnician的评论,阐明了各种可能性。

现在的问题,如问,可能是由最密切回答@ Lee_Dailey的有关PSObjects的隐藏属性(.PSObject),其子属性(的.properties,并评论子属性,.name和.value的,等等)。虽然我目前没有一个有效的答案,但是我敢肯定,有一种编程方式可以使用它们来迭代给定对象的未知属性。

至于我的问题,由于两个主要原因,我无法轻松返回要迭代的属性列表:

1)即使从Get-AD * cmdlet请求所有属性(例如Get-ADUser -filter 'name -like "johndoe"' -properties *),也仅返回具有非空(即未设置)值的属性(即属性)。AD永远不会为给定对象返回此类属性,因为它们在对象中不存在。要返回模式中可用但在给定对象中未使用可能属性的列表,您必须(显然)查询模式本身。

在模式中查询可能的属性:

Select-Object @{n="Attributes";e={$_.maycontain + $_.systemmaycontain}} | 
Select-Object -ExpandProperty Attributes |
Sort-Object

来源:
https : //social.technet.microsoft.com/Forums/windowsserver/en-US/8da2aa4e-5ae6-47d9-ac1b-159e5e3f2612/pull-all-user-attributes-with-powershell?forum=winserverpowershell(感谢@LotPings)
https://blogs.technet.microsoft.com/poshchap/2017/09/22/one-liner-query-the-ad-schema-for-user-object-attributes/(感谢@Theo)

2)显然,除非为对象设置了属性,但即使是为自定义设置的属性(即不是默认属性或扩展属性集的一部分),也绝不会返回该属性。从Get-ADUser的详细帮助文件中:
To specify an individual extended property, use the name of the property. For properties that are not default or extended properties, you must specify the LDAP display name of the attribute.

就我而言,似乎(至少某些)组织定制属性实际上是由request返回的-properties *,这使我认为,在我的环境中,它们已经以某种方式专门配置为扩展集的一部分,如果那是可能。如果是这种情况,可能有一些未以这种方式配置的自定义属性,这将使得很难知道对象上可能设置了哪些架构可用属性,但是需要按名称请求。为了确定这一点,我可以遍历所有可能的属性,全部请求它们,并将结果与​​扩展集进行比较。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章