Formáty výstupu pro příkazy Azure CLI

Azure CLI jako výchozí výstupní formát používá JSON, ale nabízí i jiné formáty. K formátování výstupu CLI použijte parametr --output (--out nebo -o). Hodnoty argumentu a typy výstupu:

--output Description
json Řetězec ve formátu JSON. Toto nastavení je výchozí.
jsonc Barevný kód JSON
yaml YAML, alternativu pro čtení člověka k JSON
yamlc Barevné YAML
table Tabulka ASCII s klíči jako záhlaví sloupců
tsv Hodnoty oddělené tabulátorem, bez klíčů.
none Žádný jiný výstup než chyby a upozornění

Výstupní formát JSON

Následující příklad zobrazuje seznam virtuálních počítačů ve vašich předplatných ve výchozím formátu JSON.

az vm list --output json

V následujícím výstupu byla pro zkrácení vynechána některá pole a nahrazeny identifikující informace.

[
  {
    "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"
        }
      ]
    },
          ...
          ...
          ...
]

Výstupní formát YAML

yaml vytiskne výstup jako YAML (formát serializace dat v prostém textu). YAML se obvykle čte snáze než JSON a na tento formát se snadno mapuje. Některé aplikace a příkazy rozhraní příkazového řádku přijímají YAML jako vstup konfigurace (místo formátu JSON).

az vm list --out yaml

V následujícím výstupu byla pro zkrácení vynechána některá pole a nahrazeny identifikující informace.

- 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
  ...
...

Výstupní formát tabulky

Ve formátu table se výstup vytiskne jako tabulka ASCII, což usnadňuje čtení a prohledávání. Vnořené objekty nejsou do výstupu tabulky zahrnuté, ale je možné je vyfiltrovat jako součást dotazu. Některá pole se také do tabulky dat nezahrnují. Tento formát je proto vhodný, pokud chcete rychlý přehled dat, ve kterém se dá snadno orientovat.

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

Pomocí parametru --query můžete upravit vlastnosti a sloupce, které chcete zobrazit ve výstupu příkazu. Následující příklad ukazuje, jak v příkazu list vybrat pouze název virtuálního počítače a název skupiny prostředků.

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

Poznámka

Některé klíče se v zobrazení tabulky ve výchozím nastavení nevytisknou. Jsou to id, type a etag. Pokud je potřebujete zahrnout do výstupu, můžete využít překlíčovací funkci JMESPath ke změně názvu klíče a vyhnout se tak filtrování.

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

Další informace o použití dotazů k filtrování dat najdete v tématu Použití dotazů JMESPath v Azure CLI.

Výstupní formát TSV

Výstupní formát tsv vrací hodnoty oddělené tabulátorem a znakem nového řádku, a to bez dalšího formátování, klíčů nebo jiných symbolů. Tento formát umožňuje jednoduše využít výstup v dalších příkazech a nástrojích, které potřebují zpracovat text v určitém formátu. Podobně jako ve formátu table se ani ve formátu tsv netisknou vnořené objekty.

Pokud použijeme předchozí příklad s možností tsv, výstupem bude výsledek oddělený tabulátory.

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

Jedním z omezení výstupního formátu TSV je, že neexistuje záruka pro řazení výstupu. Rozhraní příkazového řádku se snaží zachovat pořadí řazení pomocí klíčů v abecedním formátu JSON odpovědi a pak tisknout jejich hodnoty pro výstup TSV. Nejedná se o záruku, že objednávka je vždy stejná, protože formát odpovědi služby Azure se může změnit.

Abyste mohli vynutit konzistentní řazení, budete muset použít --query parametr a formát seznamu s vícenásobným výběrem . Když příkaz rozhraní příkazového řádku vrátí jeden slovník JSON, použijte obecný formát [key1, key2, ..., keyN] k vynucení pořadí klíčů. Pro příkazy rozhraní příkazového řádku, které vracejí pole, použijte obecný formát [].[key1, key2, ..., keyN] k seřazení hodnot sloupců.

Pokud chcete například uspořádat informace zobrazené výše podle ID, umístění, skupiny prostředků a názvu virtuálního počítače:

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

Další příklad ukazuje, jak se výstup tsv dá předat dalším příkazům v Bashi. Dotaz slouží k filtrování výstupu a vynucení řazení, grep vybere položky s textem "RGD" a pak cut příkaz vybere čtvrté pole, které zobrazí název virtuálního počítače ve výstupu.

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

Nastavení výchozího formátu výstupu

az config set Pomocí příkazu nastavte prostředí a nastavte výchozí nastavení pro výstupní formáty. Výchozí formát výstupu je 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]:

Viz také