Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Azure CLI gebruikt JSON als standaarduitvoerindeling, maar biedt ook andere indelingen. Gebruik de --output
parameter (--out
of -o
) om Azure CLI-uitvoer op te maken. De argumentwaarden en -typen van de uitvoer zijn:
--uitvoer | Beschrijving |
---|---|
json |
JSON-tekenreeks. Deze instelling is de standaardinstelling |
jsonc |
Gekleurde JSON |
table |
ASCII-tabel met toetsen als kolomkoppen |
tsv |
Door tabs gescheiden waarden, geen sleutels. |
yaml |
YAML, een door mensen leesbaar alternatief voor JSON |
yamlc |
Gekleurde YAML |
none |
Geen andere uitvoer dan fouten en waarschuwingen |
Waarschuwing
Als u wilt voorkomen dat geheimen, zoals API-sleutels en referenties, worden weergegeven, gebruikt u een uitvoerindeling van of slaat u de uitvoer van none
opdrachten op in een variabele.
Notitie: Bepaalde CI/CD-omgevingen kunnen de uitvoer van de uitgevoerde opdrachten opslaan in logboeken. Het is een goed idee om de inhoud van deze logboekbestanden te bevestigen en wie toegang heeft tot de logboeken. Zie Geen uitvoerindeling voor meer informatie.
JSON-uitvoerindeling (standaard)
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 makkelijker te lezen dan JSON en kan naar dat formaat worden omgezet. Sommige toepassingen en Azure CLI-opdrachten nemen YAML als configuratie-invoer in plaats van JSON.
az vm list --output 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
...
...
Tabeluitvoerformaat
De table
-indeling genereert uitvoer als een ASCII-tabel, waardoor deze eenvoudig te lezen en te scannen is. Geneste objecten zijn niet opgenomen in de tabeluitvoer, maar kunnen nog steeds worden gefilterd als onderdeel 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 --output 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}" --output table
Resource Name
---------- -----------
DEMORG1 DemoVM010
DEMORG1 demovm212
DEMORG1 demovm213
RGDEMO001 KBDemo001VM
RGDEMO001 KBDemo020
Opmerking
Sommige sleutels worden niet standaard afgedrukt in de tabelweergave. Deze sleutels zijn onder andere id
, type
en etag
. Als u deze nodig hebt in uw uitvoer, kunt u de functie JMESPath opnieuw versleutelen gebruiken om de sleutelnaam te wijzigen en filteren te voorkomen.
az vm list --query "[].{objectID:id}" --output table
Raadpleeg JMESPath-query's gebruiken met de Azure CLI voor meer informatie over het gebruik van query's om gegevens te filteren.
TSV-uitvoerformaat
De tsv
uitvoerindeling retourneert waarden die door tabbladen en nieuwe regels worden gescheiden, 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 drukt tsv
geen geneste objecten af.
Als u het voorgaande voorbeeld gebruikt met de optie tsv
, wordt het tab-gescheiden resultaat uitgevoerd.
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
Een beperking van de tsv
uitvoerindeling is dat er geen garantie is voor het ordenen van uitvoer. De Azure CLI doet er alles aan om de volgorde te behouden door sleutels in de antwoord-JSON alfabetisch te sorteren en vervolgens hun waarden af te drukken op volgorde van tsv
uitvoer. Er is geen garantie dat de bestelling altijd identiek is, omdat de azure-serviceantwoordindeling kan worden gewijzigd.
Als u consistente volgorde wilt afdwingen, moet u de --query
parameter en de indeling van de lijst met meerdere selecties gebruiken. Wanneer een Azure CLI-opdracht één JSON-woordenlijst retourneert, gebruikt u de algemene indeling [key1, key2, ..., keyN]
om een sleutelvolgorde af te dwingen. Voor Azure CLI-opdrachten die een matrix retourneren, gebruikt u de algemene indeling [].[key1, key2, ..., keyN]
om kolomwaarden te ordenen.
Als u bijvoorbeeld deze informatie wilt ordenen op ID, locatie, resourcegroep en VM-naam:
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
In het volgende voorbeeld ziet u hoe u tsv
uitvoer naar andere opdrachten in Bash kunt pijpen. De query wordt gebruikt voor het filteren van uitvoer en geforceerde volgorde, grep
selecteert items met tekst RGD
erin en vervolgens selecteert de cut
opdracht het vierde veld om de naam van de virtuele machine in uitvoer weer te geven.
az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020
De tsv
uitvoerindeling wordt vaak gebruikt bij het toewijzen van waarden aan variabelen. In dit voorbeeld wordt de actieve abonnements-id opgehaald en opgeslagen in een variabele voor gebruik in een script.
# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"
Zie --query
voor meer parametervoorbeelden.
Geen uitvoerindeling
Sommige Azure CLI-opdrachten bevatten uitvoergegevens die u moet beveiligen. Hier volgen vier voorbeelden:
- Wachtwoorden
- Aansluitstrengen
- Geheimen
- Sleutels
Als u geheimen en sleutels wilt beveiligen wanneer u Azure CLI-opdrachten gebruikt, kiest u een van de volgende opties:
Optie | Voordeel | Gebruiksituatie |
---|---|---|
--output none Uitvoerindeling |
Hiermee wordt gevoelige informatie niet weergegeven in uw console. Als uw opdracht mislukt, ontvangt u nog steeds foutberichten. | 1. Gebruik als de opdrachtuitvoer kan worden opgehaald op een later tijdstip. |
2. Gebruik deze functie wanneer u geen uitvoer nodig hebt. | ||
3. Een algemene keuze wanneer een beheerde identiteit of een service-principal wordt gebruikt voor het beheren van Azure-resources. | ||
--query parameter |
Slaat uitvoer op in een variabele. | 1. Gebruik wanneer de opdrachtuitvoer niet kan worden opgehaald op een later tijdstip. |
2. Gebruik dit commando als u een uitvoerwaarde van een opdracht in een script moet gebruiken. |
Beveiligingsgegevens op een later tijdstip ophalen
Sommige Azure-geheimen kunnen later worden opgehaald. Een voorbeeld hiervan zijn geheimen die zijn opgeslagen in Azure Key Vault. In dit voorbeeld maakt u een Azure Key Vault-geheim met behulp van az keyvault secret set met de --output none
optie. U kunt het geheim later ophalen met behulp van de opdracht az keyvault secret show .
az keyvault secret set --name MySecretName \
--vault-name MyKeyVaultName \
--value MySecretValue\
--output none
Beveiligingsgegevens opslaan in een variabele
Het gebruik van het opslaan van --query
uitvoer in een variabele is technisch gezien geen uitvoerindeling. Het is een oplossing voor het beveiligen van geheimen en is een alternatief voor het gebruik van --output none
. Wanneer u bijvoorbeeld de inloggegevens van een service-principal opnieuw instelt, kan het wachtwoord niet opnieuw worden opgehaald.
Stel een service-principalreferentie opnieuw in en retourneer de uitvoer in de standaard JSON-indeling:
# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json
Console-uitvoer met het nieuwe wachtwoord in de console.
{
"appId": "myServicePrincipalID",
"password": "myServicePrincipalNewPassword",
"tenant": "myTenantID"
}
Een betere oplossing is het retourneren van gevoelige informatie aan een variabele.
# 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"
Zie De Azure CLI gebruiken om waarden door te geven aan een andere opdracht voor meer voorbeelden over het opslaan van uitvoer naar een variabele. Zie --query
voor meer informatie over de syntaxis van parameters.
De standaarduitvoerindeling instellen
Azure CLI-opdrachten bieden uitvoer die op twee manieren kan worden beheerd:
Uitvoerbesturing | Voordeel | Handleiding |
---|---|---|
Globale instelling | Selecteer een standaarduitvoerwaarde die u het meest gebruikt, zodat u niet voortdurend een --output parameter hoeft op te geven voor elke verwijzingsopdracht. |
Geef een standaarduitvoerindeling op met az config set. |
Opdrachtparameter | Geef uitvoer op opdrachtniveau op en geef uw scripts maximale flexibiliteit. U bepaalt de uitvoer van de console en de variabele invoer voor elke referentieopdracht. | Overschrijf de standaardinstelling met behulp van de --output parameter van een referentiecommando. |
De standaarduitvoer voor de Azure CLI is json
. Stel de standaarduitvoer in op none
wanneer console-uitvoer niet nodig is.
az config set core.output=none
U kunt de standaarduitvoer van elke Azure CLI-referentieopdracht overschrijven met behulp van de --output
parameter. Hier volgt een script met opdrachten die de uitvoer van de opdracht wijzigen en testen:
# 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
Zie ook
- Azure CLI-configuratie
- Azure CLI-opdrachtuitvoer opvragen
- Tips om de Azure CLI succesvol te gebruiken