使用執行命令在 VM 中執行指令碼
執行命令使用虛擬機器 (VM) 代理程式在 Azure Windows 或 Linux VM 中執行指令碼。 您可以使用這些指令碼,進行一般電腦或應用程式管理。 這些指令碼能協助快速診斷和修復 VM 存取與網路問題,並讓 VM 恢復正常狀態。 指令碼可以內嵌在屬性中,或參考預先發佈的資源庫指令碼。
原始的命令集以動作為導向。 更新的命令集以管理為導向,可讓您執行多個指令碼且限制較少。 本文將說明這兩種執行命令集之間的差異,並協助您決定您的案例中要使用的正確命令集。
重要
受控執行命令目前可用於 Azure CLI、PowerShell 和 API。 入口網站的功能即將推出。
使用動作或受控命令的時機
原始的命令集以動作為導向。 若是下列必須執行的情況,您應該考慮使用這種命令集:
- 要從 VM 取得內容的小型指令碼
- 設定 VM 的指令碼 (設定登入機碼、變更組態)
- 用於診斷的一次性指令碼
如需可用的動作命令以及如何套用這些命令的指示,請參閱適用於 Linux 的動作執行命令和適用於 Windows 的動作執行命令。
更新的命令集以管理為導向。 如果您的需求與下列範例一致,請考慮使用受控執行命令:
- 指令碼必須做為 VM 部署的一部分執行
- 必須週期性執行指令碼
- 必須循序執行多個指令碼
- 透過執行安裝指令碼來啟動 VM
- 發佈要共用和重複使用的自訂指令碼
如需了解如何使用這些命令,請參閱適用於Linux 的受控執行命令和適用於 Windows 的受控執行命令。
注意
允許的受控執行命令數目上限目前限制為 25 個。
功能支援的比較
功能支援 | 動作 RunCommand | 受控 RunCommand |
---|---|---|
ARM 範本 | 否,這是 POST 動作 | 是,這是資源類型 |
長時間執行 | 限制 90 分鐘 | 客戶指定的逾時時間 |
執行帳戶 | 系統帳戶 / root | 客戶指定的使用者 |
多個執行命令 | 僅限一個作用中 | 多個平行或循序多個 |
大型輸出 | 限制為 4k (在狀態 Blob 中 ) | 上傳至客戶的附加 Blob |
追蹤進度 | 僅報告最終狀態 | 報告執行期間的進度和最後 4k 的輸出 |
非同步執行 | 目標狀態/佈建等候指令碼完成 | 客戶指定的非同步旗標 (若佈建等候指令碼的話) |
虛擬機器擴展集支援 | 只在 VM 執行個體上 | 支援虛擬機擴展集模型和擴增 |
產生 SAS | Blob 不支援 | CRP 自動產生客戶 Blob 的 SAS 並加以管理 |
資源庫 (自訂命令) | 僅限內建 commandId | 客戶可以發佈指令碼並共用指令碼 |