Formatos de saída para os comandos da CLI do Azure

A CLI do Azure utiliza JSON como formato de saída predefinido, mas oferece outros formatos. Utilize o parâmetro --output (--out ou -o) para formatar a saída da CLI. Seguem-se os valores de argumentos e os tipos de saída:

--output Description
json Cadeia de carateres JSON. Esta definição é o padrão
jsonc JSON colorido
yaml YAML, uma alternativa legível ao JSON
yamlc YAML colorido
table Tabela ASCII com chaves como títulos de coluna
tsv Valores separado por tabulações, sem chaves
none Nenhuma saída além de erros e avisos

Formato de saída JSON

O exemplo a seguir mostra a lista de máquinas virtuais nas suas subscrições no formato JSON predefinido.

az vm list --output json

A seguinte saída tem alguns campos omitidos para efeitos de brevidade e as informações de identificação foram substituídas.

[
  {
    "availabilitySet": null,
    "diagnosticsProfile": null,
    "hardwareProfile": {
      "vmSize": "Standard_DS1"
    },
    "id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
    "instanceView": null,
    "licenseType": null,
    "location": "westus",
    "name": "DemoVM010",
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
          "primary": null,
          "resourceGroup": "demorg1"
        }
      ]
    },
          ...
          ...
          ...
]

Formato de saída YAML

O formato yaml imprime a saída como YAML, um formato de serialização de dados de texto simples. O YAML tende a ser mais fácil de ler do que o JSON e facilmente mapeia para esse formato. Algumas aplicações e os comandos da CLI utilizam o YAML como uma entrada de configuração, em vez do JSON.

az vm list --out yaml

A seguinte saída tem alguns campos omitidos para efeitos de brevidade e as informações de identificação foram substituídas.

- availabilitySet: null
  diagnosticsProfile: null
  hardwareProfile:
    vmSize: Standard_DS1_v2
  id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
  identity: null
  instanceView: null
  licenseType: null
  location: westus
  name: ExampleVM1
  networkProfile:
    networkInterfaces:
    - id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
      primary: null
      resourceGroup: DemoRG1
  ...
...

Formato de saída da tabela

O formato table imprime a saída como uma tabela ASCII, o que facilita a leitura e análise. Os objetos aninhados não são incluídos na saída da tabela, mas ainda assim podem ser filtrados como parte de uma consulta. Alguns campos não são incluídos na tabela, pelo que este formato é mais indicado quando quiser uma descrição geral rápida dos dados num formato pesquisável por humanos.

az vm list --out table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Pode utilizar o parâmetro --query para personalizar as propriedades e as colunas que pretende mostrar na saída de lista. O exemplo a seguir mostra como selecionar apenas o Nome da VM e o Nome do Grupo de Recursos no comando list.

az vm list --query "[].{resource:resourceGroup, name:name}" -o table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Nota

Algumas chaves não são impressas na vista de tabela por predefinição. São id, type, e etag. Se precisar delas na sua saída, pode sempre utilizar a funcionalidade de novas chaves JMESPath para alterar o nome da chave e evitar a filtragem.

az vm list --query "[].{objectID:id}" -o table

Para saber mais sobre como utilizar as consultas para filtrar dados, veja Utilizar consultas JMESPath com a CLI do Azure.

Formato de saída TSV

O formato de saída tsv devolve valores separados por tabulações e por novas linhas sem formatações, chaves ou outros símbolos adicionais. Este formato permite consumir facilmente a saída noutros comandos e ferramentas que têm de processar, de alguma forma, o texto. À semelhança do formato table, tsv não imprime objetos aninhados.

Com base no exemplo anterior, a opção tsv gera uma saída de resultados separados por tabulações.

az vm list --out tsv
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    None    None    westus    DemoVM010            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    cbd56d9b-9340-44bc-a722-25f15b578444
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    None    None    westus    demovm212            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    4bdac85d-c2f7-410f-9907-ca7921d930b4
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    None    None    westus    demovm213            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    2131c664-221a-4b7f-9653-f6d542fbfa34
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM    None    None    westus    KBDemo001VM            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    14e74761-c17e-4530-a7be-9e4ff06ea74b
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020   None    None    westus    KBDemo020            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    36baa9-9b80-48a8-b4a9-854c7a858ece

Uma restrição do formato de saída de TSV é que não há uma garantia no pedido de saída. O CLI faz um melhor esforço para preservar o pedido, classificando as teclas na resposta JSON alfabeticamente, e, em seguida, imprimindo os seus valores para a saída de TSV. No entanto, esta não é uma garantia de que a encomenda é sempre idêntica, uma vez que o formato de resposta ao serviço Azure pode mudar.

Para impor encomendas consistentes, terá de utilizar o --query parâmetro e o formato da lista multisselect. Quando um comando CLI retornar um único dicionário JSON, utilize o formato geral [key1, key2, ..., keyN] para forçar uma ordem de chave. Para comandos CLI que retornem uma matriz, utilize o formato geral [].[key1, key2, ..., keyN] para encomendar valores de coluna.

Por exemplo, para encomendar as informações apresentadas acima por ID, localização, grupo de recursos e nome VM:

az vm list --out tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    westus    DEMORG1    DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    westus    DEMORG1    demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    westus    DEMORG1    demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM     westus  RGDEMO001       KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020       westus  RGDEMO001       KBDemo020

O exemplo seguinte mostra de que modo a saída de tsv pode ser enviada para outros comandos em bash. A consulta é usada para filtrar a saída e forçar a encomenda, grep seleciona itens que têm o texto "RGD" neles, então o cut comando seleciona o quarto campo para mostrar o nome do VM na saída.

az vm list --out tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

Definir o formato de saída predefinido

Utilize o az config set comando para configurar o seu ambiente e estabelecer definições predefinidos para formatos de saída. O formato de saída predefinido é json.

az config set core.output=<format>
Welcome to the Azure CLI! This command will guide you through logging in and setting some default values.

Your settings can be found at /home/defaultuser/.azure/config
Your current configuration is as follows:

  ...

Do you wish to change your settings? (y/N): y

What default output format would you like?
 [1] json - JSON formatted output that most closely matches API responses.
 [2] jsonc - Colored JSON formatted output that most closely matches API responses.
 [3] table - Human-readable output format.
 [4] tsv - Tab- and Newline-delimited. Great for GREP, AWK, etc.
 [5] yaml - YAML formatted output. An alternative to JSON. Great for configuration files.
 [6] yamlc - Colored YAML formatted output. An alternative to JSON. Great for configuration files.
 [7] none - No output, except for errors and warnings.
Please enter a choice [1]:

Para saber mais sobre como configurar o seu ambiente, veja Configuração da CLI do Azure.