使用 Azure Batch PowerShell Cmdlet,您可以執行並編寫許多常見 Batch 工作的腳本。 這是您可以用來管理 Batch 帳號及操作 Batch 資源(如集區、工作等)的 Cmdlet 命令快速簡介。
如需 Batch Cmdlet 和詳細 Cmdlet 語法的完整清單,請參閱 Azure Batch Cmdlet 參考。
建議您經常更新 Azure PowerShell 模組,以利用服務更新和增強功能。
先決條件
安裝和設定 Azure PowerShell 模組。 若要安裝特定的 Azure Batch 模組,例如發行前版本模組,請參閱 PowerShell 資源庫。
執行 Connect-AzAccount Cmdlet 以連線到您的訂用帳戶(Azure Resource Manager 模組中的 Azure Batch Cmdlet 隨附):
Connect-AzAccount
向 Batch 提供者命名空間註冊。 您只需要 針對每個訂用帳戶執行此作業一次。
Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
管理 Batch 帳戶和金鑰
建立 Batch 帳戶
New-AzBatchAccount 會在指定的資源群組中建立 Batch 帳戶。 如果您還沒有資源群組,請執行 New-AzResourceGroup Cmdlet 來建立一個資源群組。 在 Location 參數中指定其中一個 Azure 區域,例如「美國中部」。 例如:
New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"
然後,在資源群組中建立 Batch 帳戶。 在 account_name> 中<指定帳戶的名稱,以及資源群組的位置和名稱。 建立 Batch 帳戶可能需要一些時間才能完成。 例如:
New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>
備註
Batch 帳戶名稱對於資源群組的 Azure 區域必須是唯一的,包含介於 3 到 24 個字元之間,且只使用小寫字母和數位。
取得帳戶存取金鑰
Get-AzBatchAccountKeys 會顯示與 Azure Batch 帳戶相關聯的存取密鑰。 例如,執行下列命令以取得您所建立帳戶的主要和次要密鑰。
$Account = Get-AzBatchAccountKeys –AccountName <account_name>
$Account.PrimaryAccountKey
$Account.SecondaryAccountKey
產生新的存取金鑰
New-AzBatchAccountKey 會為 Azure Batch 帳戶產生新的主要或次要帳戶密鑰。 例如,若要為您的 Batch 帳戶產生新的主鍵,請輸入:
New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary
備註
若要產生新的次要密鑰,請為 KeyType 參數指定 「Secondary」。。 您必須個別重新產生主要和次要金鑰。
刪除 Batch 帳戶
Remove-AzBatchAccount 會刪除 Batch 帳戶。 例如:
Remove-AzBatchAccount -AccountName <account_name>
出現提示時,請確認您想要移除帳戶。 帳戶移除可能需要一些時間才能完成。
建立 BatchAccountContext 物件
您可以使用共用金鑰驗證或Microsoft Entra 驗證來驗證以管理 Batch 資源。 若要使用 Batch PowerShell Cmdlet 進行驗證,請先建立 BatchAccountContext 對象來儲存您的帳戶認證或身分識別。 您會將 BatchAccountContext 對象傳遞至使用 BatchContext 參數的 Cmdlet。
共用金鑰驗證
$context = Get-AzBatchAccountKeys -AccountName <account_name>
備註
根據預設,帳戶的主鍵會用於驗證,但您可以藉由變更 BatchAccountContext 物件的 KeyInUse 屬性來明確選取要使用的密鑰: $context.KeyInUse = "Secondary"
。
Microsoft Entra 驗證
$context = Get-AzBatchAccount -AccountName <account_name>
建立和修改 Batch 資源
使用 New-AzBatchPool、New-AzBatchJob 和 New-AzBatchTask 等 Cmdlet,在 Batch 帳戶下建立資源。 有對應的 Get 和 Set- Cmdlet 可更新現有資源的屬性,以及 Remove- Cmdlet 以移除 Batch 帳戶下的資源。
使用其中許多 Cmdlet 時,除了傳遞 BatchContext 物件之外,您還需要建立或傳遞包含詳細資源設定的物件,如下列範例所示。 如需其他範例,請參閱每個 Cmdlet 的詳細說明。
建立 Batch 集區
建立或更新 Batch 集區時,您可以指定設定。 集區通常應該使用虛擬機器組態來設定,這可讓您選擇指定 Azure 虛擬機器 Marketplace 中列出的其中一個支援的 Linux 或 Windows VM 映像,或提供您已備妥的自訂映像。 雲端服務組態集區僅提供 Windows 計算節點,且不支援所有 Batch 功能。
當您執行 New-AzBatchPool 時,請在 PSVirtualMachineConfiguration 或 PSCloudServiceConfiguration 對象中傳遞作系統設定。 例如,下列程式碼片段會使用虛擬機器組態中的 Standard_A1 計算節點建立 Batch 集區,並以 Ubuntu Server 20.04-LTS 製作映像。 在這裡, VirtualMachineConfiguration 參數會將 $configuration 變數指定為 PSVirtualMachineConfiguration 物件。 BatchContext 參數會將先前定義的變數指定為 BatchAccountContext 物件$context。
$imageRef = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("UbuntuServer","Canonical","20.04-LTS")
$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageRef, "batch.node.ubuntu 20.04")
New-AzBatchPool -Id "mypspool" -VirtualMachineSize "Standard_a1" -VirtualMachineConfiguration $configuration -AutoScaleFormula '$TargetDedicated=4;' -BatchContext $context
新集區中計算節點的目標數目會由自動調整公式計算。 在此情況下,公式只會 $TargetDedicated=4,表示集區中的計算節點數目最多為 4。
查詢集區、作業、工作及其他詳細資料
使用 Get-AzBatchPool、Get-AzBatchJob 和 Get-AzBatchTask 等 Cmdlet 來查詢 Batch 帳戶下建立的實體。
查詢資料
例如,使用 Get-AzBatchPools 尋找您的集區。 根據預設,此查詢帳戶下的所有集區,假設您已將 BatchAccountContext 物件儲存在 $context:
Get-AzBatchPool -BatchContext $context
使用 OData 篩選
您可以使用 Filter 參數來提供 OData 篩選條件,只尋找您感興趣的物件。 例如,您可以尋找識別碼以 “myPool” 開頭的所有集區:
$filter = "startswith(id,'myPool')"
Get-AzBatchPool -Filter $filter -BatchContext $context
雖然這個方法比在本機管線中使用 “Where-Object” 較不具有彈性。 不過,查詢會直接傳送至 Batch 服務,讓所有篩選都發生在伺服器端,以節省因特網頻寬。
使用Id參數
OData 篩選的替代方法是使用 Id 參數。 若要查詢標識碼為 「myPool」 的特定集區:
Get-AzBatchPool -Id "myPool" -BatchContext $context
Id 參數僅支援完整標識符搜尋;不是通配符或 OData 樣式篩選。
使用 MaxCount 參數
根據預設,每個 Cmdlet 最多會傳回 1000 個物件。 如果您達到此限制,請精簡篩選條件以帶回較少的物件,或使用 MaxCount 參數明確設定最大值。 例如:
Get-AzBatchTask -MaxCount 2500 -BatchContext $context
若要移除上限,請將 MaxCount 設定為0或更少。
使用 PowerShell 管線
Batch Cmdlet 會使用 PowerShell 管線在 Cmdlet 之間傳送數據。 這與指定參數的效果相同,但讓使用多個實體更容易。
例如,尋找並顯示您的帳戶下的所有工作:
Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context
重新啟動集區中的每個計算節點︰
Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
應用程式套件管理
應用程式套件 提供簡化的方式,可將應用程式部署至集區中的計算節點。 使用 Batch PowerShell Cmdlet,您可以在 Batch 帳戶中上傳及管理應用程式套件,並將套件版本部署至計算節點。
這很重要
您必須將 Azure 記憶體帳戶連結至 Batch 帳戶,才能使用應用程式套件。
建立 應用程式:
New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
新增 應用程式套件:
New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip
設定應用程式 的預設版本 :
Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"
列出應用程式的套件
$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
$application.ApplicationPackages
刪除 應用程式套件
Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"
刪除 應用程式
Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
備註
您必須先刪除應用程式的所有應用程式套件版本,才能刪除應用程式。 如果您嘗試刪除目前有應用程式套件的應用程式,您會收到「衝突」錯誤。
部署應用程式套件
您可以在建立集區時指定一或多個應用程式套件進行部署。 若您在建立集區時指定了套件,套件將會在節點加入集區時部署至每個節點。 當節點重新啟動或重新映射時,也會部署套件。
在建立集區時指定-ApplicationPackageReference
選項,以便將應用程式套件部署到加入集區的節點。 首先,建立 PSApplicationPackageReference 物件,並使用您想要部署到集區計算節點的應用程式識別碼和套件版本進行設定:
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "1.0"
現在建立集區,並指定套件參考物件做為 ApplicationPackageReferences
選項的引數︰
New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference
您可以在 使用 Batch 應用程式套件將應用程式部署至計算節點中找到應用程式套件的詳細資訊。
更新集區的應用程式套件
若要更新指派給現有集區的應用程式,請先建立具有所需屬性的 PSApplicationPackageReference 物件(應用程式識別符和套件版本):
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "2.0"
接下來,從 Batch 取得集區、清除任何現有的套件、新增套件參考,並使用新的集區設定更新 Batch 服務:
$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"
$pool.ApplicationPackageReferences.Clear()
$pool.ApplicationPackageReferences.Add($appPackageReference)
Set-AzBatchPool -BatchContext $context -Pool $pool
您現在已更新 Batch 服務中集區的屬性。 若要實際將新的應用程式套件部署到集區中的計算節點,不過,您必須重新啟動或重新映像這些節點。 您可以使用此指令重新啟動集區中的每個節點:
Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
小提示
您可以將多個應用程式套件部署到集區中的計算節點。 如果您想要新增應用程式套件,而不是取代目前部署的套件,請省略 $pool.ApplicationPackageReferences.Clear()
上述這一行。
後續步驟
- 如需詳細的 Cmdlet 語法和範例,請檢閱 Azure Batch Cmdlet 參考 。
- 瞭解如何 使用 Batch 應用程式套件將應用程式部署至計算節點。