Bagikan melalui


Format output untuk perintah Azure CLI

Azure CLI menggunakan JSON sebagai format output defaultnya, tetapi menawarkan format lain. --output Gunakan parameter (--out atau -o) untuk memformat output Azure CLI. Nilai argumen dan jenis output adalah:

--hasil Deskripsi
json String JSON. Pengaturan ini adalah default
jsonc JSON berwarna
table Tabel ASCII dengan kunci sebagai judul kolom
tsv Nilai yang dipisahkan tab, tanpa kunci
yaml YAML, alternatif yang dapat dibaca manusia untuk JSON
yamlc YAML Berwarna
none Tidak ada output selain kesalahan dan peringatan

Peringatan

Untuk menghindari mengekspos rahasia seperti kunci API dan kredensial, gunakan format none output atau simpan output perintah dalam variabel. Nota: Lingkungan CI/CD tertentu mungkin menyimpan output perintah yang dijalankan dalam log. Ini adalah praktik yang baik untuk mengonfirmasi konten file log tersebut dan siapa yang memiliki akses ke log. Untuk informasi selengkapnya, lihat Format output tidak ada.

Format keluaran JSON (bawaan)

Contoh berikut menampilkan daftar komputer virtual dalam langganan Anda dalam format JSON default.

az vm list --output json

Output berikut memiliki beberapa bidang yang dihilangkan untuk singkatnya, dan informasi identifikasi diganti.

[
  {
    "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 output YAML

yaml Format mencetak output sebagai YAML, format serialisasi data teks biasa. YAML cenderung lebih mudah dibaca daripada JSON, dan memetakan ke format tersebut. Beberapa aplikasi dan perintah Azure CLI mengambil YAML sebagai input konfigurasi, bukan JSON.

az vm list --output yaml

Output berikut memiliki beberapa bidang yang dihilangkan untuk singkatnya, dan informasi identifikasi diganti.

- 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 tabel keluaran

Format table mencetak output sebagai tabel dalam format ASCII, sehingga mudah untuk dibaca dan dipindai. Objek berlapis tidak disertakan dalam output tabel, tetapi masih dapat difilter sebagai bagian dari kueri. Beberapa bidang tidak disertakan dalam tabel, sehingga format ini adalah yang terbaik saat Anda menginginkan gambaran umum data yang cepat dan dapat dicari manusia.

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

Anda dapat menggunakan --query parameter untuk mengkustomisasi properti dan kolom yang ingin Anda tampilkan dalam output daftar. Contoh berikut menunjukkan cara memilih Hanya Nama VM dan Nama Grup Sumber Daya dalam list perintah.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Nota

Beberapa kunci tidak dicetak dalam tampilan tabel secara default. Kunci ini termasuk id, type, dan etag. Jika Anda membutuhkannya dalam output, Anda dapat menggunakan fitur kunci ulang JMESPath untuk mengubah nama kunci dan menghindari pemfilteran.

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

Untuk informasi selengkapnya tentang menggunakan kueri untuk memfilter data, lihat Menggunakan kueri JMESPath dengan Azure CLI.

Format output TSV

tsv Format keluaran mengembalikan nilai yang dipisahkan oleh tab dan baris baru tanpa pemformatan tambahan, kunci, atau simbol lainnya. Format ini memudahkan untuk mengalirkan keluaran ke perintah dan alat lain yang perlu memproses teks dalam berbagai bentuk. Seperti formatnya table , tsv tidak mencetak objek berlapis.

Menggunakan contoh sebelumnya dengan opsi tsv menghasilkan keluaran yang dipisahkan oleh tab.

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

Salah satu batasan tsv format output adalah bahwa tidak ada jaminan pada pengurutan output. Azure CLI melakukan upaya terbaik untuk mempertahankan pengurutan dengan mengurutkan kunci dalam respons JSON menurut abjad, lalu mencetak nilainya untuk tsv output. Tidak ada jaminan bahwa pesanan selalu identik, karena format respons layanan Azure dapat berubah.

Untuk menerapkan pengurutan yang konsisten, Anda perlu menggunakan --query parameter dan format daftar multipilih . Saat perintah Azure CLI mengembalikan satu kamus JSON, gunakan format [key1, key2, ..., keyN] umum untuk memaksa urutan kunci. Untuk perintah Azure CLI yang mengembalikan array, gunakan format [].[key1, key2, ..., keyN] umum untuk mengurutkan nilai kolom.

Misalnya, untuk mengurutkan informasi ini yang ditampilkan oleh ID, lokasi, grup sumber daya, dan nama VM:

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

Contoh berikutnya menunjukkan bagaimana Anda dapat menyalurkan tsv output ke perintah lain di Bash. Kueri digunakan untuk memfilter output dan pengurutan paksa, grep memilih item yang memiliki teks RGD di dalamnya, lalu cut perintah memilih bidang keempat untuk menampilkan nama VM dalam output.

az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

tsv Format output sering digunakan saat menetapkan nilai ke variabel. Contoh ini mendapatkan ID langganan aktif dan menyimpannya ke dalam variabel untuk digunakan dalam skrip.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

Untuk contoh parameter lainnya, lihat Cara mengkueri --queryoutput perintah Azure CLI.

Format output tidak ada

Beberapa informasi output perintah Azure CLI yang harus Anda lindungi. Berikut adalah empat contoh:

  • Kata Sandi
  • String sambungan
  • Rahasia
  • Tombol / Kunci

Untuk melindungi rahasia dan kunci saat menggunakan perintah Azure CLI, pilih salah satu opsi berikut:

Opsi Keuntungan Skenario penggunaan
--output none format keluaran Menjaga agar informasi sensitif tidak ditampilkan di konsol Anda. Jika perintah gagal, Anda masih menerima pesan kesalahan. 1. Gunakan ketika output perintah dapat diambil di lain waktu.
2. Gunakan ketika Anda tidak perlu output.
3. Pilihan umum ketika identitas terkelola atau perwakilan layanan digunakan untuk mengelola sumber daya Azure.
parameter --query Menyimpan output dalam variabel. 1. Gunakan ketika output perintah tidak dapat diambil di lain waktu.
2. Gunakan saat Anda perlu menggunakan nilai output perintah dalam skrip.

Mengambil informasi keamanan di lain waktu

Beberapa rahasia Azure dapat diambil pada waktu yang lain. Contohnya adalah rahasia yang disimpan di Azure Key Vault. Dalam contoh ini, buat secret Azure Key Vault menggunakan az keyvault secret set dengan opsi --output none. Anda dapat mengambil rahasia tersebut nanti dengan menggunakan perintah az keyvault secret show.

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Menyimpan informasi keamanan ke variabel

Penggunaan --query untuk menyimpan output dalam variabel secara teknis bukan format output. Ini adalah solusi untuk melindungi rahasia, dan merupakan alternatif untuk menggunakan --output none. Misalnya, saat Anda mengatur ulang kredensial perwakilan layanan, kata sandi tidak dapat diambil lagi.

Atur ulang kredensial perwakilan layanan yang mengembalikan output dalam format json default:

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

Output konsol memperlihatkan kata sandi baru di konsol.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

Solusi yang lebih baik adalah mengembalikan informasi sensitif ke variabel.

# 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"

Untuk contoh selengkapnya tentang menyimpan output ke variabel, lihat Menggunakan Azure CLI dengan sukses - meneruskan nilai ke perintah lain. Untuk mempelajari selengkapnya tentang --query sintaks parameter, lihat Cara mengkueri output perintah Azure CLI.

Mengatur format output bawaan

Perintah Azure CLI menyediakan output yang dapat dikontrol dengan dua cara:

Kontrol output Keuntungan Panduan
Pengaturan global Pilih nilai output default yang paling sering Anda gunakan sehingga Anda tidak perlu terus memberikan --output parameter untuk setiap perintah referensi. Tentukan format output default menggunakan az config set.
Parameter perintah Tentukan output pada tingkat perintah dan berikan fleksibilitas maksimum skrip Anda. Anda mengontrol output konsol dan input variabel untuk setiap perintah referensi. Ambil alih pengaturan default menggunakan parameter perintah --output referensi.

Output default untuk Azure CLI adalah json. Atur output default ke none saat output konsol tidak diperlukan.

az config set core.output=none

Anda dapat mengganti keluaran default dari setiap perintah Azure CLI dengan menggunakan parameter --output. Berikut adalah skrip perintah yang mengubah dan menguji output perintah:

# 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

Lihat juga