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:
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
Untersuchen Sie Runbook-Fehlerstreams.
Untersuchen Sie diese Streams auf bestimmte Meldungen, und vergleichen Sie sie mit den in diesem Artikel erläuterten Fehlern.
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.
Wenn das Runbook angehalten wurde oder ein unerwarteter Fehler aufgetreten ist:
- Erneuern Sie den Webhook, wenn Sie versuchen, einen abgelaufenen Webhook zum Starten des Runbooks zu verwenden.
- Überprüfen Sie die Auftragsstatuswerte, um den aktuellen Runbookstatus und einige mögliche Ursachen des Problems zu ermitteln.
- Fügen Sie dem Runbook eine zusätzliche Ausgabe hinzu, um zu ermitteln, was passiert, bevor das Runbook angehalten wird.
- Behandeln Sie alle Ausnahmen, die von Ihrem Auftrag ausgelöst werden.
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
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:
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.Ü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
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.
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:
Wechseln Sie zum ausführenden Automation-Konto, und kopieren Sie die Anwendungs-ID und den Fingerabdruck.
Wechseln Sie zur Zugriffssteuerung des Abonnements, in dem das Automation-Konto nicht gehostet wird, und fügen Sie eine neue Rollenzuweisung hinzu.
Fügen Sie die zuvor kopierte Anwendungs-ID hinzu. Wählen Sie die Berechtigungen für Mitwirkender aus.
Kopieren Sie den Namen des Abonnements.
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:
- Wählen Sie in Ihrem Automation-Konto Module und anschließend Azure-Module aktualisieren aus.
- 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:
- Melden Sie sich bei Ihrem Azure-Abonnement an.
- Wählen Sie das Automation-Konto aus, das Sie aktualisieren möchten.
- Wählen Sie Einstellungen und dann Preise aus.
- 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
oderCannot 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:
- Anstelle von Start-Job verwenden Sie Start-AzAutomationRunbook, um das Runbook zu starten.
- Führen Sie das Runbook auf einem Hybrid Runbook Worker aus.
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.
Empfohlene Dokumente
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.