如何用一行PowerShell代码输出指定格式的哈希表?
一行代码将PowerShell哈希表转为指定格式
你可以用以下一行代码实现需求:
"@{'$($headers.GetEnumerator() | ForEach-Object { if ($_.Name -eq 'Authorization') { "'$($_.Name)'=`"$($_.Value)`"" } else { "'$($_.Name)'='$($_.Value)'" } } -join '; ')}"
解决思路说明
你的原代码存在三个问题:
- 未使用
-join合并输出,导致每个键值对单独分行 - 每个键值对末尾都添加了分号,造成最后一个元素多出冗余分号
- 缺少
@{ }的外层包裹
修正后的代码逻辑:
- 用
GetEnumerator()遍历哈希表的所有键值对 - 针对
Authorization键单独处理值的引号格式(匹配你要求的双引号),其他键统一用单引号包裹值 - 用
-join '; '将所有键值对字符串连接,确保分号只出现在元素之间 - 最后通过字符串拼接添加外层的
@{ }包裹
如果不需要区分引号格式,所有键值对都用单引号的话,代码可以更简洁:
"@{'$($headers.GetEnumerator() | ForEach-Object { "'$($_.Name)'='$($_.Value)'" } -join '; ')}"
内容的提问来源于stack exchange,提问作者Vaccano
相关产品推荐
相关产品推荐

