Condividi tramite


Formati di output per i comandi della CLI 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 della CLI di Azure. I valori degli argomenti e i tipi di output sono i seguenti:

--prodotto Descrizione
json Stringa JSON. Questa è l'impostazione predefinita
jsonc JSON colorato
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

Avvertimento

Per evitare di esporre segreti come chiavi API e credenziali, usa un formato di output di none oppure archivia l'output dei comandi in una variabile. Nota: Alcuni ambienti CI/CD potrebbero archiviare l'output dei comandi eseguiti nei log. È consigliabile verificare il contenuto di tali file di log e chi può accedere ai log. Per ulteriori informazioni, vedere Nessun formato di output.

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 e esegue il mapping a tale formato. Alcune applicazioni e i comandi dell'interfaccia della riga di comando di Azure accettano YAML come input di configurazione, anziché 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

Annotazioni

Alcune chiavi non vengono stampate nella visualizzazione in tabella per impostazione predefinita. Queste chiavi includono id, typee etag. Se sono necessari nell'output, è possibile usare la funzionalità di reimpostazione della chiave JMESPath per modificare il nome della chiave ed evitare di filtrare.

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 tsv formato di output è che non esiste una garanzia sull'ordinamento dell'output. L'interfaccia della riga di comando di Azure cerca di preservare l'ordine ordinando le chiavi nella risposta JSON alfabeticamente, per poi stampare i loro valori nel formato di output di 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 --query parametro e il formato elenco a selezione multipla . Quando un comando CLI di Azure restituisce un singolo dizionario JSON, usare il formato [key1, key2, ..., keyN] generale per forzare un ordine delle chiavi. Per i comandi dell'interfaccia della riga di comando di Azure che restituiscono una matrice, usare il formato [].[key1, key2, ..., keyN] generale per ordinare i valori delle colonne.

Ad esempio, per ordinare queste informazioni visualizzate in base all'ID, alla posizione, 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 inviare tramite pipe tsv l'output ad altri comandi in Bash. La query viene usata per filtrare l'output e forzare l'ordinamento, grep seleziona gli elementi che contengono testo RGD , quindi il cut comando seleziona il quarto campo per visualizzare 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 ulteriori esempi di parametri --query, vedere Come eseguire query nell'output dei comandi di Azure CLI.

Formato di output nessuno

Alcuni comandi dell'interfaccia della riga di comando di Azure generano informazioni che è necessario proteggere. Ecco quattro esempi:

  • Password
  • Stringhe di connessione
  • Segreti
  • Chiavi

Per proteggere segreti e chiavi quando si usano i comandi dell'interfaccia della riga di comando di Azure, scegliere una delle opzioni seguenti:

Opzione Beneficio Caso d'uso
--output none formato di output Impedisce la visualizzazione delle informazioni riservate nella console. Se il comando non riesce, si ricevono 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.

Recuperare le informazioni di sicurezza in un secondo momento

Alcuni segreti di Azure possono essere recuperati in un secondo momento. Un 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

Archiviare le informazioni di sicurezza in una variabile

L'uso di --query per memorizzare l'output in una variabile non è tecnicamente un formato di output. 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 ulteriori informazioni sulla sintassi dei parametri --query, vedere Come eseguire query sull'output 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 Beneficio Guida pratica
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 comando 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. Sostituire l'impostazione predefinita usando il parametro di riferimento del comando --output.

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

Vedere anche