Uitvoerindelingen voor Azure CLI-opdrachten

De Azure CLI gebruikt JSON als standaarduitvoerindeling, maar biedt ook andere indelingen. Gebruik de parameter --output (--out of -o) om de CLI-uitvoer op te maken. De argumentwaarden en -typen van de uitvoer zijn:

--output Description
json JSON-tekenreeks. Deze instelling is de standaardinstelling
jsonc Gekleurde JSON
yaml YAML, een door mensen leesbaar alternatief voor JSON
yamlc Gekleurde YAML
table ASCII-tabel met sleutels als kolomkoppen
tsv Door tabs gescheiden waarden, geen sleutels.
none Geen andere uitvoer dan fouten en waarschuwingen

JSON-uitvoer

In het volgende voorbeeld wordt de lijst met virtuele machines in uw abonnementen weergegeven in de standaard-JSON-indeling.

az vm list --output json

Kortheidshalve zijn in de volgende uitvoer bepaalde velden weggelaten. Ook zijn identificatiegegevens vervangen.

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

De uitvoerindeling YAML

In de indeling yaml wordt de uitvoer gegenereerd als YAML, een serialisatie-indeling voor gegevens die bestaan uit tekst zonder opmaak. YAML is doorgaans gemakkelijker te lezen dan JSON en kan eenvoudig worden omgezet in die indeling. Sommige toepassingen en CLI-opdrachten gebruiken YAML als configuratie-invoer, in plaats van JSON.

az vm list --out yaml

Kortheidshalve zijn in de volgende uitvoer bepaalde velden weggelaten. Ook zijn identificatiegegevens vervangen.

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

Tabeluitvoer

De table-indeling genereert uitvoer als een ASCII-tabel, waardoor deze eenvoudig te lezen en te scannen is. Tabeluitvoer bevat geen geneste objecten, maar hierop kan wel worden gefilterd met behulp van een query. In de tabel zijn niet alle velden opgenomen. Deze indeling is dan ook vooral geschikt als u een snel, handmatig goed doorzoekbaar overzicht van uw gegevens nodig hebt.

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

U kunt de parameter --query gebruiken om de eigenschappen en kolommen die u in de lijstuitvoer wilt weergeven, aan te passen. Het volgende voorbeeld laat zien hoe u slechts de VM-naam en de naam van de resourcegroep selecteert in de opdracht list.

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

Notitie

Sommige sleutels worden niet standaard opgenomen in de tabelweergave. Dit zijn de sleutels id, type en etag. Als u deze sleutels wel in de uitvoer wilt opnemen, kunt u de JMESPath-functie voor het opnieuw instellen van sleutels gebruiken om de sleutelnaam te wijzigen en zo te voorkomen dat u moet filteren.

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

Raadpleeg JMESPath-query's gebruiken met de Azure CLI voor meer informatie over het gebruik van query's om gegevens te filteren.

TSV-uitvoer

De uitvoerindeling tsv retourneert door tabs en nieuwe regels gescheiden waarden zonder extra opmaak, sleutels of andere symbolen. Deze indeling maakt het eenvoudig om de uitvoer op te nemen in andere opdrachten en hulpmiddelen die de tekst in enige vorm moeten verwerken. Net als de table-indeling genereert tsv geen geneste objecten.

Als u het voorgaande voorbeeld gebruikt met de optie tsv, worden de resultaten uitgevoerd gescheiden door tabs.

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

Een beperking van de TSV-uitvoerindeling is dat er geen garantie is voor het bestellen van uitvoer. De CLI doet er alles aan om de volgorde te behouden door sleutels in de antwoord-JSON alfabetisch te sorteren en vervolgens de waarden af te drukken op TSV-uitvoer. Dit is echter geen garantie dat de order altijd identiek is, omdat de reactie-indeling van de Azure-service kan veranderen.

Als u consistente volgorde wilt afdwingen, moet u de parameter en de --query lijstindeling voor meervoudige selectie gebruiken. Wanneer een CLI-opdracht één JSON-woordenlijst retourneert, gebruikt u de algemene indeling om [key1, key2, ..., keyN] een sleutelorder af te dwingen. Gebruik voor CLI-opdrachten die een matrix retourneren de algemene indeling om [].[key1, key2, ..., keyN] kolomwaarden te ordeden.

Als u bijvoorbeeld de bovenstaande informatie wilt orden op id, locatie, resourcegroep en VM-naam:

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

Het volgende voorbeeld laat zien hoe tsv-uitvoer kan worden doorgesluisd naar andere opdrachten in bash. De query wordt gebruikt om uitvoer te filteren en volgorde af te dwingen, selecteert items met de tekst 'RGD' en vervolgens selecteert de opdracht het vierde veld om de naam van de VM in de uitvoer weer grep cut te geven.

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

De standaarduitvoerindeling instellen

Gebruik de az config set opdracht om uw omgeving in te stellen en standaardinstellingen voor uitvoerindelingen tot stand te brengen. De standaarduitvoerindeling is 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]:

Raadpleeg Configuratie van Azure CLI voor meer informatie over het configureren van uw omgeving.