如何用PowerShell正确提取JSON的tactics数组并输出逗号分隔值?
调整PowerShell代码实现数组的逗号分隔输出
我有如下JSON数据,尝试用PowerShell提取其中的tactics数组,但输出不符合预期:原本需要逗号分隔的形式,实际却是空格分隔的结果。
JSON数据:
{ "displayName": "travel with mailbox permission", "tactics": [ "InitialAccess", "PrivilegeEscalation" ], "techniques": [ "T1078", "T1548" ] }
原PowerShell代码:
param ( [Parameter(Mandatory = $true)] # 存储资源详情的变量名称 [string] $jsonvariable ) $json = Get-AutomationVariable -Name $jsonvariable $jsonObject = ConvertFrom-Json -InputObject $json echo $jsonObject.tactics
输出对比:
- 预期输出:
InitialAccess,PrivilegeEscalation - 实际输出:
InitialAccess PrivilegeEscalation
问题原因
直接输出数组时,PowerShell默认会将数组元素以空格分隔输出,这是控制台输出的默认格式化逻辑。
修改后的代码
要得到逗号分隔的字符串,只需使用-join ','操作符将数组元素拼接起来,修改后的代码如下:
param ( [Parameter(Mandatory = $true)] # 存储资源详情的变量名称 [string] $jsonvariable ) $json = Get-AutomationVariable -Name $jsonvariable $jsonObject = ConvertFrom-Json -InputObject $json # 将数组元素用逗号拼接后输出 echo ($jsonObject.tactics -join ',')
说明
-join ','会把tactics数组中的每个元素用逗号连接成一个单一字符串,这样输出就会符合预期的逗号分隔格式。
内容的提问来源于stack exchange,提问作者dev333
相关产品推荐
相关产品推荐

