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
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/