如何通过简单PowerShell命令将MsGraph Cmdlet输出的Id属性与AdditionalProperties哈希表指定键值对格式化输出为表格
解决方案:整合Id与AdditionalProperties为格式化表格
我明白你想要的是把MgGraph Cmdlet返回对象的Id属性,和AdditionalProperties哈希表里的指定键值对整合到一个整洁的表格里,同时也想处理Select -Expand AdditionalProperties后的输出格式问题。这里有几个实用的PowerShell写法,直接就能用:
1. 直接提取Id+指定AdditionalProperties字段为表格
你可以用Select-Object结合计算属性,直接从原对象中同时提取Id和AdditionalProperties里的目标字段,输出就是标准表格格式:
Get-MgUserMemberOf -UserId 6774992b-24c1-4df6-95aa-7edc66bb4d70 | Where {$_.AdditionalProperties['displayName'] -like "BlaBlaBla*"} | Select-Object Id, @{Name='displayName'; Expression={$_.AdditionalProperties['displayName']}}, @{Name='mailEnabled'; Expression={$_.AdditionalProperties['mailEnabled']}}
执行后就会得到你想要的输出:
Id displayName mailEnabled -- ----------- ----------- b11f441c-cbb1-435a-bb0a-ff6aad6143e3 BlaBlaBlaBlaBlaBla False
如果需要添加更多字段,比如description或者securityEnabled,只需要在Select-Object后面再加一行类似的计算属性即可。
2. 批量处理多个字段(更高效的写法)
如果需要提取的字段比较多,手动写一堆计算属性太麻烦,可以先定义要提取的字段列表,再动态生成计算属性:
# 定义你想要提取的AdditionalProperties字段 $targetFields = 'displayName', 'mailEnabled', 'description', 'securityEnabled' # 生成计算属性数组 $calculatedProps = $targetFields | ForEach-Object { @{Name=$_; Expression={$_.AdditionalProperties[$_]}} } # 执行主命令 Get-MgUserMemberOf -UserId 6774992b-24c1-4df6-95aa-7edc66bb4d70 | Where {$_.AdditionalProperties['displayName'] -like "BlaBlaBla*"} | Select-Object Id, $calculatedProps
这样以后要调整字段,只需要修改$targetFields数组就行,非常灵活。
3. 处理Select -Expand AdditionalProperties后的输出
当你用Select -Expand AdditionalProperties后,得到的是键值对格式的表格,要转换成横向的标准对象表格,可以把哈希表转换成PSCustomObject:
Get-MgUserMemberOf -UserId 6774992b-24c1-4df6-95aa-7edc66bb4d70 | Where {$_.AdditionalProperties['displayName'] -like "atic.azure.licenzas*"} | Select -Expand AdditionalProperties | ForEach-Object { [PSCustomObject]$_ } | Select displayName, mailEnabled, description, securityIdentifier
执行后就会输出横向的格式化表格,方便查看和后续处理。
这些写法都是PowerShell处理哈希表和自定义输出的常用技巧,完全适配MsGraph的返回结果,你可以根据自己的需求调整字段和筛选条件~
内容的提问来源于stack exchange,提问作者Luis A.
相关产品推荐
相关产品推荐

