Formaty danych wyjściowych dla poleceń interfejsu wiersza polecenia platformy Azure
Interfejs wiersza polecenia platformy Azure używa formatu JSON jako domyślnego formatu danych wyjściowych, ale oferuje też inne formaty. Aby sformatować dane wyjściowe interfejsu wiersza polecenia, użyj parametru --output
(--out
lub -o
). Wartości argumentu i typy danych wyjściowych to:
--output | opis |
---|---|
json |
Ciąg JSON. To ustawienie jest ustawieniem domyślnym |
jsonc |
Kolorowany kod JSON |
table |
Tabela ASCII z kluczami jako nagłówkami kolumn |
tsv |
Wartości rozdzielane tabulatorami, bez kluczy. |
yaml |
YAML, czytelna dla człowieka alternatywa dla formatu JSON |
yamlc |
Kolorowy KOD YAML |
none |
Brak danych wyjściowych innych niż błędy i ostrzeżenia |
Ostrzeżenie
Użyj formatu wyjściowego none
polecenia lub zapisz dane wyjściowe polecenia w zmiennej, aby uniknąć uwidaczniania wpisów tajnych, takich jak klucze interfejsu API i poświadczenia. Uwaga: niektóre środowiska ciągłej integracji/ciągłego wdrażania mogą przechowywać dane wyjściowe wykonanych poleceń w dziennikach. Dobrym rozwiązaniem jest potwierdzenie, co zostało zapisane w tych plikach dziennika i kto ma dostęp do dzienników.
Aby uzyskać więcej informacji, zobacz Brak formatu danych wyjściowych.
Format wyjściowy JSON (domyślny)
Poniższy przykład przedstawia listę maszyn wirtualnych w subskrypcjach w domyślnym formacie JSON.
az vm list --output json
W poniższych danych wyjściowych pominięto niektóre pola dla zwięzłości oraz zastąpiono informacje identyfikacyjne.
[
{
"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 danych wyjściowych YAML
Format yaml
umożliwia wyświetlanie danych wyjściowych jako plików YAML, które są formatem serializacji danych w postaci zwykłego tekstu. Pliki YAML są łatwiejsze do odczytania niż pliki JSON i można je łatwo mapować na ten format. Niektóre aplikacje i polecenia interfejsu wiersza polecenia przyjmują format danych wejściowych konfiguracji YAML, zamiast formatu JSON.
az vm list --output yaml
W poniższych danych wyjściowych pominięto niektóre pola dla zwięzłości oraz zastąpiono informacje identyfikacyjne.
- 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 danych wyjściowych tabeli
Format table
powoduje wyświetlanie danych wyjściowych w postaci tabeli ASCII, co ułatwia czytanie i skanowanie. Dane wyjściowe tabeli nie zawierają obiektów zagnieżdżonych, ale można je filtrować w ramach zapytania. Tabela nie zawiera również niektórych pól, dlatego ten format jest najlepszy w przypadku zwięzłego przeglądu danych z możliwością przeszukiwania przez użytkownika.
az vm list --output table
Name ResourceGroup Location
----------- --------------- ----------
DemoVM010 DEMORG1 westus
demovm212 DEMORG1 westus
demovm213 DEMORG1 westus
KBDemo001VM RGDEMO001 westus
KBDemo020 RGDEMO001 westus
Parametru --query
możesz użyć do dostosowania właściwości i kolumn, które chcesz wyświetlić w danych wyjściowych w postaci listy. Poniższy przykład pokazuje sposób wybierania samej nazwy maszyny wirtualnej i nazwy grupy zasobów w poleceniu list
.
az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource Name
---------- -----------
DEMORG1 DemoVM010
DEMORG1 demovm212
DEMORG1 demovm213
RGDEMO001 KBDemo001VM
RGDEMO001 KBDemo020
Uwaga
Niektóre klucze domyślnie nie są wyświetlane w widoku tabeli. Są to wartości id
, type
i etag
. Jeśli chcesz uwzględnić te wartości w danych wyjściowych, możesz użyć funkcji ponownego tworzenia kluczy JMESPath, aby zmienić nazwę klucza i zapobiec filtrowaniu.
az vm list --query "[].{objectID:id}" --output table
Aby uzyskać więcej informacji o używaniu zapytań do filtrowania danych, zobacz Korzystanie z zapytań JMESPath dla interfejsu wiersza polecenia platformy Azure.
Format danych wyjściowych TSV
Format tsv
danych wyjściowych zwraca wartości rozdzielane tabulatorami i nowymi wierszami bez dodatkowego formatowania, kluczy lub innych symboli. Ten format ułatwia wykorzystanie danych wyjściowych w innych poleceniach i narzędziach, które muszą przetwarzać tekst w pewnej postaci. Podobnie jak w przypadku formatu table
, w formacie tsv
nie są wyświetlane obiekty zagnieżdżone.
Wykorzystanie poprzedniego przykładu z opcją tsv
daje na wyjściu wynik rozdzielany znakami tabulacji.
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
Jednym z ograniczeń formatu danych wyjściowych TSV jest to, że nie ma gwarancji na kolejność danych wyjściowych. Interfejs wiersza polecenia stara się zachować kolejność przez sortowanie kluczy w odpowiedzi alfabetycznie, a następnie drukowanie ich wartości w celu uzyskania danych wyjściowych TSV. Nie ma gwarancji, że zamówienie jest zawsze identyczne, ponieważ format odpowiedzi usługi platformy Azure może ulec zmianie.
Aby wymusić spójne porządkowanie, należy użyć parametru --query
i formatu listy wielokrotnej wyboru. Gdy polecenie interfejsu wiersza polecenia zwraca pojedynczy słownik JSON, użyj formatu [key1, key2, ..., keyN]
ogólnego, aby wymusić kolejność kluczy. W przypadku poleceń interfejsu wiersza polecenia, które zwracają tablicę, użyj formatu [].[key1, key2, ..., keyN]
ogólnego, aby uporządkować wartości kolumn.
Aby na przykład uporządkować informacje wyświetlane powyżej według identyfikatora, lokalizacji, grupy zasobów i nazwy maszyny wirtualnej:
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
W następnym przykładzie pokazano sposób przesyłania danych wyjściowych tsv
w postaci potoku do innych poleceń powłoki bash. Zapytanie służy do filtrowania danych wyjściowych i wymuszania porządkowania, grep
wybiera elementy zawierające tekst "RGD", a następnie cut
polecenie wybiera czwarte pole, aby wyświetlić nazwę maszyny wirtualnej w danych wyjściowych.
az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020
Format tsv
danych wyjściowych jest często używany podczas przypisywania wartości do zmiennych. W tym przykładzie jest pobierany aktywny identyfikator subskrypcji i zapisuje go w zmiennej do użycia w skrypcie.
# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"
Aby uzyskać więcej --query
przykładów parametrów, zobacz Jak wykonywać zapytania dotyczące danych wyjściowych polecenia interfejsu wiersza polecenia platformy Azure.
Brak formatu danych wyjściowych
Niektóre polecenia interfejsu wiersza polecenia platformy Azure zawierają informacje wyjściowe, które należy chronić. Oto cztery przykłady:
- Hasła
- parametry połączenia
- wpisy tajne
- keys
Aby chronić wpisy tajne i klucze podczas korzystania z poleceń interfejsu wiersza polecenia platformy Azure, wybierz jedną z następujących opcji:
Opcja | Korzyści | Przypadek użycia |
---|---|---|
--output none format danych wyjściowych |
Informacje poufne nie są wyświetlane w konsoli programu . Jeśli polecenie zakończy się niepowodzeniem, nadal będą wyświetlane komunikaty o błędach. | 1. Użyj polecenia, gdy dane wyjściowe polecenia można pobrać w późniejszym czasie. |
2. Użyj polecenia , jeśli nie potrzebujesz danych wyjściowych. | ||
3. Typowy wybór, gdy tożsamość zarządzana lub jednostka usługi jest używana do zarządzania zasobami platformy Azure. | ||
--query parametr |
Przechowuje dane wyjściowe w zmiennej. | 1. Użyj polecenia, gdy nie można pobrać danych wyjściowych polecenia w późniejszym czasie. |
2. Użyj polecenia, gdy musisz użyć wartości wyjściowej polecenia w skry skrycie. |
Używanie none
i pobieranie informacji zabezpieczających w późniejszym czasie
Niektóre wpisy tajne platformy Azure można pobrać później. Dobrym przykładem są wpisy tajne przechowywane w usłudze Azure Key Vault. W tym przykładzie utwórz wpis tajny usługi Azure Key Vault przy użyciu polecenia az keyvault secret set z opcją --output none
. Wpis tajny można pobrać później za pomocą polecenia az keyvault secret show .
az keyvault secret set --name MySecretName \
--vault-name MyKeyVaultName \
--value MySecretValue\
--output none
Używanie --query
i zwracanie informacji o zabezpieczeniach do zmiennej
Użycie --query
funkcji do przechowywania danych wyjściowych w zmiennej nie jest technicznie formatem danych wyjściowych. Jest to rozwiązanie do ochrony wpisów tajnych i jest alternatywą dla używania polecenia --output none
. Na przykład po zresetowaniu poświadczeń jednostki usługi nie można ponownie pobrać hasła.
Zresetuj poświadczenia jednostki usługi zwracające dane wyjściowe w domyślnym formacie JSON:
# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json
Dane wyjściowe konsoli przedstawiające nowe hasło w konsoli programu .
{
"appId": "myServicePrincipalID",
"password": "myServicePrincipalNewPassword",
"tenant": "myTenantID"
}
Lepszym rozwiązaniem jest zwracanie poufnych informacji do zmiennej.
# 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"
Aby uzyskać więcej przykładów dotyczących przechowywania danych wyjściowych w zmiennej, zobacz Używanie interfejsu wiersza polecenia platformy Azure z powodzeniem — przekazywanie wartości do innego polecenia. Aby dowiedzieć się więcej na temat --query
składni parametrów, zobacz Jak wykonywać zapytania dotyczące danych wyjściowych polecenia interfejsu wiersza polecenia platformy Azure.
Ustawianie domyślnego formatu danych wyjściowych
Polecenia interfejsu wiersza polecenia platformy Azure zapewniają dane wyjściowe, które można kontrolować na dwa sposoby:
Kontrolka danych wyjściowych | Korzyści | Porady |
---|---|---|
Ustawienie globalne | Wybierz domyślną wartość wyjściową, która jest najbardziej używana, aby nie trzeba było stale podawać parametru --output dla każdego polecenia odwołania. |
Określ domyślny format danych wyjściowych przy użyciu polecenia az config set. |
Parametr polecenia | Określ dane wyjściowe na poziomie polecenia i zapewnij skryptom maksymalną elastyczność. Możesz kontrolować dane wyjściowe konsoli i zmienne dane wejściowe dla każdego polecenia referencyjnego. | Zastąpić ustawienie domyślne przy użyciu parametru --output polecenia odwołania. |
Domyślne dane wyjściowe interfejsu wiersza polecenia platformy Azure to json
. Ustaw domyślne dane wyjściowe na none
, gdy dane wyjściowe konsoli nie są potrzebne.
az config set core.output=none
Domyślne dane wyjściowe dowolnego polecenia referencyjnego interfejsu wiersza polecenia platformy Azure można zastąpić przy użyciu parametru --output
. Oto skrypt poleceń, które zmieniają i testowe dane wyjściowe polecenia:
# 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