Utdataformat för Azure CLI-kommandon

Azure CLI använder JSON som standardutdataformat, men kan även använda andra format. Använd parametern --output (--out eller -o) för att formatera CLI-utdata. Argumentvärden och utdatatyper är:

--resultat beskrivning
json JSON-sträng. Den här inställningen är standardinställningen
jsonc Färglagd JSON
table ASCII-tabell med nycklar som kolumnrubriker
tsv Tabbavgränsade värden, utan nycklar
yaml YAML, ett läsbart alternativ till JSON
yamlc Färglagd YAML
none Inga utdata förutom fel och varningar

Varning

Använd utdataformatet none eller lagra kommandoutdata i en variabel för att undvika att exponera hemligheter som API-nycklar och autentiseringsuppgifter. Obs! Vissa CI/CD-miljöer kan lagra utdata från de körda kommandona i loggar. Det är en bra idé att bekräfta vad som skrivs i loggfilerna och vem som har åtkomst till loggarna. Mer information finns i Inget utdataformat.

JSON-utdataformat (standard)

I följande exempel visas listan över virtuella datorer i dina prenumerationer i JSON-standardformatet.

az vm list --output json

I följande utdata har vissa fält utelämnats av utrymmesskäl och identifieringsinformation har ersatts.

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

Format för YAML-utdata

yaml-formatet skriver ut utdata som YAML, ett oformaterat dataserialiseringsformat. YAML kan vara lättare att läsa än JSON, och mappas enkelt till det formatet. Vissa program och CLI-kommandon tar YAML som konfigurationsindata, i stället för JSON.

az vm list --output yaml

I följande utdata har vissa fält utelämnats av utrymmesskäl och identifieringsinformation har ersatts.

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

Format för tabellutdata

Formatet table skriver ut utdata som en ASCII-tabell, vilket gör dem enkla att läsa och söka igenom. Kapslade objekt ingår inte i tabellutdata, men kan fortfarande filtreras som en del av en fråga. Vissa fält finns inte i tabellen, så det här formatet passar bäst om du vill ha en snabb sökbar översikt över data.

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

Du kan använda parametern --query för att anpassa egenskaperna och kolumnerna du vill visa i bland listans utdata. I följande exempel visas hur du ska välja bara VM-namnets och resursgruppens namn i kommandot list.

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

Kommentar

Vissa nycklar skrivs som standard inte ut i tabellvyn. Dessa är id, type och etag. Om du behöver se dessa i dina utdata kan du använda JMESPath-nyckelfunktionen för att ändra nyckelnamnet och undvika filtrering.

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

Mer information om hur du använder frågor för att filtrera data finns i Använda JMESPath-frågor med Azure CLI.

Format för TSV-utdata

Utdataformatet tsv returnerar tab- och newline-avgränsade värden utan extra formatering, nycklar eller andra symboler. I det här formatet är det enkelt att använda utdata i andra kommandon och verktyg som behöver bearbeta texten i någon form. Liksom formatet table skriver tsv inte ut kapslade objekt.

Om du använder följande exempel med alternativet tsv matas det tabbavgränsade resultatet ut.

az vm list --output 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

En begränsning i TSV-utdataformatet är att det inte finns någon garanti för utdataordning. CLI gör sitt bästa för att bevara ordningen genom att sortera nycklar i svaret JSON alfabetiskt och sedan skriva ut sina värden i ordning för TSV-utdata. Det finns ingen garanti för att ordningen alltid är identisk eftersom Svarsformatet för Azure-tjänsten kan ändras.

För att framtvinga konsekvent ordning måste du använda parametern --query och listformatet multiselect. När ett CLI-kommando returnerar en enda JSON-ordlista använder du det allmänna formatet [key1, key2, ..., keyN] för att tvinga fram en nyckelordning. För CLI-kommandon som returnerar en matris använder du det allmänna formatet [].[key1, key2, ..., keyN] för att sortera kolumnvärden.

Om du till exempel vill beställa informationen som visas ovan efter ID, plats, resursgrupp och VM-namn:

az vm list --output 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

I nästa exempel visas hur tsv-utdata kan skickas till andra kommandon i Bash. Frågan används för att filtrera utdata och tvinga ordning, grep väljer objekt som har texten "RGD" i sig och sedan cut väljer kommandot det fjärde fältet för att visa namnet på den virtuella datorn i utdata.

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

Utdataformatet tsv används ofta när du tilldelar värden till variabler. Det här exemplet hämtar det aktiva prenumerations-ID:t och lagrar det i en variabel för användning i ett skript.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

Fler --query parameterexempel finns i Köra frågor mot Azure CLI-kommandoutdata.

Inget utdataformat

Vissa Azure CLI-kommandon matar ut information som du måste skydda. Här är fyra exempel:

  • Lösenord
  • anslutningssträngar
  • secrets
  • keys

Om du vill skydda hemligheter och nycklar när du använder Azure CLI-kommandon väljer du något av följande alternativ:

Alternativ Förmån Användningsfall
--output none Utdataformat Hindrar känslig information från att visas i konsolen. Om kommandot misslyckas får du fortfarande felmeddelanden. 1. Använd när kommandoutdata kan hämtas vid ett senare tillfälle.
2. Använd när du inte behöver utdata.
3. Ett vanligt val när en hanterad identitet eller ett huvudnamn för tjänsten används för att hantera Azure-resurser.
--query Parametern Lagrar utdata i en variabel. 1. Använd när kommandoutdata inte kan hämtas vid ett senare tillfälle.
2. Använd när du behöver använda ett kommandoutdatavärde i ett skript.

Använda none och hämta säkerhetsinformation vid ett senare tillfälle

Vissa Azure-hemligheter kan hämtas vid ett senare tillfälle. Ett bra exempel är hemligheter som lagras i Azure Key Vault. I det här exemplet skapar du en Azure Key Vault-hemlighet med hjälp av az keyvault secret set med alternativet --output none . Du kan hämta hemligheten senare med kommandot az keyvault secret show .

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Använda --query och returnera säkerhetsinformation till en variabel

Användningen av --query för att lagra utdata i en variabel är tekniskt sett inte ett utdataformat. Det är en lösning för att skydda hemligheter och är ett alternativ till att använda --output none. När du till exempel återställer en autentiseringsuppgift för tjänstens huvudnamn kan lösenordet inte hämtas igen.

Återställ en autentiseringsuppgift för tjänstens huvudnamn som returnerar utdata i json-standardformatet:

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

Konsolutdata som visar det nya lösenordet i konsolen.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

En bättre lösning är att returnera känslig information till en variabel.

# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)

# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"

Fler exempel på hur du lagrar utdata till en variabel finns i Använda Azure CLI – skicka värden till ett annat kommando. Mer information om --query parametersyntax finns i Köra frågor mot Azure CLI-kommandoutdata.

Ange standardutdataformatet

Azure CLI-kommandon ger utdata som kan styras på två sätt:

Utdatakontroll Förmån Så här gör du
Global inställning Välj ett standardutdatavärde som du använder mest så att du inte kontinuerligt behöver ange en --output parameter för varje referenskommando. Ange ett standardutdataformat med az config set.
Kommandoparameter Ange utdata på kommandonivå och ge skripten maximal flexibilitet. Du styr konsolens utdata och variabelindata för varje referenskommando. Åsidosätt standardinställningen med hjälp av parametern för ett referenskommando --output .

Standardutdata för Azure CLI är json. Ange standardutdata till none när konsolutdata inte behövs.

az config set core.output=none

Du kan skriva över standardutdata för alla Azure CLI-referenskommandon med hjälp av parametern --output . Här är ett skript med kommandon som ändrar och testar kommandoutdata:

# set your default output to table
az config set core.output=table

# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show

# override your table default and show your active subscription in jsonc format
az account show --output jsonc

# reset your default output to json
az config set core.output=json

Se även