共用方式為


成功使用 Azure CLI 的秘訣

Azure CLI 是命令行工具,可讓您從許多殼層環境設定和管理 Azure 資源。 選擇 慣用的殼層環境安裝 Azure CLI 之後,請使用本文來探索如何避免常見陷阱並成功使用 Azure CLI 的實用秘訣。

若要深入瞭解特定的 Azure CLI 命令,請參閱 Azure CLI 參考清單

選擇文稿語言

Azure CLI 是一種 開放原始碼 工具,您可以使用許多腳本語言來執行。

  • 這是腳本語言,可決定 Azure CLI 命令的引號、逸出字元和行接續規則。
  • 複製包含單引號或雙引號、逸出字元或語言之間的行接續字元的 Azure CLI 命令語法可能很困難。
  • Azure CLI 的大部分Microsoft檔都是在Bash中撰寫及測試。
  • 如果 PowerShell 是您選擇的腳本語言,請考慮使用具有原生 PowerShell 腳本語言功能的工具 Azure PowerShell

如需 Azure CLI 文本語言選項的詳細資訊,請參閱 選擇正確的命令行工具

常見問題集

以下是一些連結,可協助您回答最常詢問的 Azure CLI 問題:

包含文章連結的主題區域 提示
Web 帳戶管理員 (WAM) WAM 及其停用方式的相關信息。
組態設定 可用的 Azure CLI 組態設定清單、如何開啟/關閉 Azure CLI 功能,以及設定預設值。
輸出格式 有關如何將 Azure 資源識別符儲存在變數中的指示,以及保護 Azure CLI 命令傳回的秘密。
在字串中傳遞 JSON 值 引用 JSON 參數值的範例。
支援生命週期 Azure CLI 版本和相依性支援的作業系統、腳本語言和服務結束的相關信息。
REST API 特定 Azure CLI 命令不適用於 Azure 資源時,可使用 az rest 命令。
Azure CLI 參考群組 Azure CLI 參考群組的 A 至 Z 清單,向下切入至子群組和所有 Azure CLI 命令。
Azure CLI 文章 使用 Azure CLI 參考命令的快速入門、操作指南和教學課程的 Z 清單。 清單會依參考群組和子群組分組,以方便搜尋。
Azure CLI 範例 對 Z 的範例清單,包括 Azure-samples/azure-cli-samples GitHub 存放庫中的範例。
疑難排解 錯誤原因和補救秘訣。
新功能 新 Azure CLI 功能的簡短摘要。

將值傳遞至另一個命令

如果使用的值一次以上,請將它指派給變數。 變數可讓您多次使用值,或建立更一般腳本。 此範例會將 az vm list 命令所找到的標識碼指派給變數。

# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM running'].id" --output tsv)

# verify the value of the variable
echo $running_vm_ids

如果值只使用一次,請考慮管線。 (管線會將一個命令的輸出當做輸入傳遞至第二個命令。

az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm

針對多重值清單,請考慮下列選項:

  1. 如果您需要對結果有更多的控件,請使用 「for」 循環:
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id"   -output tsv); do
    echo stopping $vmList
    az vm stop --ids $vmList
    if [ $? -ne 0 ]; then
        echo "Failed to stop $vmList"
        exit 1
    fi
    echo $vmList stopped
done
  1. 或者,使用 xargs 和考慮使用 -P 旗標平行執行作業,以改善效能:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. 最後,Azure CLI 內建支援以平行方式處理多個 --ids 命令,以達到 xargs 的相同效果。 @- 用來從管道取得值:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

如需搭配 Azure CLI 使用 Bash 建構的詳細資訊,包括迴圈、case 語句 if.。然後。。否則,以及錯誤處理,請參閱 瞭解如何搭配 Azure CLI 使用 Bash。

一般更新參數

Azure CLI 命令群組通常具有更新命令。 例如,Azure 虛擬機器 包含 az vm update 命令。 大部分的更新命令都提供三個常見的參數: --add--set--remove

--set--add 參數會採用以空格分隔索引鍵/值組的清單:key1=value1 key2=value2。 若要查看您可以更新的屬性,請使用 show 命令,例如 az vm show

az vm show --resource-group VMResources --name virtual-machine-01

若要簡化命令,請考慮使用 JSON 字串。 例如,若要將新的數據磁碟連結至虛擬機,請使用下列值:

az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
   {\"id\":
   \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
   \"lun\": 1}"

一般資源命令

您想要使用的服務可能沒有 Azure CLI 支援。 您可以使用 az resourceaz rest 命令來處理這些資源。

並行執行

如果您在相同的計算機上同時執行 Azure CLI 命令,如果多個 Azure CLI 命令寫入相同的Microsoft驗證連結庫 (MSAL) 令牌快取,就可能發生寫入衝突。

若要避免潛在的失敗,請將每個腳本的環境變數 AZURE_CONFIG_DIR 設定為個別目錄,以隔離每個腳本的 Azure CLI 組態資料夾。 該文稿中的 Azure CLI 命令會將設定和令牌快取儲存到設定的位置,而不是預設 ~/.azure 資料夾。

export AZURE_CONFIG_DIR=/my/config/dir

非同步作業

Azure 中的作業可能需要相當長的時間。 例如,在數據中心設定虛擬機並非瞬間完成。 Azure CLI 會等候命令完成以接受其他命令。 因此,許多命令都會提供 --no-wait 參數,如下所示:

az group delete --name MyResourceGroup --no-wait

當您刪除資源群組時,也會移除屬於它的所有資源。 拿掉這些資源可能需要很長的時間。 當您使用 --no-wait 參數執行命令時,主控台會接受新的命令,而不會中斷移除。

許多命令都提供等候選項,暫停控制台,直到符合某些條件為止。 下列範例使用 az vm wait 命令來支援平行建立獨立資源:

az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait

subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id

建立這兩個標識符之後,您就可以再次使用控制台。

腳本範例

以下是使用 Azure 虛擬機器 時使用變數並迴圈查看清單的範例。 如需搭配 Azure CLI 使用 Bash 建構的深入範例,包括迴圈、case 語句 if.。然後。。否則,以及錯誤處理,請參閱 瞭解如何搭配 Azure CLI 使用 Bash。

使用這些文稿將識別元儲存至變數:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
   `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    SET "vm_ids=%%F %vm_ids%"  :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel

使用這些腳本來循環檢視清單:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
    `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    ECHO Stopping %%F
    az vm stop --ids %%F
)

另請參閱