Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 格式化docker事件的json输出_Powershell_Docker_Jq - Fatal编程技术网

Powershell 格式化docker事件的json输出

Powershell 格式化docker事件的json输出,powershell,docker,jq,Powershell,Docker,Jq,我希望docker事件输出更具可读性。 我在Windows10Pro上,在powershell上运行此命令 docker事件--格式为“{json.}” 在不同的shell中创建新容器时 docker create mcr.microsoft.com/dotnet/core/sdk:3.1 我在第一个shell中获得了一些json格式的输出。看起来是这样的 {“状态”:“创建”,“id”:“7897095C22919BCDCF39612386BED63296BC33BE250445E6069BF

我希望docker事件输出更具可读性。 我在Windows10Pro上,在powershell上运行此命令

docker事件--格式为“{json.}”

在不同的shell中创建新容器时

docker create mcr.microsoft.com/dotnet/core/sdk:3.1

我在第一个shell中获得了一些json格式的输出。看起来是这样的

{“状态”:“创建”,“id”:“7897095C22919BCDCF39612386BED63296BC33BE250445E6069BF4FE90CE37”,“发件人”:“mcr.microsoft.com/dotnet/core/sdk:3.1”,“类型”:“容器”,“操作”:“创建”,“参与者”:{“id”:“7897095C22919BCDCF39612386BED63296BC33BE250445E6069BF4FE90CE37”,“属性”:{“图像”:“mcr.microsoft.com/dotnet/core/sdk:3.1”,“名称”:“目标”},“范围”:“本地”,“时间”:1585135301,“时间纳米”:1585135301351718800}

我的问题是,有没有更好的方式来格式化它?我应该对命令做什么

docker事件--格式为“{json.}”

以便以更可读的方式对其进行格式化。是否有一些东西可以通过管道传输该输出,使其看起来像下面这样。我使用了一些在线格式化程序来实现这一点

更新

现在问题解决了

根据@Vijay的,我首先安装了。这些步骤是:

  • 以管理员身份运行powershell

  • 执行命令

  • 打开一个新的命令提示符NOTpowershell。不知何故,电源外壳不起作用

  • 发出一个命令来听

  • 如果必须输出,请使用命令。还附加jq如下。请注意,双引号(“)。单引号(')不起作用

  • docker事件--格式为“{json.}}”| jq

  • 打开另一个提示符并运行以下命令。如果愿意,这可以是powershell
  • docker run hello world

  • 您现在应该可以实时看到格式化的json输出流

  • 您只需通过管道将
    jq
    发送到
    docker events
    命令

    docker events --format '{{json .}}' | jq
    

    使用第一个答案形式:

    结果:

    {
      "status": "create",
      "id": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
      "from": "mcr.microsoft.com/dotnet/core/sdk:3.1",
      "Type": "container",
      "Action": "create",
      "Actor": {
        "ID": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
        "Attributes": {
          "image": "mcr.microsoft.com/dotnet/core/sdk:3.1",
          "name": "objective_bhaskara"
        }
      },
      "scope": "local",
      "time": 1585135301,
      "timeNano": 1585135301351718800
    }
    

    你可以使用我发布的
    格式Json
    函数。你也可以在该命令中添加
    |ConvertFrom Json | ConvertTo Json
    。这回答了你的问题吗?输出有点流,所以它们不起作用。一旦我使用管道,然后我使用jq或ConvertFrom Json等等,就没有输出了*有点流“不是showstopper,您可以使用括号停止流(并将完整的
    json
    文件加载到内存中),或者将流分配给变量。我想我需要先安装jq。让我查一查。我得到了jq:术语“jq”不能被识别为cmdlet、函数、脚本文件或可操作程序的名称。是的。。。一旦你这样做了,它只会给你预期的输出。安装,但没有输出来,不知道我为什么管道通过jq我没有得到输出。因此,这不会给出任何输出docker事件——格式为“{json.}}”| jqTwo点。单一报价不起作用。只有双引号。此外,powershell也不起作用。只有简陋的命令提示符。
    {
      "status": "create",
      "id": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
      "from": "mcr.microsoft.com/dotnet/core/sdk:3.1",
      "Type": "container",
      "Action": "create",
      "Actor": {
        "ID": "7897095c22919bcdcf39612386bebed63296bc33be250445e6069bf4fe90ce37",
        "Attributes": {
          "image": "mcr.microsoft.com/dotnet/core/sdk:3.1",
          "name": "objective_bhaskara"
        }
      },
      "scope": "local",
      "time": 1585135301,
      "timeNano": 1585135301351718800
    }