在已啟用 Azure Arc 的伺服器上使用 REST API for Run 命令(預覽),您可以在已啟用 Arc 的虛擬機上遠端安全地執行腳本或命令,而不需要透過遠端桌面通訊協定或 SSH 直接連線到它們。
本文提供支援的 REST API 作業和範例案例,可協助您瞭解如何使用 REST API。
先決條件
- 已啟用 Arc 之伺服器上的連線機器代理程式版本必須是 1.33 或更高版本。
- 您需要存取權杖才能使用 REST API。 請參閱 開始使用 REST。
支援的 REST API 作業
您可以使用下列 REST API 作業,在已啟用 Azure Arc 的伺服器上執行執行命令。
作業 | 說明 |
---|---|
建立或更新 | 建立或更新執行命令的作業。 執行運行命令。 |
刪除 | 刪除執行命令的作業。 如果正在執行,刪除也會停止執行命令。 |
獲取 | 取得執行命令的作業。 |
清單 | 取得已啟用 Azure Arc 的伺服器所有執行命令的作業。 |
更新 | 更新執行命令的作業。 停止先前的 [執行] 命令。 |
備註
每次執行 Run 命令腳本時,輸出和錯誤 Blob 資料都會被覆寫。
範例 REST API 案例
下列要求會逐步引導您使用 [執行] 命令從遠端設定允許存取端點 www.microsoft.com/pkiops/certs
的防火牆規則。 此範例案例會使用每個可用的 REST 作業。
程式代碼範例會使用下列資訊:
-
訂用帳戶標識碼 -
aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
-
已啟用 Arc 的伺服器名稱 -
2012DatacenterServer1
-
資源群組 -
ContosoRG
- 伺服器的作系統 - Windows Server 2012 / R2 伺服器
步驟 1:使用執行命令建立端點存取
使用 PUT 作業建立提供端點存取的執行命令指令碼,以提供已啟用 Arc 的目標伺服器上 www.microsoft.com/pkiops/certs
端點的存取權。
您可以提供內嵌指令碼,也可以連結至指令碼檔案。
若要提供內嵌指令碼:
PUT https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2024-11-10-preview
{ "location": "eastus2", "properties": { "source": { "script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol" }, "parameters": [ { "name": "ruleName", "value": "Allow access to www.microsoft.com/pkiops/certs" }, { "name": "endpoint", "value": "www.microsoft.com/pkiops/certs" }, { "name": "port", "value": 433 }, { "name": "protocol", "value": "TCP" } ], "asyncExecution": false, "runAsUser": "contoso-user1", "runAsPassword": "Contoso123!" "timeoutInSeconds": 3600, "outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt", "errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt" } }
若要連結至文稿檔案:
備註
此範例假設您已準備名為
newnetfirewallrule.ps1
的檔案,其中包含內嵌腳本,並將腳本上傳至 Blob 記憶體。PUT https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2024-11-10-preview
{ "location": "eastus2", "properties": { "source": { "scriptUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/newnetfirewallrule.ps1" }, "parameters": [ { "name": "ruleName", "value": " Allow access to www.microsoft.com/pkiops/certs" }, { "name": "endpoint", "value": "www.microsoft.com/pkiops/certs" }, { "name": "port", "value": 433 }, { "name": "protocol", "value": "TCP" } ], "asyncExecution": false, "runAsUser": "contoso-user1", "runAsPassword": "Contoso123!" "timeoutInSeconds": 3600, "outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt", "errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt" } }
scriptUri
是記憶體 Blob 的共用存取簽章 (SAS) URI,而且必須提供 Blob 的讀取許可權。 SAS URI 建議到期時間為24小時。 您可以在 Azure 入口網站上使用 Blob 選項來產生 SAS URI,或使用New-AzStorageBlobSASToken
來產生 SAS 令牌。 如果使用New-AzStorageBlobSASToken
產生 SAS 令牌,則 SAS URI 格式為:base blob URL + "?"
+ 來自New-AzStorageBlobSASToken
的 SAS 令牌。輸出和錯誤 Blob 必須是 AppendBlob 類型,且其 SAS URI 必須提供 Blob 的讀取、附加、建立和寫入許可權。 SAS URI 建議到期時間為24小時。 您可以在 Azure 入口網站上使用 Blob 的選項來產生 SAS URI,或使用
New-AzStorageBlobSASToken
來產生 SAS 令牌。
若要深入瞭解共用存取簽章,請參閱使用共用存取簽章授與對 Azure 記憶體資源的有限存取權。
步驟 2:確認執行命令詳細數據
確認您已使用 GET 操作正確配置執行指令。
GET https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2024-11-10-preview
步驟 3:更新執行命令
您可以使用 PATCH 作業,以新的參數更新現有的 Run 命令。 下列範例會開啟另一個端點的存取權, *.waconazure.com,
以便連線到 Windows Admin Center。
PATCH https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2024-11-10-preview
{
"location": "eastus2",
"properties": {
"source": {
"script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
},
"parameters": [
{
"name": "ruleName",
"value": "Allow access to WAC endpoint"
},
{
"name": "endpoint",
"value": "*.waconazure.com"
},
{
"name": "port",
"value": 433
},
{
"name": "protocol",
"value": "TCP"
}
],
"asyncExecution": false,
"runAsUser": "contoso-user1",
"runAsPassword": "Contoso123!",
"timeoutInSeconds": 3600,
"outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
"errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
}
}
步驟 4:列出執行命令
刪除端點存取的執行命令之前,請確定已啟用 Arc 的伺服器沒有其他執行命令。 您可以使用 LIST 作業來取得已開啟 Arc 之伺服器上的所有執行命令:
LIST https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands?api-version=2024-11-10-preview
步驟 5:刪除執行命令
當您不再需要執行命令擴充功能時,您可以使用下列 DELETE 作業加以刪除:
DELETE https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2024-11-10-preview