Udostępnij za pośrednictwem


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 inne formaty. Użyj parametru --output (--out lub -o), aby sformatować dane wyjściowe interfejsu wiersza polecenia platformy Azure. Wartości argumentów i typy danych wyjściowych to:

--wyjście 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 Kolorowany YAML
none Brak danych wyjściowych innych niż błędy i ostrzeżenia

Ostrzeżenie

Aby uniknąć uwidaczniania tajnych danych, takich jak klucze interfejsu API i poświadczenia, użyj formatu wyjściowego z none lub zapisz dane wyjściowe polecenia w zmiennej. Uwaga: Niektóre środowiska CI/CD mogą przechowywać wyniki wykonanych poleceń w dziennikach. Dobrym rozwiązaniem jest potwierdzenie zawartości tych plików dziennika i osób mających 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

Następujące dane wyjściowe mają niektóre pola pominięte dla zwięzłości, a informacje identyfikacyjne zostały zastąpione.

[
  {
    "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 wyświetla dane wyjściowe jako YAML, format serializacji danych w postaci zwykłego tekstu. Kod YAML jest zwykle łatwiejszy do odczytania niż JSON i można go przekształcić na ten format. Niektóre aplikacje i polecenia interfejsu wiersza polecenia platformy Azure przyjmują kod YAML jako dane wejściowe konfiguracji zamiast JSON.

az vm list --output yaml

Następujące dane wyjściowe mają niektóre pola pominięte dla zwięzłości, a informacje identyfikacyjne zostały zastąpione.

- 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 wyświetla dane wyjściowe jako tabelę ASCII, co ułatwia odczytywanie i skanowanie. Zagnieżdżone obiekty nie są uwzględniane w danych wyjściowych tabeli, ale nadal można je filtrować jako część zapytania. Niektóre pola nie są uwzględnione w tabeli, więc ten format jest najlepszy, gdy chcesz szybko uzyskać przegląd danych, który łatwo można przeszukać ręcznie.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Możesz użyć parametru --query , aby dostosować właściwości i kolumny, które mają być wyświetlane w danych wyjściowych listy. W poniższym przykładzie pokazano, jak wybrać tylko nazwę maszyny wirtualnej i nazwę 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 / Notatka

Niektóre klucze nie są domyślnie drukowane w widoku tabeli. Te klucze obejmują id, typei etag. Jeśli potrzebujesz ich w danych wyjściowych, możesz użyć funkcji zmiany klucza JMESPath, aby zmienić nazwę klucza i uniknąć odfiltrowania.

az vm list --query "[].{objectID:id}" --output table

Aby uzyskać więcej informacji na temat używania zapytań do filtrowania danych, zobacz Używanie zapytań JMESPath z interfejsem wiersza polecenia platformy Azure.

Format danych wyjściowych TSV

Format tsv danych wyjściowych zwraca wartości rozdzielane tabulatorami i nowymi liniami bez dodatkowego formatowania, kluczy lub innych symboli. Ten format ułatwia korzystanie z danych wyjściowych w innych poleceniach i narzędziach, które muszą przetwarzać tekst w jakiejś formie. Podobnie jak format table , tsv nie drukuje zagnieżdżonych obiektów.

Używając powyższego przykładu z opcją tsv, uzyskuje się wynik rozdzielony tabulatorami.

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 CLI Azure dokłada wszelkich starań, aby zachować kolejność, sortując klucze w odpowiedzi JSON alfabetycznie, a następnie drukując ich wartości w celu uzyskania tsv danych wyjściowych. 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 wielokrotnego wyboru . Gdy polecenie Azure CLI zwraca pojedynczy słownik JSON, użyj ogólnego formatu [key1, key2, ..., keyN], aby wymusić kolejność kluczy. W przypadku poleceń CLI platformy Azure, które zwracają tablicę, użyj ogólnego formatu [].[key1, key2, ..., keyN], aby uporządkować wartości kolumn.

Aby na przykład uporządkować te informacje wyświetlane 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

Następny przykład pokazuje, jak można przekazywać dane wyjściowe tsv do innych poleceń w 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
  • Łańcuchy połączenia
  • Tajemnice
  • Klucze

Aby chronić wpisy tajne i klucze podczas korzystania z poleceń interfejsu wiersza polecenia platformy Azure, wybierz jedną z następujących opcji:

Opcja Korzyść Przypadek użycia
--output none format danych wyjściowych Konsola nie wyświetla poufnych informacji. Jeśli polecenie zakończy się niepowodzeniem, nadal są wyświetlane komunikaty o błędach. 1. Użyj, gdy dane wyjściowe polecenia można będzie pobrać w późniejszym czasie.
2. Użyj, kiedy nie potrzebujesz uzyskiwać 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.
parametr --query Przechowuje dane wyjściowe w zmiennej. 1. Użyj, gdy nie można później pobrać danych wyjściowych polecenia.
2. Użyj wartości wyjściowej polecenia, gdy musisz ją zastosować w skrypcie.

Pobieranie informacji o zabezpieczeniach w późniejszym czasie

Niektóre sekrety Azure można pobrać w późniejszym czasie. Przykładem są wpisy tajne przechowywane w usłudze Azure Key Vault. W tym przykładzie utwórz sekret w Azure Key Vault za pomocą polecenia az keyvault secret set i użyj --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

Przechowaj informacje o zabezpieczeniach w 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 tajemnic i jest alternatywą dla używania --output none. Na przykład, gdy zresetujesz poświadczenia głównej jednostki usługi, hasło nie może być ponownie odzyskane.

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 pokazujące nowe hasło.

{
  "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 zapytać o dane wyjściowe poleceń Azure CLI.

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ść Instrukcja
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 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ąp ustawienie domyślne, używając parametru --output polecenia referencyjnego.

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

Możesz zastąpić domyślne dane wyjściowe dowolnego polecenia referencyjnego Azure CLI, używając parametru --output. Oto skrypt poleceń, które zmieniają i testują 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 także