来自JSON文件的Powershell Out-GridView

时间:2016-05-18 22:21:24

标签: json powershell pipeline

我想加载一个JSON文件并在powershell GridView中显示它。我希望这会奏效:

'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | Out-GridView

但这只是向我展示了这个无益的观点:ogv output 如何将列表转换为网格视图可以理解的内容?

1 个答案:

答案 0 :(得分:7)

('[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json) | Out-GridView

# or

$converted = '[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json 
$converted | Out-GridView

这是ConvertFrom-Json的特性以及任何隐式使用它的东西(如Invoke-RestMethod)。它似乎没有像你期望的那样沿着管道传递对象,所以你必须完成管道来获取对象,然后再使用它们。

一种方法是将其分配给变量,另一种方法是将其包装在括号( )中。

我不确定为什么会出现这种情况,但我认为它是一个关于内部工作以及它如何返回其对象的实现细节。

我试图看看我是否可以更多地了解这一点,使用ForEach-Object查看出现了什么问题,但实际上只是工作了,所以这是获得它的另一种方式工作,但在一个管道中(通过使用多余的ForEach-Object):

'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | ForEach-Object { $_ } | Out-GridView

# non-scrolling
'[{"a":1,"b":2},{"a":3,"b":4},{"a":5,"b":6}]' | ConvertFrom-Json | % { $_ } | ogv