kkl*_*ger 4 powershell formatting json
结果之间的 Json 转换
> $container=az container list -o json|convertfrom-json
> $container|select name,provisioningstate
Run Code Online (Sandbox Code Playgroud)
输出:
name provisioningState
---- -----------------
master Succeeded
pasbackground1 Succeeded
sftp Succeeded
Run Code Online (Sandbox Code Playgroud)
没有结果之间的 Json 转换
> az container list -o json|convertfrom-json|select name,provisioningstate
Run Code Online (Sandbox Code Playgroud)
输出:
name provisioningstate
---- -----------------
Run Code Online (Sandbox Code Playgroud)
我希望这里得到与上面相同的结果。
为什么保存临时结果会带来与在一行中指定管道命令不同的结果。
默认情况下,运行时引擎在将输出提供给 dowstream cmdlet 时展开(或枚举)所有集合类型
但是,在 v6.x 之前的 PowerShell 版本中,以阻止ConvertFrom-Json运行时枚举结果的方式返回其结果- 因此管道中的下一个 cmdlet 会接收一个数组作为单个管道项。[object[]]
您可以通过多种方式解决此问题:
(az container list -o json |ConvertFrom-Json) |Select Name,ProvisioningState
Run Code Online (Sandbox Code Playgroud)
ForEach-Object在返回时展开数组:az container list -o json |ConvertFrom-Json |ForEach { $_ } |Select Name,ProvisioningState
Run Code Online (Sandbox Code Playgroud)
$containers = az container list -o json |ConvertFrom-Json
$containers |Select Name,ProvisioningState
Run Code Online (Sandbox Code Playgroud)
if($PSVersionTable['PSVersion'].Major -ge 7){
az container list -o json |ConvertFrom-Json |Select Name,ProvisioningState
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |