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