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

Zobacz też