Delen via


Batch-resources beheren met PowerShell-cmdlets

Met de Azure Batch PowerShell-cmdlets kunt u veel algemene Batch-taken uitvoeren en scripten. Dit is een korte inleiding in de cmdlets die u kunt gebruiken om uw Batch-accounts te beheren en te werken met uw Batch-resources, zoals pools en taken.

Zie Naslaginformatie over Azure Batch-cmdlets voor een volledige lijst met Batch-cmdlets en gedetailleerde cmdlet-syntaxis.

Het wordt aangeraden uw Azure PowerShell-modules regelmatig bij te werken om te profiteren van service-updates en -verbeteringen.

Vereisten

  • De Azure PowerShell-module installeren en configureren. Zie de PowerShell Gallery voor het installeren van een specifieke Azure Batch-module, zoals een prerelease-module.

  • Voer de cmdlet Connect-AzAccount uit om verbinding te maken met uw abonnement (de Azure Batch-cmdlets zijn meegeleverd in de Azure Resource Manager-module):

    Connect-AzAccount
    
  • Registreer bij de naamruimte van de Batch-provider. U hoeft deze bewerking slechts één keer per abonnement uit te voeren.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Batch-accounts en -sleutels beheren

Een Batch-account maken

Met New-AzBatchAccount wordt een Batch-account in een opgegeven resourcegroep gemaakt. Als u nog geen resourcegroep hebt, maakt u er een door de cmdlet New-AzResourceGroup uit te voeren. Geef een van de Azure-gebieden op in de parameter locatie, bijvoorbeeld 'US - centraal'. Bijvoorbeeld:

New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"

Maak vervolgens een Batch-account in de resourcegroep. Geef een naam op voor het account in <account_name> en de locatie en naam van uw resourcegroep. Het kan even duren voordat het Batch-account is gemaakt. Bijvoorbeeld:

New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>

Notitie

De Batch-accountnaam moet uniek zijn voor de Azure-regio voor de resourcegroep, minimaal 3 en maximaal 24 tekens bevatten en alleen bestaan uit kleine letters en cijfers.

Toegangssleutels van account ophalen

Met Get-AzBatchAccountKeys worden de toegangssleutels weergegeven die aan een Azure Batch-account zijn gekoppeld. Voer bijvoorbeeld de volgende opdracht uit om de primaire en secundaire sleutels op te halen van het account dat u hebt gemaakt.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Een nieuwe toegangssleutel genereren

Met New-AzBatchAccountKey wordt een nieuwe primaire of secundaire accountsleutel voor een Azure Batch-account gegenereerd. Typ bijvoorbeeld de volgende opdracht voor het genereren van een nieuwe primaire sleutel voor het Batch-account:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Notitie

Als u een nieuwe secundaire sleutel wilt genereren, geeft u 'Secundair' op voor de parameter KeyType. U moet de primaire en secundaire sleutels afzonderlijk opnieuw genereren.

Batch-account verwijderen

Met Remove-AzBatchAccount wordt een Batch-account verwijderd. Bijvoorbeeld:

Remove-AzBatchAccount -AccountName <account_name>

Als hierom wordt gevraagd, bevestigt u dat u het account wilt verwijderen. Het kan even duren voordat het account is verwijderd.

Een BatchAccountContext-object maken

U kunt verifiëren om Batch-resources te beheren met behulp van verificatie met gedeelde sleutels of Microsoft Entra-verificatie. Voor verificatie met behulp van de Batch PowerShell-cmdlets maakt u eerst een BatchAccountContext-object om uw accountreferenties of identiteit in op te slaan. U geeft het BatchAccountContext-object door aan cmdlets waarvoor de parameter BatchContext wordt gebruikt.

Gedeelde sleutelverificatie

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Notitie

Standaard wordt de primaire sleutel van het account gebruikt voor verificatie, maar u kunt expliciet de te gebruiken sleutel selecteren door de eigenschap KeyInUse van het object BatchAccountContext te wijzigen: $context.KeyInUse = "Secondary".

Microsoft Entra-verificatie

$context = Get-AzBatchAccount -AccountName <account_name>

Batch-resources maken en wijzigen

Gebruik cmdlets zoals New-AzBatchPool, New-AzBatchJob en New-AzBatchTask om resources onder een Batch-account te maken. Er zijn overeenkomende Get-- en Set--cmdlets voor het bijwerken van de eigenschappen van bestaande resources en Remove--cmdlets om resources onder een Batch-account te verwijderen.

Wanneer u veel van deze cmdlets gebruikt, moet u niet alleen een BatchContext-object doorgeven, maar ook objecten maken of doorgeven die gedetailleerde resource-instellingen bevatten, zoals weergegeven in het volgende voorbeeld. Raadpleeg de gedetailleerde Help-informatie voor elke cmdlet voor meer voorbeelden.

Een Batch-pool maken

Wanneer u een Batch-pool maakt of bijwerkt, geeft u een configuratie op. Pools moeten over het algemeen worden geconfigureerd met configuratie van virtuele machines, waarmee u een van de ondersteunde Linux- of Windows-VM-installatiekopieën kunt opgeven die worden vermeld in azure Virtual Machines Marketplace, of een aangepaste installatiekopieën opgeven die u hebt voorbereid. Cloud Services-configuratiegroepen bieden alleen Windows-rekenknooppunten en bieden geen ondersteuning voor alle Batch-functies.

Wanneer u New-AzBatchPool uitvoert, geeft u de besturingssysteeminstellingen door in een PSVirtualMachineConfiguration- of PSCloudServiceConfiguration-object. Met het volgende codefragment wordt bijvoorbeeld een Batch-pool gemaakt met de grootte Standard_A1 rekenknooppunten in de configuratie van de virtuele machine, die is gemaakt met Ubuntu Server 20.04-LTS. Hier geeft de parameter VirtualMachineConfiguration de variabele $configuration op als het PSVirtualMachineConfiguration-object. Met de parameter BatchContext wordt een eerder gedefinieerde variabele $context opgegeven als het BatchAccountContext-object.

$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

Het doelaantal rekenknooppunten in de nieuwe pool wordt berekend met een formule voor automatisch schalen. In dit geval is de formule gewoon $TargetDedicated=4, waarmee wordt aangegeven dat het aantal rekenknooppunten in de pool maximaal 4 is.

Query voor pools, jobs, taken en andere details

Gebruik cmdlets zoals Get-AzBatchPool, Get-AzBatchJob en Get-AzBatchTask om een query uit te voeren voor entiteiten die zijn gemaakt onder een Batch-account.

Query voor gegevens

Gebruik bijvoorbeeld Get-AzBatchPools om uw pools te vinden. Standaard wordt deze query voor alle pools onder uw account uitgevoerd, in de veronderstelling dat u het object BatchAccountContext al hebt opgeslagen in $context:

Get-AzBatchPool -BatchContext $context

Een OData-filter gebruiken

U kunt een OData-filter opgeven met behulp van de parameter Filter om alleen de objecten te zoeken waarin u bent geïnteresseerd. U kunt bijvoorbeeld alle pools zoeken met id's die beginnen met 'myPool':

$filter = "startswith(id,'myPool')"

Get-AzBatchPool -Filter $filter -BatchContext $context

Deze methode is niet zo flexibel als het gebruik van een 'Where-Object' in een lokale pijplijn. De query wordt rechtstreeks naar de Batch-service verzonden zodat al het filteren aan de serverzijde plaatsvindt, waardoor er internetbandbreedte wordt bespaard.

De parameter Id gebruiken

Een alternatief voor een OData-filter is het gebruik van de parameter Id. Als u een query uit wilt voeren voor een specifieke pool met id 'myPool':

Get-AzBatchPool -Id "myPool" -BatchContext $context

Met de parameter Id wordt alleen een zoekopdracht voor een volledige id ondersteund, geen jokertekens of filters van het OData-type.

De parameter MaxCount gebruiken

Standaard worden met elke cmdlet maximaal 1000 objecten geretourneerd. Als deze limiet is bereikt, moet u uw filter verfijnen zodat er minder objecten worden opgehaald, of moet u expliciet een maximum instellen met de parameter MaxCount. Bijvoorbeeld:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Als u de bovengrens wilt verwijderen, stelt u MaxCount in op 0 of minder.

De PowerShell-pijplijn gebruiken

Batch-cmdlets gebruiken de PowerShell-pijplijn om gegevens tussen cmdlets te verzenden. Dit heeft hetzelfde effect als het opgeven van een parameter, maar het vergemakkelijkt het werken met meerdere entiteiten.

Zo kunt u bijvoorbeeld alle taken onder uw account zoeken en weergeven:

Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context

Start elk computerknooppunt in een groep opnieuw op:

Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Beheer van toepassingspakketten

Toepassingspakketten bieden een vereenvoudigde manier om toepassingen te implementeren op de rekenknooppunten in uw pools. Met de Batch PowerShell-cmdlets kunt u toepassingspakketten in uw Batch-account uploaden en beheren, en pakketversies implementeren op rekenknooppunten.

Belangrijk

U moet een Azure Storage-account koppelen aan het Batch-account om toepassingspakketten te kunnen gebruiken.

Een toepassing maken:

New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Een toepassingspakket toevoegen:

New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip

Stel de standaardversie voor de toepassing in:

Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"

Geeft een overzicht van de pakketten van een toepassing

$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

$application.ApplicationPackages

Een toepassingspakket verwijderen

Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"

Een toepassing verwijderen

Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Notitie

Voordat u de toepassing verwijdert, moet u alle versies van de toepassingspakketten van een toepassing verwijderen. U ontvangt een 'conflictfout' als u een toepassing probeert te verwijderen die nog toepassingspakketten heeft.

Een toepassingspakket implementeren

U kunt een of meer toepassingspakketten voor implementatie opgeven wanneer u een groep maakt. Wanneer u een pakket opgeeft tijdens het maken van een groep, wordt dit pakket geïmplementeerd op elk knooppunt dat wordt gekoppeld aan de groep. Pakketten worden ook geïmplementeerd als een knooppunt opnieuw wordt gestart of teruggezet.

Geef de optie voor -ApplicationPackageReference op als u een groep maakt, zodat een toepassingspakket wordt geïmplementeerd naar de knooppunten van de groep wanneer deze lid worden van de groep. Maak eerst een PSApplicationPackageReference-object en configureer dit met de toepassings-id en pakketversie die u wilt implementeren op de rekenknooppunten van de groep:

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Nu maakt u de adresgroep en geeft u het pakketverwijzingsobject op als het argument voor de optie ApplicationPackageReferences:

New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Zie Deploy applications to compute nodes with Batch application packages (Toepassingen implementeren naar rekenknooppunten met Batch-toepassingspakketten) voor meer informatie over toepassingspakketten.

De toepassingspakketten van een groep bijwerken

Als u de toepassingen wilt bijwerken die zijn toegewezen aan een bestaande groep, maakt u eerst een PSApplicationPackageReference-object met de gewenste eigenschappen (toepassings-id en pakketversie):

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Haal vervolgens de pool op uit Batch, wis alle bestaande pakketten, voeg de nieuwe pakketreferentie toe en werk de Batch-service bij met de nieuwe poolinstellingen:

$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Nu hebt u de eigenschappen van de adresgroep bijgewerkt in de Batch-service. Voor de werkelijke implementatie van het nieuwe toepassingspakket op rekenknooppunten in de adresgroep moet u deze knooppunten echter opnieuw starten of de installatiekopie ervan terugzetten. U kunt elk knooppunt in een adresgroep met de volgende opdracht opnieuw starten:

Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Fooi

U kunt meerdere toepassingspakketten op de rekenknooppunten in de adresgroep implementeren. Als u een toepassingspakket wilt toevoegen in plaats van de momenteel geïmplementeerde pakketten te vervangen, laat u de $pool.ApplicationPackageReferences.Clear() bovenstaande regel weg.

Volgende stappen