Azure CLI 命令的輸出格式

Azure CLI 會使用 JSON 作為其預設輸出格式,但會提供其他格式。 使用 --output (--out-o) 參數來格式化 CLI 輸出。 引數值和輸出的類型如下:

--output 說明
json JSON 字串。 這項設定是預設值
jsonc 以色彩標示的 JSON
yaml YAML,這是 JSON 的人類可讀取替代方案
yamlc 彩色 YAML
table 包含索引鍵為欄位標題的 ASCII 資料表
tsv 定位字元分隔值,不具索引鍵
none 除了錯誤和警告以外沒有其他輸出

JSON 輸出格式

下列範例會以預設的 JSON 格式顯示訂用帳戶中的虛擬機器清單。

az vm list --output json

為求簡單明瞭,下列輸出會忽略某些欄位,並取代識別資訊。

[
  {
    "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"
        }
      ]
    },
          ...
          ...
          ...
]

TSV 輸出格式

yaml 格式會將輸出列印為 YAML,這是一種純文字資料序列化格式。 YAML 通常會比 JSON 易於讀取,並且可輕易對應至該格式。 某些應用程式和 CLI 命令會使用 YAML 作為組態輸入,而不是 JSON。

az vm list --out yaml

為求簡單明瞭,下列輸出會忽略某些欄位,並取代識別資訊。

- 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
  ...
...

Table 輸出格式

table 格式會列印輸出作為 ASCII 表格,方便您讀取和掃描。 巢狀物件不包含在資料表輸出中,但仍可以篩選為查詢的一部分。 部分欄位不會包含在資料表中,因此當您想要一種快速、人類可搜尋的資料概觀時,此為最佳格式。

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

您可以使用 --query 參數,以自訂您想要在此清單輸出中顯示的屬性和資料行。 下列範例會顯示如何在 list 命令中只選取 VM 名稱和資源群組名稱。

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

注意

依預設,某些金鑰不會列印在資料表檢視中。 這些索引鍵是 idtypeetag。 若要在輸出中查看這些索引鍵,您可以使用 JMESPath 變更索引鍵功能,來變更索引鍵名稱並避免篩選。

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

如需有關使用查詢來篩選資料的詳細資訊,請參閱搭配使用 JMESPath 查詢與 Azure CLI

TSV 輸出格式

tsv 輸出格式傳回以定位字元和新行字元分隔的值,而不包含其他格式設定、索引鍵或其他符號。 此格式可讓您輕鬆地取用輸出至需要以某種形式處理文字的其他命令和工具。 像是 table 格式,tsv 不會列印巢狀的物件。

使用先前具有 tsv 選項的範例,會將定位字元分隔的結果輸出。

az vm list --out 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

TSV 輸出格式的其中一項限制是不保證會依序輸出。 CLI 會依字母順序排序回應 JSON 中的索引鍵,然後列印其值,以便 TSV 輸出,以盡最大努力保留順序。 由於 Azure 服務回應格式可能會變更,因此不保證順序一定會完全相同。

為了強制順序保持一致,您需要使用= --query 參數和 multiselect list 格式。 當 CLI 命令傳回單一 JSON 字典時,使用一般格式 [key1, key2, ..., keyN] 強制金鑰順序保持一致。 針對會傳回陣列的 CLI 命令,請使用一般格式 [].[key1, key2, ..., keyN] 來排序資料行值。

例如,若想依識別碼、位置、資源群組和 VM 名稱為上述顯示的資訊排序:

az vm list --out 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

下一個範例顯示 tsv 輸出可以如何輸送至 bash 中的其他命令。 查詢會用來篩選輸出並強制排序,grep 會選取其中含有 "RGD" 文字的項目,然後 cut 命令會選取要在輸出中顯示 VM 名稱的第四個欄位。

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

設定預設的輸出格式

az config set使用 命令來設定您的環境,並建立輸出格式的預設設定。 預設的輸出格式是 json

az config set core.output=<format>
Welcome to the Azure CLI! This command will guide you through logging in and setting some default values.

Your settings can be found at /home/defaultuser/.azure/config
Your current configuration is as follows:

  ...

Do you wish to change your settings? (y/N): y

What default output format would you like?
 [1] json - JSON formatted output that most closely matches API responses.
 [2] jsonc - Colored JSON formatted output that most closely matches API responses.
 [3] table - Human-readable output format.
 [4] tsv - Tab- and Newline-delimited. Great for GREP, AWK, etc.
 [5] yaml - YAML formatted output. An alternative to JSON. Great for configuration files.
 [6] yamlc - Colored YAML formatted output. An alternative to JSON. Great for configuration files.
 [7] none - No output, except for errors and warnings.
Please enter a choice [1]:

另請參閱