Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Azure Batch PowerShell-cmdlet kan du utföra och script många vanliga Batch-uppgifter. Detta är en kort introduktion till de cmdlets du kan använda för att hantera dina Batch-konton och arbeta med dina Batch-resurser som pooler, jobb och uppgifter.
För en komplett lista över Batch cmdlets och detaljerad cmdlet-syntax, se Azure Batch cmdlet-referensen.
Vi rekommenderar att du uppdaterar dina Azure PowerShell moduler ofta för att dra nytta av tjänstuppdateringar och förbättringar.
Förutsättningar
Installera och konfigurera modulen Azure PowerShell. För att installera en specifik Azure Batch-modul, såsom en förhandsversion, se PowerShell Gallery.
Kör cmdlet Connect-AzAccount för att ansluta till din prenumeration (Azure Batch-cmdlets ingår i Azure Resource Manager-modulen).
Connect-AzAccountRegistrera dig med Batch-providerns namnområde. Du behöver bara utföra denna åtgärd en gång per prenumeration.
Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
Hantera Batch-konton och -nycklar
Skapa ett Batch-konto
New-AzBatchAccount skapar ett Batch-konto i en angiven resursgrupp. Om du inte redan har en resursgrupp, skapa en genom att köra cmdlet:en New-AzResourceGroup. Ange en av de Azure regionerna i parametern Plats, till exempel "USA, centrala". Till exempel:
New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"
Sedan, skapa ett Batch-konto i resursgruppen. Ange ett namn för kontot i <account_name>, samt plats och namn för din resursgrupp. Att skapa Batch-kontot kan ta lite tid att slutföra. Till exempel:
New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>
Anmärkning
Batchkontots namn måste vara unikt inom Azure-regionen för resursgruppen, innehålla mellan 3 och 24 tecken och endast använda gemener och siffror.
Skaffa kontots åtkomstnycklar
Get-AzBatchAccountKeys visar de åtkomstnycklar som är associerade med ett Azure Batch konto. Till exempel, kör följande för att få de primära och sekundära nycklarna för det konto du skapade.
$Account = Get-AzBatchAccountKeys –AccountName <account_name>
$Account.PrimaryAccountKey
$Account.SecondaryAccountKey
Skapa en ny åtkomstnyckel
New-AzBatchAccountKey genererar en ny primär eller sekundär kontonyckel för ett Azure Batch-konto. Till exempel, för att generera en ny primärnyckel för ditt Batch-konto, skriv:
New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary
Anmärkning
För att generera en ny sekundärnyckel, ange "Secondary" för KeyType-parametern. Du måste återskapa de primära och sekundära nycklarna separat.
Ta bort ett Batch-konto
Remove-AzBatchAccount tar bort ett Batch-konto. Till exempel:
Remove-AzBatchAccount -AccountName <account_name>
Bekräfta att du vill ta bort kontot när du uppmanas att göra det. Det kan ta lite tid att ta bort kontot.
Skapa ett BatchAccountContext-objekt
Du kan autentisera för att hantera Batch-resurser genom att använda antingen delad nyckelautentisering eller Microsoft Entra-autentisering. Om du vill autentisera med hjälp av Batch PowerShell-cmdletar skapar du först ett BatchAccountContext-objekt för att lagra dina kontoautentiseringsuppgifter eller din identitet. Du skickar BatchAccountContext-objektet till cmdletar som använder BatchContext-parametern.
Autentisering med delad nyckel
$context = Get-AzBatchAccountKeys -AccountName <account_name>
Anmärkning
Som standard används kontots primära nyckel för autentisering, men du kan uttryckligen välja den nyckel som ska användas genom att ändra batchaccountContext-objektets KeyInUse-egenskap : $context.KeyInUse = "Secondary".
Microsoft Entra-autentisering
$context = Get-AzBatchAccount -AccountName <account_name>
Skapa och modifiera Batch-resurser
Använd cmdletar som New-AzBatchPool, New-AzBatchJob och New-AzBatchTask för att skapa resurser under ett Batch-konto. Det finns motsvarande Get- och Set- cmdlets för att uppdatera egenskaperna hos befintliga resurser, och Remove- cmdlets för att ta bort resurser under ett Batch-konto.
När du använder många av dessa cmdletar, förutom att skicka ett BatchContext-objekt, måste du skapa eller skicka objekt som innehåller detaljerade resursinställningar, som du ser i följande exempel. Mer information finns i den detaljerade hjälpen för varje cmdlet.
Skapa en Batch pool
När du skapar eller uppdaterar en Batch-pool anger du en konfiguration. Pooler bör vanligtvis konfigureras med Konfiguration av virtuella datorer, vilket gör att du antingen kan ange en av de Linux- eller Windows VM-avbildningar som stöds i Azure Virtual Machines Marketplace eller tillhandahålla en anpassad avbildning som du har förberett. Molntjänsters konfigurationspooler tillhandahåller endast Windows-beräkningsnoder och stöder inte alla funktioner i Batch.
När du kör New-AzBatchPool, skicka operativsysteminställningarna i ett PSVirtualMachineConfiguration- eller PSCloudServiceConfiguration-objekt. Till exempel skapar följande kodsnutt en Batch-pool med storlek Standard_A1 beräkningsnoder i den virtuella maskinkonfigurationen, avbildad med Ubuntu Server 20.04-LTS. Här anger parametern VirtualMachineConfiguration variabeln $configuration som objektet PSVirtualMachineConfiguration. Parametern BatchContext anger en tidigare definierad variabel $context som BatchAccountContext-objektet.
$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
Målantalet beräkningsnoder i den nya poolen beräknas med en autoskalningsformel. I det här fallet är formeln helt enkelt $TargetDedicated=4, vilket anger att antalet beräkningsnoder i poolen är högst 4.
Fråga efter pooler, jobb, uppgifter och annan information
Använd cmdletar som Get-AzBatchPool, Get-AzBatchJob och Get-AzBatchTask för att fråga efter entiteter som skapats under ett Batch-konto.
Fråga efter data
Som ett exempel, använd Get-AzBatchPools för att hitta dina pooler. Som standard frågar den här efter alla pooler under ditt konto, förutsatt att du redan har lagrat objektet BatchAccountContext i $context:
Get-AzBatchPool -BatchContext $context
Använd ett OData-filter
Du kan tillhandahålla ett OData-filter genom att använda Filter-parametern för att endast hitta de objekt du är intresserad av. Du kan till exempel hitta alla pooler med ID:t som börjar med "myPool":
$filter = "startswith(id,'myPool')"
Get-AzBatchPool -Filter $filter -BatchContext $context
Den här metoden är inte lika flexibel som att använda "Where-Object" i en lokal pipeline. Frågan skickas dock direkt till Batch-tjänsten så att all filtrering sker på serversidan, vilket sparar internetbandbredd.
Använda ID-parametern
Ett alternativ till ett OData-filter är att använda parametern Id. För att fråga efter en specifik pool med id "myPool":
Get-AzBatchPool -Id "myPool" -BatchContext $context
Parametern Id stöder endast sökning med fullständigt ID; inte jokertecken eller filter av OData-typ.
Använda parametern MaxCount
Som standard returnerar varje cmdlet högst 1000 objekt. Om du når den här gränsen kan du antingen förfina filtret för att få tillbaka färre objekt eller uttryckligen ange ett maximum med hjälp av parametern MaxCount . Till exempel:
Get-AzBatchTask -MaxCount 2500 -BatchContext $context
För att ta bort den övre gränsen, sätt MaxCount till 0 eller mindre.
Använd PowerShell-pipelinen
Batch-cmdletar använder PowerShell-pipelinen för att skicka data mellan cmdletar. Detta har samma effekt som att specificera en parameter, men gör det enklare att arbeta med flera enheter.
Till exempel, hitta och visa alla uppgifter under ditt konto.
Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context
Starta om (starta om) varje beräkningsnod i en pool:
Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
Hantering av programpaket
Programpaket är ett förenklat sätt att distribuera program till beräkningsnoderna i dina pooler. Med hjälp av Batch PowerShell-cmdlets kan du ladda upp och hantera applikationspaket i ditt Batch-konto samt distribuera paketversioner till datorkluster.
Viktigt!
Du måste länka ett Azure Storage-konto till ditt Batch-konto för att kunna använda programpaket.
Skapa en applikation:
New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
Lägg till ett applikationspaket:
New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip
Ställ in standardversionen för applikationen:
Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"
Lista en applikations paket
$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
$application.ApplicationPackages
Ta bort ett programpaket
Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"
Ta bort en applikation
Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
Anmärkning
Du måste radera alla versioner av en applikations applikationspaket innan du raderar applikationen. Du får felmeddelandet "Konflikt" om du försöker ta bort ett program som för närvarande har programpaket.
Distribuera ett applikationspaket
Du kan ange ett eller flera programpaket för distribution när du skapar en pool. När du anger ett paket vid skapandet av poolen distribueras det till varje nod när noden går med i poolen. Paket distribueras också när en nod startas om eller ombildas.
Ange alternativet -ApplicationPackageReference när du skapar en pool för att distribuera ett programpaket till poolens noder när de ansluter till poolen. Först, skapa ett PSApplicationPackageReference-objekt och konfigurera det med applikations-ID:t och paketversionen du vill distribuera till poolens beräkningsnoder.
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "1.0"
Skapa nu poolen och ange paketreferensobjektet som argument till ApplicationPackageReferences-alternativet.
New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference
Mer information om programpaket finns i Distribuera program till beräkningsnoder med Batch-programpaket.
Uppdatera poolens applikationspaket
Om du vill uppdatera de program som tilldelats till en befintlig pool skapar du först ett PSApplicationPackageReference-objekt med önskade egenskaper (program-ID och paketversion):
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "2.0"
Hämta sedan poolen från Batch, rensa eventuella befintliga paket, lägg till den nya paketreferensen och uppdatera Batch-tjänsten med de nya poolinställningarna:
$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"
$pool.ApplicationPackageReferences.Clear()
$pool.ApplicationPackageReferences.Add($appPackageReference)
Set-AzBatchPool -BatchContext $context -Pool $pool
Du har nu uppdaterat poolens egenskaper i Batch-tjänsten. Om du vill distribuera det nya programpaketet till beräkningsnoder i poolen måste du dock starta om eller återskapa dessa noder. Du kan starta om varje nod i en pool med det här kommandot:
Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
Tips/Råd
Du kan distribuera flera applikationspaket till beräkningsnoderna i en pool. Om du vill lägga till ett programpaket i stället för att ersätta de för närvarande distribuerade paketen $pool.ApplicationPackageReferences.Clear() utelämnar du raden ovan.
Nästa steg
- Granska Azure Batch cmdlet-referensen för detaljerad cmdlet-syntax och exempel.
- Lär dig hur du distribuerar program till beräkningsnoder med Batch-programpaket.