Freigeben über


Beheben von Runbookproblemen

In diesem Artikel werden Probleme mit Runbooks beschrieben, die auftreten können, und wie diese zu beheben sind. Allgemeine Informationen finden Sie unter Ausführen von Runbooks in Azure Automation.

Es ist nicht mehr möglich, Cmdlets aus importierten Nicht-Standardmodulen in grafischen PowerShell-Runbooks zu verwenden

Abgang

Wenn Sie ein PowerShell-Modul importieren, können Sie dessen Cmdlets nicht in grafischen PowerShell-Runbooks verwenden.

Ursache

Um die Sicherheit von PowerShell-Runbooks zu verbessern, verarbeitet der Dienst nicht mehr die Modulmanifestdatei, um die Cmdlets und Funktionen zu exportieren. Das bedeutet, dass sie bei der Erstellung von grafischen PowerShell-Runbooks nicht verwendet werden können.

Lösung

Es gibt keine Auswirkungen auf die Ausführung bestehender Runbooks. Für neue Runbooks, die nicht standardmäßige PowerShell-Module verwenden, empfehlen wir die Verwendung von textbasierten Runbooks anstelle von grafischen PowerShell-Runbooks, um dieses Problem zu umgehen. Sie können die Azure Automation-Erweiterung für VScode zum Erstellen und Bearbeiten von PowerShell-Runbooks verwenden, die GitHub Copilot nutzt, um die Erstellung von Runbooks zu vereinfachen.

Start-AzAutomationRunbook schlägt mit der Fehlermeldung „runbookName stimmt nicht mit dem erwarteten Muster überein“

Problem

Wenn Sie Start-AzAutomationRunbook ausführen, um bestimmte Runbooks zu starten:

start-azautomationRunbook -Name "Test_2" -AutomationAccountName "AutomationParent" -ResourceGroupName "AutomationAccount" 

Es tritt der folgende Fehler auf:

Start-AzAutomationRunbook: "runbookname" does not match expected pattern '^[a-zA-Z]*-*[a-zA-Z0-9]*$'

Ursache

Code, der in der 1.9.0 Version des Az.Automation-Moduls eingeführt wurde, überprüft die Namen der Runbooks, um Runbooks mit mehreren „-“ Zeichen oder mit einem „_“-Zeichen im Namen als ungültig zu starten und falsch zu kennzeichnen.

Problemumgehung

Wir empfehlen, dass Sie auf die Version 1.8.0 des Moduls zurückgreifen.

Lösung

Derzeit arbeiten wir an der Bereitstellung einer Lösung, um dieses Problem zu beheben.

Diagnose von Runbookproblemen

Wenn während der Ausführung von Runbooks in Azure Automation Fehler auftreten, können Sie die folgenden Schritte verwenden, um die Probleme zu diagnostizieren:

  1. Stellen Sie sicher, dass Ihr Runbookskript auf Ihrem lokalen Computer erfolgreich ausgeführt wird.

    Sprachreferenz- und Lernmodule finden Sie in der PowerShell-Dokumentation oder der Python-Dokumentation. Wenn Sie Ihr Skript lokal ausführen, können Sie häufige Fehler erkennen und beheben, z. B.:

    • Fehlende Module
    • Syntaxfehler
    • Logikfehler
  2. Untersuchen Sie Runbook-Fehlerstreams.

    Untersuchen Sie diese Streams auf bestimmte Meldungen, und vergleichen Sie sie mit den in diesem Artikel erläuterten Fehlern.

  3. Stellen Sie sicher, dass Ihre Knoten und der Automation-Arbeitsbereich über die erforderlichen Module verfügen.

    Wenn in Ihr Runbook Module importiert werden, überprüfen Sie, ob diese für Ihr Automation-Konto verfügbar sind, indem Sie die unter Importieren von Modulen aufgeführten Schritte befolgen. Aktualisieren Sie Ihre PowerShell-Module auf die neueste Version, indem Sie die Anleitungen unter Aktualisieren von Azure PowerShell-Modulen in Azure Automation befolgen. Weitere Informationen zur Problembehandlung finden Sie unter Module.

  4. Wenn das Runbook angehalten wurde oder ein unerwarteter Fehler aufgetreten ist:

  5. Führen Sie diesen Schritt aus, wenn der Runbookauftrag oder die Umgebung auf dem Hybrid Runbook Worker nicht reagiert.

    Wenn Sie Ihre Runbooks nicht in Azure Automation, sondern in einer Hybrid Runbook Worker-Instanz ausführen, ist möglicherweise eine Problembehandlung für die Hybrid Worker-Instanz selbst erforderlich.

Szenario: In der Region „Europa, Westen“ kann kein neuer Automation-Auftrag erstellt werden

Problem

Beim Erstellen neuer Automation-Aufträge kann es zu einer Verzögerung oder einem Fehler bei der Erstellung von Aufträgen kommen. Geplante Aufträge werden automatisch eingestellt, und Aufträge, die über das Portal ausgeführt werden, können eingestellt werden, wenn ein Fehler angezeigt wird.

Ursache

Dies liegt an der hohen Auslastung durch die Runbooks von Kunden, die den Automatisierungsdienst in der Region „Europa, Westen“ verwenden.

Lösung

Führen Sie je nach Machbarkeit aufgrund Ihrer Anforderungen und Umgebung eine der folgenden Aktionen aus, um die Fehlerwahrscheinlichkeit zu verringern:

  • Wenn Sie Aufträge während der Spitzenzeiten erstellen (um 12:00, 13:00, 14:00 usw.), in der Regel zur vollen oder halben Stunde, empfehlen wir, die Startzeit des Auftrags auf fünf Minuten vor oder nach der vollen/halben Stunde zu verschieben. Dies liegt daran, dass die meisten Kunden den Anfang der Stunde für die Auftragsausführung verwenden, was die Last für den Dienst drastisch erhöht, während die Last in den anderen Zeitfenstern relativ niedrig ist.

Szenario: Runbook schlägt mit der Fehlermeldung „this.Client.SubscriptionId kann nicht Null sein“ fehl.

Problem

Ihr Runbook, das eine verwaltete Identität „Connect-AzAccount -Identity“ verwendet, die versucht, Azure-Objekte zu verwalten, funktioniert nicht erfolgreich und protokolliert den folgenden Fehler: this.Client.SubscriptionId cannot be null..

get-azvm : 'this.Client.SubscriptionId' cannot be null. At line:5 char:1 + get-azvm + ~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzVM], ValidationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.GetAzureVMCommand

Ursache

Dies kann passieren, wenn der verwalteten Identität (oder einem anderen Konto, das im Runbook verwendet wird) keine Berechtigungen für den Zugriff auf das Abonnement gewährt wurden.

Lösung

Gewähren Sie der verwalteten Identität (oder einem anderen Konto, das im Runbook verwendet wird) eine geeignete Rollenmitgliedschaft im Abonnement. Weitere Informationen

 Screenshot: Zuweisung der Azure-Rollenzuweisungen.

Screenshot: Hinzufügen der Rollenzuweisung.

Szenario: Zugriff auf Azure Storage, Azure Key Vault oder Azure SQL blockiert

In diesem Szenario wird Azure Storage als Beispiel verwendet, die Informationen gelten jedoch gleichermaßen für Azure Key Vault und Azure SQL.

Problem

Der Versuch, über ein Runbook auf Azure Storage zuzugreifen, führt zu einem Fehler ähnlich der folgenden Meldung: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Ursache

Azure Firewall ist für Azure Storage aktiviert.

Lösung

Durch das Aktivieren von Azure Firewall für Azure Storage, Azure Key Vault oder Azure SQL wird der Zugriff von Azure Automation-Runbooks für diese Dienste blockiert. Der Zugriff wird auch dann blockiert, wenn die Firewallausnahme zum Zulassen vertrauenswürdiger Microsoft-Dienste aktiviert ist, da Automation nicht zur Liste der vertrauenswürdigen Dienste gehört. Bei aktivierter Firewall kann der Zugriff nur mithilfe eines Hybrid Runbook Workers und eines VNT-Dienstendpunkts erfolgen.

Szenario: Fehler beim Runbook. Fehler „Keine Berechtigung“ oder „Unzulässig 403“ wird angezeigt.

Problem

Bei Ihrem Runbook tritt der Fehler „Keine Berechtigung“ oder „Unzulässig 403“ bzw. ein ähnlicher Fehler auf.

Ursache

Ausführende Konten verfügen unter Umständen nicht über die gleichen Berechtigungen für Azure-Ressourcen wie Ihr aktuelles Automation-Konto.

Lösung

Vergewissern Sie sich, dass Ihr ausführendes Konto über Berechtigungen für den Zugriff auf alle Ressourcen verfügt, die in Ihrem Skript verwendet werden.

Szenario: Fehler beim Anmelden beim Azure-Konto

Problem

Beim Arbeiten mit dem Cmdlet Connect-AzAccount wird eine der folgenden Fehlermeldungen angezeigt:

Unknown_user_type: Unknown User Type
No certificate was found in the certificate store with thumbprint

Ursache

Diese Fehler treten auf, wenn der Name des Anmeldeinformationsobjekts ungültig ist. Sie treten möglicherweise auch auf, wenn Benutzername und Kennwort, die Sie zur Einrichtung des Automation-Anmeldeinformationsobjekts verwendet haben, nicht gültig sind.

Lösung

Führen Sie die folgenden Schritte aus, um den Fehler zu ermitteln:

  1. Stellen Sie sicher, dass Sie keine Sonderzeichen eingegeben haben. Dazu zählt auch das \@-Zeichen im Namen des Automation-Anmeldeinformationsobjekts, mit dem Sie die Verbindung zu Azure herstellen.

  2. Überprüfen Sie, ob Sie den Benutzernamen und das Kennwort aus den Azure Automation-Anmeldeinformationen in Ihrem lokalen PowerShell ISE-Editor verwenden können. Führen Sie die folgenden Cmdlets in der PowerShell ISE aus.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Wenn Ihre Authentifizierung lokal fehlschlägt, haben Sie Ihre Microsoft Entra-Anmeldeinformationen nicht ordnungsgemäß eingerichtet. Informationen zum ordnungsgemäßen Einrichten des Microsoft Entra-Kontos finden Sie im Artikel Authentifizieren bei Azure mithilfe von Microsoft Entra-ID.

  4. Wenn es sich um einen vorübergehenden Fehler zu handeln scheint, versuchen Sie, eine Wiederholungslogik zu Ihrer Authentifizierungsroutine hinzuzufügen, um die Authentifizierung zuverlässiger zu gestalten.

    $logonAttempt = 0
    $logonResult = $False
    
    while(!($connectionResult) -And ($logonAttempt -le 10))
    {
        $LogonAttempt++
        #Logging in to Azure...
        $connectionResult = Connect-AzAccount `
        Start-Sleep -Seconds 30
        if($connectionResult)
        {
           $logonResult = $True 
        }
    }
    

Szenario: Ausführen von Login-AzureRMAccount zum Anmelden

Problem

Beim Ausführen eines Runbooks wird die folgende Fehlermeldung angezeigt:

Run Login-AzureRMAccount to login.

Ursache

Dieser Fehler kann auftreten, wenn Sie kein ausführendes Konto verwenden oder wenn das ausführende Konto abgelaufen ist.

Dieser Fehler hat zwei Hauptursachen:

  • Es sind verschiedene Versionen des AzureRM- oder Az-Moduls vorhanden.
  • Sie versuchen, auf Ressourcen in einem separaten Abonnement zuzugreifen.

Lösung

Wenn diese Fehlermeldung nach dem Aktualisieren eines AzureRM- oder Az-Moduls angezeigt wird, aktualisieren Sie alle Ihre Module auf dieselbe Version.

Wenn Sie versuchen, auf Ressourcen in einem anderen Abonnement zuzugreifen, führen Sie die folgenden Schritte aus, um Berechtigungen zu konfigurieren:

  1. Wechseln Sie zum ausführenden Automation-Konto, und kopieren Sie die Anwendungs-ID und den Fingerabdruck.

    Kopieren der Anwendungs-ID und des Fingerabdrucks

  2. Wechseln Sie zur Zugriffssteuerung des Abonnements, in dem das Automation-Konto nicht gehostet wird, und fügen Sie eine neue Rollenzuweisung hinzu.

    Zugriffssteuerung

  3. Fügen Sie die zuvor kopierte Anwendungs-ID hinzu. Wählen Sie die Berechtigungen für Mitwirkender aus.

    Hinzufügen der Rollenzuweisung

  4. Kopieren Sie den Namen des Abonnements.

  5. Sie können nun den folgenden Runbookcode verwenden, um die Berechtigungen Ihres Automation-Kontos für das andere Abonnement zu testen. Ersetzen Sie <CertificateThumbprint> durch den Wert, den Sie in Schritt 1 kopiert haben. Ersetzen Sie "<SubscriptionName>" durch den Wert, den Sie in Schritt 4 kopiert haben.

    $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint "<CertificateThumbprint>"
    #Select the subscription you want to work with
    Select-AzSubscription -SubscriptionName '<YourSubscriptionNameGoesHere>'
    
    #Test and get outputs of the subscriptions you granted access.
    $subscriptions = Get-AzSubscription
    foreach($subscription in $subscriptions)
    {
        Set-AzContext $subscription
        Write-Output $subscription.Name
    }
    

Szenario: Azure-Abonnement nicht gefunden

Problem

Beim Arbeiten mit dem Cmdlet Select-AzureSubscription, Select-AzureRMSubscription oder Select-AzSubscription wird folgende Fehlermeldung angezeigt:

The subscription named <subscription name> cannot be found.

Fehler

Dieser Fehler kann in den folgenden Fällen auftreten:

  • Der Abonnementname ist ungültig.
  • Der Microsoft Entra-Benutzer, der die Abonnementdetails abrufen möchte, ist nicht als Administrator des Abonnements konfiguriert.
  • Das Cmdlet ist nicht verfügbar.
  • Kontextwechsel aufgetreten.

Lösung

Informationen zum Kontextwechsel finden Sie unter Kontextwechsel in Azure Automation.

Szenario: Fehler bei Runbooks, wenn mehrere Abonnements verwendet werden

Problem

Beim Ausführen von Runbooks mit kann das Runbook Azure-Ressourcen nicht verwalten.

Ursache

Das Runbook verwendet beim Ausführen nicht den richtigen Kontext. Dies liegt möglicherweise daran, dass das Runbook versehentlich versucht, auf das falsche Abonnement zuzugreifen.

Möglicherweise werden Fehler wie der folgende angezeigt:

Get-AzVM : The client '<client-id>' with object id '<object-id> does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope '/subscriptions/<subcriptionIdOfSubscriptionWichDoesntContainTheVM>/resourceGroups/REsourceGroupName/providers/Microsoft.Compute/virtualMachines/VMName '.
   ErrorCode: AuthorizationFailed
   StatusCode: 403
   ReasonPhrase: Forbidden Operation
   ID : <AGuidRepresentingTheOperation> At line:51 char:7 + $vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $UNBV... +

oder wie der folgende:

Get-AzureRmResource : Resource group "SomeResourceGroupName" could not be found.
... resources = Get-AzResource -ResourceGroupName $group.ResourceGro ...
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzResource], CloudException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet

Lösung

Informationen zur Vermeidung versehentlicher Zugriffsversuche auf das falsche Abonnement finden Sie unter Kontextwechsel in Azure Automation.

Szenario: Fehler beim Authentifizieren bei Azure, da die mehrstufige Authentifizierung aktiviert ist

Problem

Sie erhalten bei der Authentifizierung bei Azure mit Ihrem Azure-Benutzernamen und -Kennwort die folgende Fehlermeldung:

Add-AzureAccount: AADSTS50079: Strong authentication enrollment (proof-up) is required

Ursache

Falls für Ihr Azure-Konto die mehrstufige Authentifizierung eingerichtet ist, können Sie für die Authentifizierung bei Azure keinen Microsoft Entra-Benutzer verwenden. Stattdessen müssen Sie ein Zertifikat oder einen Dienstprinzipal für die Authentifizierung verwenden.

Lösung

Informationen zum Verwenden eines Dienstprinzipals mit Azure Resource Manager-Cmdlets finden Sie unter Gewusst wie: Erstellen einer Azure AD-Anwendung und eines Dienstprinzipals mit Ressourcenzugriff über das Portal und Gewusst wie: Verwenden von Azure PowerShell zum Erstellen eines Dienstprinzipals mit einem Zertifikat.

Szenario: Runbookfehler mit der Meldung „Eine Aufgabe wurde abgebrochen“

Problem

Für Ihr Runbook tritt ein Fehler auf, der dem im folgenden Beispiel ähnelt:

Exception: A task was cancelled.

Ursache

Dieser Fehler kann durch veraltete Azure-Module verursacht werden.

Lösung

Sie können diesen Fehler beheben, indem Sie Ihre Azure-Module auf die neueste Version aktualisieren:

  1. Wählen Sie in Ihrem Automation-Konto Module und anschließend Azure-Module aktualisieren aus.
  2. Das Update dauert ungefähr 15 Minuten. Führen Sie anschließend das Runbook erneut aus, bei dem der Fehler aufgetreten ist.

Weitere Informationen zum Aktualisieren Ihrer Module finden Sie unter Aktualisieren von Azure-Modulen in Azure Automation.

Szenario: Eine Benennung wird nicht als Name eines Cmdlets, einer Funktion oder eines Skripts erkannt.

Problem

Für Ihr Runbook tritt ein Fehler auf, der dem im folgenden Beispiel ähnelt:

The term 'Connect-AzAccount' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if the path was included verify that the path is correct and try again.

Ursache

Dieser Fehler kann aus einem der folgenden Gründe auftreten:

  • Das Modul, das das Cmdlet enthält, wird nicht in das Automation-Konto importiert.
  • Das Modul, das das Cmdlet enthält, wird zwar importiert, ist jedoch veraltet.

Lösung

Führen Sie eine der folgenden Aktionen aus, um diesen Fehler zu beheben:

  • Wenn es sich bei dem Modul um ein Azure-Modul handelt, finden Sie weitere Informationen zum Aktualisieren Ihrer Module in Ihrem Automation-Konto unter Aktualisieren von Azure PowerShell-Modulen in Azure Automation.
  • Wenn es sich nicht um ein Azure-Modul handelt, stellen Sie sicher, dass das Modul in Ihr Automation-Konto importiert wurde.

Szenario: Cmdlet-Fehler in PnP-PowerShell-Runbook auf Azure Automation

Problem

Wenn ein Runbook ein von PnP-PowerShell generiertes Objekt direkt in die Azure Automation-Ausgabe schreibt, kann die Cmdlet-Ausgabe nicht in Automation zurück gestreamt werden.

Ursache

Dieses Problem tritt am häufigsten auf, wenn Azure Automation Runbooks verarbeitet, die PnP-PowerShell-Cmdlets aufrufen, z. B. add-pnplistitem, ohne dass die Rückgabeobjekte abgefangen werden.

Lösung

Bearbeiten Sie die Skripts, um den Variablen beliebige Rückgabewerte zuzuweisen, sodass die Cmdlets nicht versuchen, ganze Objekte in die Standardausgabe zu schreiben. Ein Skript kann den Ausgabestream wie hier dargestellt an ein Cmdlet umleiten.

  $null = add-pnplistitem

Wenn das Skript die Cmdletausgabe analysiert, muss das Skript die Ausgabe in einer Variablen speichern und die Variable bearbeiten, anstatt einfach die Ausgabe zu streamen.

$SomeVariable = add-pnplistitem ....
if ($SomeVariable.someproperty -eq ....

Szenario: Cmdlet wird beim Ausführen eines Runbooks nicht erkannt

Problem

Ihr Runbookauftrag schlägt mit dem folgenden Fehler fehl:

<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program.

Ursache

Dieser Fehler wird verursacht, wenn die PowerShell-Engine das Cmdlet nicht findet, das Sie in Ihrem Runbook verwenden. Dies kann der Fall sein, weil das Modul mit dem Cmdlet in dem entsprechenden Konto nicht vorhanden ist, ein Namenskonflikt mit einem Runbooknamen besteht oder das Cmdlet auch in einem anderen Modul vorhanden ist und Automation den Namen nicht auflösen kann.

Lösung

Beheben Sie dieses Problem mit einer der folgenden Lösungen:

  • Überprüfen Sie, ob Sie den Cmdlet-Namen richtig eingegeben haben.
  • Stellen Sie sicher, dass das Cmdlet in Ihrem Automation-Konto vorhanden ist und dass keine Konflikte bestehen. Überprüfen Sie wie folgt, ob das Cmdlet vorhanden ist: Öffnen Sie ein Runbook im Bearbeitungsmodus, und suchen Sie in der Bibliothek nach dem gewünschten Cmdlet, oder führen Sie Get-Command <CommandName> aus. Wenn Sie festgestellt haben, dass das Cmdlet für das Konto verfügbar ist und keine Namenskonflikte mit anderen Cmdlets oder Runbooks bestehen, fügen Sie es der Canvas hinzu. Stellen Sie sicher, dass Sie in Ihrem Runbook einen gültigen Parametersatz verwenden.
  • Falls ein Namenskonflikt vorliegt und das Cmdlet in zwei unterschiedlichen Modulen verfügbar ist, beheben Sie das Problem, indem Sie den vollqualifizierten Namen für das Cmdlet verwenden. Sie können beispielsweise ModuleName\CmdletName verwenden.
  • Wenn Sie das Runbook lokal in einer Hybrid Worker-Gruppe ausführen, stellen Sie sicher, dass das Modul und das Cmdlet auf dem Computer installiert sind, auf dem der Hybrid Worker gehostet wird.

Szenario: Falscher Objektverweis beim Aufrufen von „Add-AzAccount“

Problem

Dieser Fehler wird angezeigt, wenn Sie mit Add-AzAccount arbeiten, das einen Alias für das Cmdlet Connect-AzAccount darstellt:

Add-AzAccount : Object reference not set to an instance of an object

Ursache

Dieser Fehler kann auftreten, wenn das Runbook vor dem Aufruf von Add-AzAccount zum Hinzufügen des Automation-Kontos nicht die richtigen Schritte durchführt. Ein Beispiel für einen der erforderlichen Schritte ist die Anmeldung mit einem ausführenden Konto. Die richtigen Vorgänge zur Verwendung in Ihrem Runbook finden Sie unter Ausführen von Runbooks in Azure Automation.

Szenario: Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Problem

Die folgende Fehlermeldung wird angezeigt, wenn Sie ein untergeordnetes Runbook mit dem Parameter Wait aufrufen und der Ausgabestream ein Objekt enthält:

Object reference not set to an instance of an object

Ursache

Wenn der Stream Objekte enthält, wird der Ausgabestream von Start-AzAutomationRunbook nicht ordnungsgemäß verarbeitet.

Lösung

Implementieren Sie eine Abruflogik, und verwenden Sie das Cmdlet Get-AzAutomationJobOutput, um die Ausgabe abzurufen. Der folgende Code ist ein Beispiel für eine solche Logik:

$AutomationAccountName = "ContosoAutomationAccount"
$RunbookName = "ChildRunbookExample"
$ResourceGroupName = "ContosoRG"

function IsJobTerminalState([string]$Status) {
  $TerminalStates = @("Completed", "Failed", "Stopped", "Suspended")
  return $Status -in $TerminalStates
}

$StartAzAutomationRunbookParameters = @{
  Name = $RunbookName
  AutomationAccountName = $AutomationAccountName
  ResourceGroupName = $ResourceGroupName
}
$Job = Start-AzAutomationRunbook @StartAzAutomationRunBookParameters
$PollingSeconds = 5
$MaxTimeout = New-TimeSpan -Hours 3 | Select-Object -ExpandProperty TotalSeconds
$WaitTime = 0
while(-NOT (IsJobTerminalState $Job.Status) -and $WaitTime -lt $MaxTimeout) {
   Start-Sleep -Seconds $PollingSeconds
   $WaitTime += $PollingSeconds
   $Job = $Job | Get-AzAutomationJob
}

$Job | Get-AzAutomationJobOutput | Get-AzAutomationJobOutputRecord | Select-Object -ExpandProperty Value

Szenario: Runbookfehler aufgrund eines deserialisierten Objekts

Problem

Ihr Runbook schlägt mit dem folgenden Fehler fehl:

Cannot bind parameter <ParameterName>.

Cannot convert the <ParameterType> value of type Deserialized <ParameterType> to type <ParameterType>.

Ursache

Wenn es sich bei Ihrem Runbook um einen PowerShell-Workflow handelt, werden komplexe Objekte in einem deserialisierten Format gespeichert, um den Runbookstatus beizubehalten, sobald der Workflow angehalten wird.

Lösung

Beheben Sie dieses Problem mit einer der folgenden Lösungen:

  • Wenn Sie komplexe Objekte von einem Cmdlet an ein anderes übergeben, umschließen Sie diese Cmdlets mit einer InlineScript-Aktivität.
  • Übergeben Sie den Namen oder Wert, den Sie aus dem komplexen Objekt benötigen, anstatt das gesamte Objekt zu übergeben.
  • Verwenden Sie anstelle eines PowerShell-Workflow-Runbooks ein PowerShell-Runbook.

Szenario: Status 400 (ungültige Anforderung) beim Aufrufen eines Webhooks

Problem

Beim Versuch, einen Webhook für ein Azure Automation-Runbook aufzurufen, tritt der folgende Fehler auf:

400 Bad Request : This webhook has expired or is disabled

Ursache

Der Webhook, den Sie aufrufen möchten, ist deaktiviert oder abgelaufen.

Lösung

Falls der Webhook deaktiviert ist, können Sie ihn über das Azure-Portal wieder aktivieren. Wenn der Webhook abgelaufen ist, müssen Sie ihn löschen und dann erneut erstellen. Das Verlängern eines Webhooks ist nur möglich, solange er noch nicht abgelaufen ist.

Szenario: 429: The request rate is currently too large. (Die Anforderungsrate ist zurzeit zu hoch.)

Problem

Beim Ausführen des Cmdlets Get-AzAutomationJobOutput wird folgende Fehlermeldung angezeigt:

429: The request rate is currently too large. Please try again

Ursache

Dieser Fehler kann beim Abrufen der Auftragsausgabe von einem Runbook auftreten, das über zahlreiche ausführliche Streams verfügt.

Lösung

Führen Sie eine der folgenden Aktionen aus, um diesen Fehler zu beheben:

  • Bearbeiten Sie das Runbook, und verringern Sie die Anzahl ausgegebener Auftragsdatenströme.
  • Verringern Sie die Anzahl von Datenströmen, die beim Ausführen des Cmdlets abgerufen werden. Hierzu können Sie den Wert des Parameters Stream für das Cmdlet Get-AzAutomationJobOutput so festlegen, dass ausschließlich Ausgabedatenströme abgerufen werden. ​

Szenario: Fehler beim Runbookauftrag, da das zugeordnete Kontingent überschritten wurde

Problem

Ihr Runbookauftrag schlägt mit dem folgenden Fehler fehl:

The quota for the monthly total job run time has been reached for this subscription

Ursache

Dieser Fehler tritt auf, wenn die Auftragsausführung das kostenlose Kontingent von 500 Minuten für Ihr Konto überschreitet. Dieses Kontingent gilt für alle Arten von Auftragsausführungsaufgaben. Zu diesen Aufgaben zählen unter anderem: Testen eines Auftrags, Starten eines Auftrags im Portal, Ausführen eines Auftrags per Webhook und Planen der Ausführung eines Auftrags über das Azure-Portal oder in Ihrem Rechenzentrum. Weitere Informationen zu den Preisen für Automation finden Sie unter Automation – Preise.

Lösung

Wenn Sie mehr als 500 Minuten Verarbeitungszeit pro Monat nutzen möchten, müssen Sie Ihr Abonnement vom Free-Tarif auf den Basic-Tarif umstellen:

  1. Melden Sie sich bei Ihrem Azure-Abonnement an.
  2. Wählen Sie das Automation-Konto aus, das Sie aktualisieren möchten.
  3. Wählen Sie Einstellungen und dann Preise aus.
  4. Wählen Sie unten auf der Seite Aktivieren aus, um für Ihr Konto ein Upgrade auf den Basic-Tarif durchzuführen.

Szenario: Runbookausgabestream größer als 1 MB

Problem

Bei Ihrem in der Azure-Sandbox ausgeführten Runbook tritt der folgende Fehler auf:

The runbook job failed due to a job stream being larger than 1MB, this is the limit supported by an Azure Automation sandbox.

Ursache

Dieser Fehler tritt auf, weil vom Runbook zu viele Ausnahmedaten in den Ausgabestream geschrieben wurden.

Lösung

Für den Auftragsausgabestream gilt ein Grenzwert von 1 MB. Stellen Sie sicher, dass Ihr Runbook Aufrufe einer ausführbaren Datei oder eines Teilprozesses in try- und catch-Blöcke einschließt. Wenn diese Vorgänge eine Ausnahme auslösen, lassen Sie den Code die Nachricht dieser Ausnahme in eine Automation-Variable schreiben. Mit dieser Technik wird verhindert, dass die Nachricht in den Auftragsausgabestream geschrieben wird. Für ausgeführte Hybrid Runbook Worker-Aufträge wird der auf 1 MB abgeschnittene Ausgabestream ohne Fehlermeldung angezeigt.

Szenario: Es wurde dreimal erfolglos versucht, den Runbookauftrag zu starten

Problem

Bei Ihrem Runbook tritt ein Fehler mit der folgenden Fehlermeldung auf:

The job was tried three times but it failed

Ursache

Dieser Fehler tritt aufgrund eines der folgenden Probleme auf:

  • Arbeitsspeicherlimit. Für einen Auftrag kann ein Fehler auftreten, wenn dafür mehr als 400 MB Arbeitsspeicher verwendet werden. Die dokumentierten Grenzwerte, die für das Zuordnen von Arbeitsspeicher zu einer Sandbox gelten, finden Sie unter Grenzwerte für den Automation-Dienst.

  • Netzwerksockets. Azure-Sandboxes sind auf 1.000 gleichzeitige Netzwerksockets beschränkt. Weitere Informationen finden Sie unter Grenzwerte für den Automation-Dienst.

  • Modul inkompatibel. Die Modulabhängigkeiten sind möglicherweise nicht korrekt. In diesem Fall gibt Ihr Runbook üblicherweise die Fehlermeldung Command not found oder Cannot bind parameter aus.

  • Die Sandbox wurde nicht mit Active Directory authentifiziert. Ihr Runbook versucht, eine ausführbare Datei oder einen Teilprozess aufzurufen, die bzw. der in einer Azure-Sandbox ausgeführt wird. Das Konfigurieren von Runbooks für die Authentifizierung mit Microsoft Entra ID mithilfe der Azure Active Directory-Authentifizierungsbibliothek (ADAL) wird nicht unterstützt.

Lösung

  • Arbeitsspeicherlimit, Netzwerksockets. Die empfohlenen Vorgehensweisen für die Einhaltung der Arbeitsspeichergrenzwerte bestehen darin, die Workload auf mehrere Runbooks zu verteilen, weniger Daten im Arbeitsspeicher zu verarbeiten, das Schreiben von unnötigen Ausgaben aus den Runbooks zu vermeiden und zu überprüfen, wie viele Prüfpunkte Sie in Ihre PowerShell-Workflowrunbooks schreiben. Verwenden Sie die clear-Methode (z.B. $myVar.clear), um Variablen zu löschen, und verwenden Sie dann [GC]::Collect, um sofort die Garbage Collection durchzuführen. Durch diese Aktionen wird der Speicherbedarf Ihres Runbooks während der Laufzeit reduziert.

  • Modul inkompatibel. Aktualisieren Sie Ihre Azure-Module, indem Sie die Schritte unter Aktualisieren von Azure PowerShell-Modulen in Azure Automation befolgen.

  • Die Sandbox wurde nicht mit Active Directory authentifiziert. Stellen Sie beim Authentifizieren bei Microsoft Entra ID mit einem Runbook sicher, dass das Azure AD-Modul in Ihrem Automation-Konto verfügbar ist. Vergewissern Sie sich, dass Sie dem ausführenden Konto die erforderlichen Berechtigungen zum Ausführen der vom Runbook automatisierten Aufgaben erteilen.

    Verwenden Sie das Runbook auf einem Hybrid Runbook Worker, wenn Ihr Runbook eine ausführbare Datei oder einen Teilprozess nicht aufrufen kann, die bzw. der in einer Azure Sandbox ausgeführt wird. Hybrid Worker unterliegen nicht den vom Arbeitsspeicher und Netzwerk vorgegebenen Grenzwerten, die für Azure-Sandboxes gelten.

Szenario: PowerShell-Auftragsfehler mit der Meldung, dass die Methode nicht aufgerufen werden kann

Problem

Beim Starten eines PowerShell-Auftrags in einem in Azure ausgeführten Runbook wird die folgende Fehlermeldung angezeigt:

Exception was thrown - Cannot invoke method. Method invocation is supported only on core types in this language mode.

Ursache

Dieser Fehler weist möglicherweise darauf hin, dass Runbooks, die in einer Azure-Sandbox ausgeführt werden, nicht im Modus „FullLanguage“ ausgeführt werden können.

Lösung

Es gibt zwei Möglichkeiten, diesen Fehler zu beheben:

Weitere Informationen zu diesem Verhalten und anderen von Azure Automation-Runbooks finden Sie unter Ausführen von Runbooks in Azure Automation.

Szenario: Ein Runbook mit langer Ausführungszeit kann nicht abgeschlossen werden

Problem

Ihr Runbook befindet sich nach drei Stunden Laufzeit im Zustand „Angehalten“. Möglicherweise wird auch diese Fehlermeldung angezeigt:

The job was evicted and subsequently reached a Stopped state. The job cannot continue running.

Dies ist das in Azure-Sandboxes vorgesehene Verhalten aufgrund der Überwachung der Prozesse in Azure Automation auf gleichmäßige Verteilung. Wenn ein Prozess länger als drei Stunden ausgeführt wird, wird das Runbook von der gleichmäßigen Verteilung automatisch beendet. Der Status eines Runbooks, der das Zeitlimit für die gleichmäßigen Verteilung überschreitet, ist je nach Runbooktyp unterschiedlich. PowerShell- und Python-Runbooks werden auf den Zustand „Angehalten“ festgelegt. PowerShell-Workflow-Runbooks werden auf „Fehlerhaft“ festgelegt.

Ursache

Das Runbook hat den von der gleichmäßigen Verteilung in einer Azure-Sandbox vorgegebenen Grenzwert von drei Stunden überschritten.

Lösung

Die empfohlene Lösung ist das Ausführen des Runbooks in einem Hybrid Runbook Worker. Hybrid Worker unterliegen nicht dem von der gleichmäßigen Verteilung in einer Azure-Sandbox vorgegebenen Grenzwert von drei Stunden. Runbooks, die auf Hybrid Runbook Workern ausgeführt werden, sollten weiterentwickelt werden, um das Neustartverhalten bei unerwarteten lokalen Infrastrukturproblemen zu unterstützen.

Eine weitere Lösung ist das Optimieren des Runbooks durch die Erstellung von untergeordneten Runbooks. Wenn Ihr Runbook für mehrere Ressourcen eine Schleife durch die gleiche Funktion durchführt, z. B. für einen Datenbankvorgang in mehreren Datenbanken, können Sie diese Funktion in ein untergeordnetes Runbook verschieben. Jedes dieser untergeordneten Runbooks wird parallel in separaten Prozessen ausgeführt. Dieses Verhalten führt dazu, dass die Gesamtdauer der Verarbeitung für das übergeordnete Runbook verringert wird.

Die PowerShell-Cmdlets für dieses Szenario, die das untergeordnete Runbook aktivieren, sind:

  • Start-AzAutomationRunbook. Mit diesem Cmdlet können Sie ein Runbook starten und Parameter an das Runbook übergeben.
  • Get-AzAutomationJob. Mit diesem Cmdlet können Sie den Auftragsstatus für jedes untergeordnete Element überprüfen, wenn Vorgänge vorhanden sind, die nach Abschluss des untergeordneten Runbooks durchgeführt werden müssen.

Szenario: Fehler zur get_SerializationSettings-Methode wird in Auftragsdatenströmen angezeigt

Problem

In Ihren Auftragsdatenströmen für ein Runbook wird der folgende Fehler angezeigt:

Connect-AzAccount : Method 'get_SerializationSettings' in type
'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
does not have an implementation.
At line:16 char:1
+ Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -Appl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Connect-AzAccount], TypeLoadException
    + FullyQualifiedErrorId : System.TypeLoadException,Microsoft.Azure.Commands.Profile.ConnectAzAccountCommand

Ursache

Dieser Fehler wird wahrscheinlich durch die Verwendung einer unvollständigen Migration von AzureRM- zu Az-Modulen in Ihrem Runbook verursacht. Diese Situation kann dazu führen, dass Azure Automation einen Runbookauftrag nur mit AzureRM-Modulen startet und dann einen anderen Auftrag nur mit Az-Modulen startet, was zu einem Sandboxabsturz führt.

Lösung

Die Verwendung von Az- und AzureRM-Cmdlets in demselben Runbook wird nicht empfohlen. Weitere Informationen zur richtigen Verwendung dieser Module finden Sie unter Migrieren zu Az-Modulen.

Szenario: Zugriff wird verweigert beim Verwenden einer Azure-Sandbox für ein Runbook oder eine Anwendung

Problem

Wenn Ihr Runbook oder Ihre Anwendung versucht, in einer Azure-Sandbox ausgeführt zu werden, verweigert die Umgebung den Zugriff.

Ursache

Dieses Problem kann auftreten, da eine Azure-Sandbox den Zugriff auf alle Out-of-Process-COM-Server verhindert. Sandkastenanwendungen oder -runbooks können beispielsweise die Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) oder den Windows Installer-Dienst (msiserver.exe) nicht aufrufen.

Lösung

Weitere Informationen zur Verwendung der Azure-Sandboxes finden Sie unter Runbook-Ausführungsumgebung.

Szenario: Ungültiger Statuscode „Nicht zulässig“ bei Verwendung von Key Vault in einem Runbook

Problem

Bei dem Versuch, über ein Azure Automation-Runbook auf Azure Key Vault zuzugreifen, tritt der folgende Fehler auf:

Operation returned an invalid status code 'Forbidden'

Ursache

Mögliche Ursachen für dieses Problem:

  • Fehlende Verwendung eines ausführenden Kontos.
  • Unzureichende Berechtigungen.

Lösung

Fehlende Verwendung eines ausführenden Kontos

Führen Sie Schritt 5: Hinzufügen von Authentifizierungsfunktionen für die Verwaltung von Azure-Ressourcen aus, um sicherzustellen, dass Sie ein ausführendes Konto für den Zugriff auf Key Vault verwenden.

Insufficient permissions

Fügen Sie Berechtigungen zu Key Vault hinzu, um sicherzustellen, dass Ihr ausführendes Konto über ausreichende Berechtigungen für den Zugriff auf Key Vault verfügt.

Szenario: Runbook schlägt mit dem Fehler „Parameterlänge überschritten“ fehl

Problem

Ihr Runbook verwendet Parameter, und es tritt der Fehler mit der folgenden Fehlermeldung auf:

Total Length of Runbook Parameter names and values exceeds the limit of 30,000 characters. To avoid this issue, use Automation Variables to pass values to runbook.

Ursache

Die Gesamtlänge der Zeichen aller Parameter, die in Python 2.7-, Python 3.8- und PowerShell 7.1-Runbooks bereitgestellt werden können, ist begrenzt. Die Gesamtlänge aller Parameternamen und Parameterwerte darf 30.000 Zeichen nicht überschreiten.

Lösung

Lösung: Um dieses Problem zu beheben, können Sie Werte mithilfe von Azure Automation-Variablen an Runbook übergeben. Alternativ können Sie die Anzahl der Zeichen in Parameternamen und Parameterwerten reduzieren, um sicherzustellen, dass die Gesamtlänge 30.000 Zeichen nicht überschreitet.

Nächste Schritte

Wenn Ihr Problem nicht aufgeführt ist oder Sie es nicht lösen können, nutzen Sie einen der folgenden Kanäle, um weitere Unterstützung zu erhalten:

  • Erhalten Sie Antworten von Azure-Experten über Azure-Foren.
  • Kontaktieren Sie @AzureSupport, das offizielle Microsoft Azure-Konto für die Optimierung der Customer Experience. Der Azure-Support verbindet Sie mit der Azure-Community, die Antworten, Unterstützung und Expertenrat bietet.
  • Wenn Sie weitere Hilfe benötigen, können Sie einen Azure-Supportvorgang anlegen. Wechseln Sie zur Azure-Supportwebsite, und wählen Sie Support erhalten aus.