Freigeben über


Verwalten von Batchressourcen mit PowerShell-Cmdlets

Mit den Azure Batch PowerShell-Cmdlets können Sie viele allgemeine Batchaufgaben ausführen und skripten. Dies ist eine schnelle Einführung in die Cmdlets, die Sie zum Verwalten Ihrer Batchkonten und zum Arbeiten mit Ihren Batchressourcen wie Pools, Aufträgen und Aufgaben verwenden können.

Eine vollständige Liste der Batch-Cmdlets und detaillierte Cmdlet-Syntax finden Sie in der Azure Batch-Cmdlet-Referenz.

Es wird empfohlen, Ihre Azure PowerShell-Module häufig zu aktualisieren, um Dienstupdates und Verbesserungen zu nutzen.

Voraussetzungen

  • Installieren und konfigurieren Sie das Azure PowerShell-Modul. Informationen zum Installieren eines bestimmten Azure Batch-Moduls, z. B. eines Vorabversionsmoduls, finden Sie im PowerShell-Katalog.

  • Führen Sie das Cmdlet Connect-AzAccount aus, um eine Verbindung mit Ihrem Abonnement herzustellen (die Azure Batch-Cmdlets werden im Azure Resource Manager-Modul ausgeliefert):

    Connect-AzAccount
    
  • Führen Sie die Registrierung beim Batch-Anbieternamespace durch. Sie müssen diesen Vorgang nur einmal pro Abonnement ausführen.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Verwalten von Batchkonten und Schlüsseln

Erstellen eines Batch-Kontos

New-AzBatchAccount erstellt ein Batchkonto in einer angegebenen Ressourcengruppe. Wenn Sie noch keine Ressourcengruppe haben, erstellen Sie eine, indem Sie das Cmdlet New-AzResourceGroup ausführen. Geben Sie eine der Azure-Regionen im Parameter "Location " an, z. B. "Central US". Beispiel:

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

Erstellen Sie dann ein Batchkonto in der Ressourcengruppe. Geben Sie einen Namen für das Konto in <account_name> sowie den Speicherort und den Namen Ihrer Ressourcengruppe an. Das Erstellen des Batchkontos kann einige Zeit in Anspruch nehmen. Beispiel:

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

Hinweis

Der Name des Batchkontos muss für die Azure-Region für die Ressourcengruppe eindeutig sein, zwischen 3 und 24 Zeichen enthalten und nur Kleinbuchstaben und Zahlen verwenden.

Abrufen von Kontozugriffsschlüsseln

Get-AzBatchAccountKeys zeigt die Zugriffstasten an, die einem Azure Batch-Konto zugeordnet sind. Führen Sie beispielsweise Folgendes aus, um die primären und sekundären Schlüssel des erstellten Kontos abzurufen.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Generieren eines neuen Zugriffsschlüssels

New-AzBatchAccountKey generiert einen neuen primären oder sekundären Kontoschlüssel für ein Azure Batch-Konto. Um beispielsweise einen neuen Primärschlüssel für Ihr Batchkonto zu generieren, geben Sie Folgendes ein:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Hinweis

Um einen neuen Sekundärschlüssel zu generieren, geben Sie "Secondary" für den KeyType-Parameter an. Sie müssen die primären und sekundären Schlüssel separat neu generieren.

Löschen eines Batch-Kontos

Remove-AzBatchAccount löscht ein Batchkonto. Beispiel:

Remove-AzBatchAccount -AccountName <account_name>

Wenn Sie dazu aufgefordert werden, bestätigen Sie, dass Sie das Konto entfernen möchten. Das Entfernen von Konten kann einige Zeit in Anspruch nehmen.

Erstellen eines BatchAccountContext-Objekts

Sie können sich authentifizieren, um Batchressourcen mithilfe der gemeinsamen Schlüsselauthentifizierung oder der Microsoft Entra-Authentifizierung zu verwalten. Um sich mit den PowerShell-Cmdlets für Batch zu authentifizieren, erstellen Sie zuerst ein BatchAccountContext-Objekt, um Ihre Kontoanmeldeinformationen oder -identität zu speichern. Sie übergeben das BatchAccountContext-Objekt an Cmdlets, die den BatchContext-Parameter verwenden.

Gemeinsame Schlüsselauthentifizierung

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Hinweis

Standardmäßig wird der Primärschlüssel des Kontos für die Authentifizierung verwendet. Sie können jedoch explizit den zu verwendenden Schlüssel auswählen, indem Sie die KeyInUse-Eigenschaft des BatchAccountContext-Objekts ändern: $context.KeyInUse = "Secondary".

Microsoft Entra-Authentifizierung

$context = Get-AzBatchAccount -AccountName <account_name>

Erstellen und Ändern von Batchressourcen

Verwenden Sie Cmdlets wie New-AzBatchPool, New-AzBatchJob und New-AzBatchTask , um Ressourcen unter einem Batchkonto zu erstellen. Es gibt entsprechende Get- und Set-Cmdlets zum Aktualisieren der Eigenschaften vorhandener Ressourcen und Remove-Cmdlets zum Entfernen von Ressourcen unter einem Batchkonto.

Wenn Sie viele dieser Cmdlets verwenden, müssen Sie zusätzlich zum Übergeben eines BatchContext-Objekts Objekte erstellen oder übergeben, die detaillierte Ressourceneinstellungen enthalten, wie im folgenden Beispiel gezeigt. Weitere Beispiele finden Sie in der detaillierten Hilfe zu den einzelnen Cmdlets.

Batch-Pool erstellen

Beim Erstellen oder Aktualisieren eines Batchpools geben Sie eine Konfiguration an. Pools sollten in der Regel mit der Konfiguration virtueller Computer konfiguriert werden, sodass Sie entweder eines der unterstützten Linux- oder Windows-VM-Images angeben können, die im Azure Virtual Machines Marketplace aufgeführt sind, oder ein benutzerdefiniertes Image bereitstellen, das Sie vorbereitet haben. Cloud Services-Konfigurationspools bieten nur Windows-Computeknoten und unterstützen nicht alle Batchfeatures.

Wenn Sie New-AzBatchPool ausführen, übergeben Sie die Betriebssystemeinstellungen in einem PSVirtualMachineConfiguration- oder PSCloudServiceConfiguration-Objekt. Der folgende Codeausschnitt erstellt beispielsweise einen Batch-Pool mit Computeknoten der Größe „Standard_A1“ in der VM-Konfiguration mit Ubuntu Server 20.04-LTS-Image. Hier gibt der Parameter VirtualMachineConfiguration die $configuration Variable als PSVirtualMachineConfiguration-Objekt an. Der Parameter BatchContext gibt eine zuvor definierte Variable $context als BatchAccountContext-Objekt an.

$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

Die Zielanzahl der Computeknoten im neuen Pool wird durch eine automatische Skalierungsformel berechnet. In diesem Fall ist die Formel einfach $TargetDedicated=4 und gibt an, dass die Anzahl der Computeknoten im Pool höchstens 4 ist.

Abfragen von Pools, Aufträgen, Aufgaben und weiteren Details

Verwenden Sie Cmdlets wie "Get-AzBatchPool", "Get-AzBatchJob" und "Get-AzBatchTask ", um unter einem Batchkonto erstellte Entitäten abzufragen.

Abfragen von Daten

Verwenden Sie beispielsweise Get-AzBatchPools , um Ihre Pools zu finden. Standardmäßig wird mit dieser Abfrage nach allen Pools unter Ihrem Konto gefragt, vorausgesetzt, das BatchAccountContext-Objekt wurde bereits in $context gespeichert.

Get-AzBatchPool -BatchContext $context

Verwenden eines OData-Filters

Sie können einen OData-Filter mithilfe des Parameters "Filter " angeben, um nur die Objekte zu finden, die Sie interessieren. Beispielsweise können Sie alle Pools mit IDs finden, die mit "myPool" beginnen:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Diese Methode ist nicht so flexibel wie die Verwendung von "Where-Object" in einer lokalen Pipeline. Die Abfrage wird jedoch direkt an den Batchdienst gesendet, sodass alle Filterung auf serverseitiger Seite erfolgt und internetbandbreite spart.

Verwenden des Id-Parameters

Eine Alternative zu einem OData-Filter ist die Verwendung des ID-Parameters . So fragen Sie einen bestimmten Pool mit der ID "myPool" ab:

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

Der Id-Parameter unterstützt nur die Voll-ID-Suche; keine Wildcards oder OData-Formatfilter.

Verwenden des MaxCount-Parameters

Standardmäßig gibt jedes Cmdlet maximal 1000 Objekte zurück. Wenn Sie diesen Grenzwert erreichen, verfeinern Sie entweder Den Filter, um weniger Objekte zurückzubringen, oder legen Sie mit dem MaxCount-Parameter explizit ein Maximum fest. Beispiel:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Um die obere Grenze zu entfernen, legen Sie MaxCount auf 0 oder weniger fest.

Verwenden der PowerShell-Pipeline

Batch-Cmdlets verwenden die PowerShell-Pipeline zum Senden von Daten zwischen Cmdlets. Dies hat die gleiche Auswirkung wie das Angeben eines Parameters, erleichtert jedoch die Arbeit mit mehreren Entitäten.

Suchen und anzeigen Sie beispielsweise alle Aufgaben unter Ihrem Konto:

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

Starten Sie jeden Computeknoten in einem Pool neu (neustarten):

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

Anwendungspaketverwaltung

Anwendungspakete bieten eine vereinfachte Möglichkeit zum Bereitstellen von Anwendungen auf den Computeknoten in Ihren Pools. Mit den Batch-PowerShell-Cmdlets können Sie Anwendungspakete in Ihrem Batchkonto hochladen und verwalten und Paketversionen für Computeknoten bereitstellen.

Wichtig

Sie müssen ein Azure Storage-Konto mit Ihrem Batchkonto verknüpfen, um Anwendungspakete zu verwenden.

Erstellen Sie eine Anwendung:

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

Hinzufügen eines Anwendungspakets:

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

Legen Sie die Standardversion für die Anwendung fest:

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

Auflisten der Pakete einer Anwendung

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

$application.ApplicationPackages

Löschen eines Anwendungspakets

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

Löschen einer Anwendung

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

Hinweis

Sie müssen alle Anwendungspaketversionen einer Anwendung löschen, bevor Sie die Anwendung löschen. Wenn Sie versuchen, eine Anwendung mit Anwendungspaketen zu löschen, wird eine Fehlermeldung "Konflikt" angezeigt.

Bereitstellen eines Anwendungspakets

Sie können ein oder mehrere Anwendungspakete für die Bereitstellung angeben, wenn Sie einen Pool erstellen. Wenn Sie ein Paket bei der Erstellung eines Pools angeben, wird es an jeden Knoten bereitgestellt, sobald dieser dem Pool beitritt. Pakete werden auch bereitgestellt, wenn ein Knoten neu gestartet oder neuabbildet wird.

Geben Sie bei der Poolerstellung die -ApplicationPackageReference-Option an, um ein Anwendungspaket auf den Knoten des Pools bereitzustellen, wenn diese dem Pool hinzugefügt werden. Erstellen Sie zunächst ein PSApplicationPackageReference-Objekt , und konfigurieren Sie es mit der Anwendungs-ID und Paketversion, die Sie auf den Computeknoten des Pools bereitstellen möchten:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Erstellen Sie nun den Pool, und geben Sie das Paketreferenzobjekt als Argument für die ApplicationPackageReferences Option an:

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

Weitere Informationen zu Anwendungspaketen finden Sie im Dokument Anwendungen für Computeknoten mit Batch-Anwendungspaketen bereitstellen.

Aktualisieren der Anwendungspakete eines Pools

Um die anwendungen zu aktualisieren, die einem vorhandenen Pool zugewiesen sind, erstellen Sie zuerst ein PSApplicationPackageReference-Objekt mit den gewünschten Eigenschaften (Anwendungs-ID und Paketversion):

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Rufen Sie als Nächstes den Pool aus Batch ab, löschen Sie alle vorhandenen Pakete, fügen Sie den neuen Paketverweis hinzu, und aktualisieren Sie den Batchdienst mit den neuen Pooleinstellungen:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Sie haben die Eigenschaften des Pools jetzt im Batch-Dienst aktualisiert. Um das neue Anwendungspaket tatsächlich auf den Computeknoten des Pools bereitzustellen, müssen Sie diese Knoten aber neu starten oder ein Reimaging dafür durchführen. Sie können jeden Knoten in einem Pool mit diesem Befehl neu starten:

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

Tipp

Sie können mehrere Anwendungspakete für die Computeknoten in einem Pool bereitstellen. Wenn Sie ein Anwendungspaket hinzufügen möchten, anstatt die aktuell bereitgestellten Pakete zu ersetzen, lassen Sie die $pool.ApplicationPackageReferences.Clear() zeile oben weg.

Nächste Schritte