gpt4 book ai didi

json - 仅当保存到变量时,powershell json转换问题才能纠正结果

转载 作者:行者123 更新时间:2023-12-02 23:17:24 25 4
gpt4 key购买 nike

Json转换,结果之间为

> $container=az container list -o json|convertfrom-json
> $container|select name,provisioningstate

输出:
name           provisioningState
---- -----------------
master Succeeded
pasbackground1 Succeeded
sftp Succeeded

Json转换,结果之间不存在
> az container list -o json|convertfrom-json|select name,provisioningstate

输出:
 name provisioningstate
---- -----------------

我希望在这里得到与上述相同的结果。

为什么保存临时结果会带来与在行中指定管道命令不同的结果。

最佳答案

默认情况下,运行时引擎在将输出提供给dowstream cmdlet时会展开(或枚举)所有集合类型

但是,PowerShell v6.x及更高版本中的ConvertFrom-Json以防止运行时枚举它们的方式返回结果-因此,管道中的下一个cmdlet将作为单个管道项接收[object[]]数组。

您可以通过多种方式解决此问题:

  • 嵌套初始管道:

  • (az container list -o json |ConvertFrom-Json) |Select Name,ProvisioningState
  • ForEach-Object在返回时展开数组:

  • az container list -o json |ConvertFrom-Json |ForEach { $_ } |Select Name,ProvisioningState
  • 使用中间变量(如您所见):

  • $containers = az container list -o json |ConvertFrom-Json 
    $containers |Select Name,ProvisioningState
  • 升级到较新版本的PowerShell
  • 在PowerShell [Core] 7.0中更改了默认行为

  • if($PSVersionTable['PSVersion'].Major -ge 7){
    az container list -o json |ConvertFrom-Json |Select Name,ProvisioningState
    }

    关于json - 仅当保存到变量时,powershell json转换问题才能纠正结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61411805/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com