PowerShell如何提取并显示花括号内的全部对象与内容?
解决方案
你之前的命令无法得到预期结果,是因为AD模块返回的多值属性默认以集合对象形式存储,直接select只会显示集合类型标识+花括号包裹的预览内容,不会展开所有条目。
方法1:直接展开单属性的所有条目
如果需要提取单个多值属性(比如示例中的PropertyNames)的全部值,使用-ExpandProperty参数展开集合即可:
# 取单个用户的所有PropertyNames条目 Get-ADUser -Filter * -SearchBase "OU=test2OU,DC=corp-auryn,DC=serverlabs,DC=be" | Select-Object -First 1 -ExpandProperty PropertyNames # 取所有用户的所有PropertyNames条目并去重 Get-ADUser -Filter * -SearchBase "OU=test2OU,DC=corp-auryn,DC=serverlabs,DC=be" | Select-Object -ExpandProperty PropertyNames | Select-Object -Unique
方法2:保留用户关联关系,把多值属性转成易读格式
如果需要同时保留用户其他属性,把多值属性拼接为字符串展示,使用计算属性实现:
Get-ADUser -Filter * -SearchBase "OU=test2OU,DC=corp-auryn,DC=serverlabs,DC=be" | Select-Object Name,SamAccountName,@{ Name = '所有属性名' Expression = { $_.PropertyNames -join ',' } }
注意事项
查询AD用户时默认只返回基础属性,如果需要查询其他自定义/扩展属性,要在Get-ADUser后加-Properties <属性名列表>参数,不建议直接用-Properties *,会大幅降低查询效率。
内容的提问来源于stack exchange,提问作者Auryn Vansteenkiste
相关产品推荐
相关产品推荐

