Formati di output per i comandi dell'interfaccia della riga di comando di Azure
L'interfaccia della riga di comando di Azure usa JSON come formato di output predefinito, ma offre anche altri formati. Usare il parametro --output
(--out
o -o
) per formattare l'output dell'interfaccia della riga di comando. I valori degli argomenti e i tipi di output sono i seguenti:
--output | Descrizione |
---|---|
json |
Stringa JSON. Questa è l'impostazione predefinita |
jsonc |
Stringa JSON colorata |
table |
Tabella ASCII con chiavi come intestazioni di colonna |
tsv |
Valori delimitati da tabulazioni, senza chiavi |
yaml |
YAML, un'alternativa leggibile a JSON |
yamlc |
YAML colorato |
none |
Nessun output oltre a errori e avvisi |
Avviso
Usare un formato di output di o archiviare l'output dei none
comandi in una variabile per evitare di esporre segreti, ad esempio chiavi API e credenziali. Nota: alcuni ambienti CI/CD possono archiviare l'output dei comandi eseguiti nei log. È consigliabile verificare ciò che viene scritto in tali file di log e chi può accedere ai log.
Per altre informazioni, vedere Formato di output none.
Formato di output JSON (impostazione predefinita)
L'esempio seguente mostra l'elenco di macchine virtuali nelle proprie sottoscrizioni nel formato JSON predefinito.
az vm list --output json
Nell'output seguente sono stati omessi alcuni campi per brevità e le informazioni di identificazione sono state sostituite.
[
{
"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 di output YAML
Il formato yaml
stampa l'output come YAML, un formato di serializzazione dei dati in testo normale. YAML tende a essere più facile da leggere rispetto a JSON, a cui può comunque essere eseguito facilmente il mapping. Alcune applicazioni e alcuni comandi dell'interfaccia della riga di comando accettano YAML come input di configurazione invece di JSON.
az vm list --output yaml
Nell'output seguente sono stati omessi alcuni campi per brevità e le informazioni di identificazione sono state sostituite.
- 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 dell'output della tabella
Il formato table
stampa l'output come tabella ASCII, facilitando la lettura e l'analisi. Gli oggetti annidati non sono inclusi nell'output della tabella, ma possono comunque essere filtrati come parte di una query. Alcuni campi non sono inclusi nella tabella, quindi questo formato è ottimale quando si vuole una panoramica rapida dei dati nella quale gli utenti possono eseguire ricerche.
az vm list --output table
Name ResourceGroup Location
----------- --------------- ----------
DemoVM010 DEMORG1 westus
demovm212 DEMORG1 westus
demovm213 DEMORG1 westus
KBDemo001VM RGDEMO001 westus
KBDemo020 RGDEMO001 westus
È possibile usare il parametro --query
per personalizzare le proprietà e le colonne che si desidera mostrare nell'output. L'esempio seguente mostra come selezionare solo il nome della macchina virtuale e il nome del gruppo di risorse nel comando list
.
az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource Name
---------- -----------
DEMORG1 DemoVM010
DEMORG1 demovm212
DEMORG1 demovm213
RGDEMO001 KBDemo001VM
RGDEMO001 KBDemo020
Nota
Per impostazione predefinita, alcune chiavi non vengono stampate nella visualizzazione tabella. Si tratta di id
, type
e etag
. Se è necessario includerle nell'output, è possibile usare la funzionalità JMESPath per il reinserimento delle chiavi in modo da modificare il nome delle chiavi ed evitare i filtri.
az vm list --query "[].{objectID:id}" --output table
Per altre informazioni sull'uso delle query per filtrare i dati, vedere Usare query JMESPath con l'interfaccia della riga di comando di Azure.
Formato TSV dell'output
Il tsv
formato di output restituisce valori separati da tabulazione e nuova riga senza formattazione aggiuntiva, chiavi o altri simboli. Questo formato consente di usare agevolmente l'output in altri comandi e strumenti che devono elaborare il testo in una determinata forma. Come il formato table
, tsv
non stampa gli oggetti annidati.
Se si usa l'esempio precedente con l'opzione tsv
si genera il risultato separato da tabulazioni.
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
Una restrizione del formato di output TSV è che non esiste alcuna garanzia relativa all'ordinamento dell'output. L'interfaccia della riga di comando si impegna al meglio per mantenere l'ordinamento ordinando le chiavi nella risposta JSON in ordine alfabetico e quindi stampando i valori in ordine di output TSV. Non esiste alcuna garanzia che l'ordine sia sempre identico, poiché il formato di risposta del servizio di Azure può cambiare.
Per applicare un ordinamento coerente, è necessario usare il parametro --query
e il formato dell'elenco a selezione multipla. Quando un comando dell'interfaccia della riga di comando restituisce un singolo dizionario JSON, usare il formato generico [key1, key2, ..., keyN]
per forzare l'ordinamento delle chiavi. Per i comandi dell'interfaccia della riga di comando che restituiscono una matrice, usare il formato [].[key1, key2, ..., keyN]
generale per ordinare i valori delle colonne.
Ad esempio, per ordinare le informazioni visualizzate in precedenza in base all'ID, alla località, al gruppo di risorse e al nome della macchina virtuale:
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
L'esempio seguente illustra come l'output tsv
possa essere inviato tramite pipe ad altri comandi in Bash. La query viene usata per filtrare l'output e forzare l'ordinamento. grep
seleziona gli elementi che contengono il testo "RGD" e quindi il comando cut
seleziona il quarto campo per mostrare il nome della macchina virtuale nell'output.
az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020
Il tsv
formato di output viene spesso usato quando si assegnano valori alle variabili. Questo esempio ottiene l'ID sottoscrizione attivo e lo archivia in una variabile da usare in uno script.
# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"
Per altri --query
esempi di parametri, vedere Come eseguire query nell'output dei comandi dell'interfaccia della riga di comando di Azure.
Formato di output none
Alcuni comandi dell'interfaccia della riga di comando di Azure generano informazioni che è necessario proteggere. Ecco quattro esempi:
- password
- Stringhe di connessione
- chiavi private
- keys
Per proteggere segreti e chiavi quando si usano i comandi dell'interfaccia della riga di comando di Azure, scegliere una delle opzioni seguenti:
Opzione | Vantaggio | Caso d'uso |
---|---|---|
--output none formato di output |
Impedisce la visualizzazione delle informazioni riservate nella console. Se il comando non riesce, si riceveranno comunque messaggi di errore. | 1. Usare quando l'output del comando può essere recuperato in un secondo momento. |
2. Usare quando non è necessario l'output. | ||
3. Scelta comune quando viene usata un'identità gestita o un'entità servizio per gestire le risorse di Azure. | ||
parametro --query |
Archivia l'output in una variabile. | 1. Usare quando l'output del comando non può essere recuperato in un secondo momento. |
2. Usare quando è necessario usare un valore di output del comando in uno script. |
Usare none
e recuperare le informazioni di sicurezza in un secondo momento
Alcuni segreti di Azure possono essere recuperati in un secondo momento. Un buon esempio è costituito dai segreti archiviati in Azure Key Vault. In questo esempio creare un segreto di Azure Key Vault usando az keyvault secret set con l'opzione --output none
. È possibile recuperare il segreto in un secondo momento usando il comando az keyvault secret show .
az keyvault secret set --name MySecretName \
--vault-name MyKeyVaultName \
--value MySecretValue\
--output none
Usare --query
e restituire informazioni di sicurezza a una variabile
L'uso di per archiviare l'output in una variabile non è tecnicamente un formato di --query
output. Si tratta di una soluzione per proteggere i segreti ed è un'alternativa all'uso di --output none
. Ad esempio, quando si reimpostano le credenziali di un'entità servizio, la password non può essere recuperata di nuovo.
Reimpostare una credenziale dell'entità servizio che restituisce l'output nel formato JSON predefinito:
# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json
Output della console che mostra la nuova password nella console.
{
"appId": "myServicePrincipalID",
"password": "myServicePrincipalNewPassword",
"tenant": "myTenantID"
}
Una soluzione migliore consiste nel restituire informazioni riservate a una variabile.
# 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"
Per altri esempi sull'archiviazione dell'output in una variabile, vedere Usare correttamente l'interfaccia della riga di comando di Azure: passare i valori a un altro comando. Per altre informazioni sulla sintassi dei parametri, vedere Come eseguire query sull'output --query
dei comandi dell'interfaccia della riga di comando di Azure.
Configurare il formato di output predefinito
I comandi dell'interfaccia della riga di comando di Azure forniscono output che possono essere controllati in due modi:
Controllo di output | Vantaggio | Procedure |
---|---|---|
Impostazione globale | Selezionare un valore di output predefinito che si usa di più in modo da non dover fornire continuamente un --output parametro per ogni comando di riferimento. |
Specificare un formato di output predefinito usando az config set. |
parametro Command | Specificare l'output a livello di comando e offrire agli script la massima flessibilità. È possibile controllare l'output della console e l'input delle variabili per ogni comando di riferimento. | Eseguire l'override dell'impostazione predefinita usando il parametro di un comando di --output riferimento. |
L'output predefinito per l'interfaccia della riga di comando di Azure è json
. Impostare l'output predefinito su none
quando l'output della console non è necessario.
az config set core.output=none
È possibile sovrascrivere l'output predefinito di qualsiasi comando di riferimento dell'interfaccia della riga di comando di Azure usando il --output
parametro . Ecco uno script di comandi che modificano e testano l'output dei comandi:
# 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