来自JSON文件的Powershell Out-GridView

jtb*_*jtb 4 powershell json pipeline

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

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

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

bri*_*ist 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
Run Code Online (Sandbox Code Playgroud)

这是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
Run Code Online (Sandbox Code Playgroud)