成功使用 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 問題:
包含文章連結的主題區域 | 提示 |
---|---|
在 Proxy 後方工作 | 如何透過 Proxy 伺服器工作的相關信息。 |
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
針對多重值清單,請考慮下列選項:
- 如果您需要對結果有更多的控件,請使用 「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
- 或者,使用
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 "{}"
- 最後,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 resource 或 az 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
)