Problemen met runbooks oplossen

In dit artikel worden runbookproblemen beschreven die kunnen optreden en hoe u deze kunt oplossen. Zie Runbook-uitvoering in Azure Automation voor algemene informatie.

Start-AzAutomationRunbook mislukt met het foutbericht runbookName komt niet overeen met het verwachte patroon

Probleem

Wanneer u uitvoert Start-AzAutomationRunbook om specifieke runbooks te starten:

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

Dit mislukt met de volgende fout:

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

Oorzaak

Code die is geïntroduceerd in versie 1.9.0 van de Az.Automation-module controleert de namen van de runbooks om runbooks te starten en onjuist te markeren met meerdere '-'-tekens of met een '_'-teken in de naam als ongeldig.

Tijdelijke oplossing

Het is raadzaam om terug te keren naar versie 1.8.0 van de module.

Oplossing

Momenteel werken we aan het implementeren van een oplossing om dit probleem op te lossen.

Problemen met runbook vaststellen

Wanneer u fouten ontvangt tijdens de uitvoering van het runbook in Azure Automation, kunt u de volgende stappen gebruiken om de problemen vast te stellen:

  1. Zorg ervoor dat het runbookscript correct wordt uitgevoerd op uw lokale computer.

    Zie de PowerShell-documenten of Python-documenten voor taalreferenties en leermodules. Als u uw script lokaal uitvoert, kunnen veelvoorkomende fouten worden gedetecteerd en opgelost, zoals:

    • Ontbrekende modules
    • Syntaxisfouten
    • Logische fouten
  2. Onderzoek runbookfoutstromen.

    Bekijk deze stromen voor specifieke berichten en vergelijk ze met de fouten die in dit artikel worden beschreven.

  3. Zorg ervoor dat uw knooppunten en Automation-werkruimte de vereiste modules hebben.

    Als uw runbook modules importeert, controleert u of deze beschikbaar zijn voor uw Automation-account met behulp van de stappen in Modules importeren. Werk uw PowerShell-modules bij naar de nieuwste versie door de instructies te volgen in Azure PowerShell modules bijwerken in Azure Automation. Zie Problemen met modules oplossen voor meer informatie over het oplossen van problemen.

  4. Als uw runbook tijdelijk niet actief is of onverwachts mislukt:

  5. Voer deze stap uit als de runbooktaak of de omgeving in Hybrid Runbook Worker niet reageert.

    Als u de runbooks uitvoert met behulp van een Hybrid Runbook Worker in plaats van Azure Automation, moet u problemen met de Hybrid Worker mogelijk zelf oplossen.

Scenario: Kan geen nieuwe Automation-taak maken in de regio Europa - west

Probleem

Wanneer u nieuwe Automation-taken maakt, ondervindt u wellicht een vertraging of een fout bij het maken van een taak. Geplande taken worden automatisch buiten gebruik gesteld en taken die via de portal worden uitgevoerd, kunnen buiten gebruik worden gesteld als er een fout optreedt.

Oorzaak

Dit komt door de hoge belasting van runbooks van klanten met behulp van de Automation-service in de regio Europa - west.

Oplossing

Voer de volgende actie uit als het haalbaar is op basis van uw behoeften en omgeving om de kans op fouten te verminderen:

  • Als u het begin van het uur voor het maken van de taak gebruikt (om 12:00, 1:00, 2:00, enzovoort), meestal op het uur of half uur, raden we u aan de begintijd van de taak te verplaatsen naar vijf minuten voor of na het uur/half uur. Dit komt doordat de meeste klanten het begin van het uur gebruiken voor het uitvoeren van taken, waardoor de belasting van de service drastisch wordt verhoogd, terwijl de belasting relatief laag is op de andere tijdsleuven.

Scenario: Runbook mislukt met 'dit. Client.SubscriptionId kan niet null zijn." foutbericht

Probleem

Uw runbook met behulp van een beheerde identiteit Verbinding maken-AzAccount -Identity die Probeert Azure-objecten te beheren, werkt niet goed en registreert de volgende fout -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

Oorzaak

Dit kan gebeuren wanneer aan de beheerde identiteit (of een ander account dat in het runbook wordt gebruikt) geen machtigingen zijn verleend voor toegang tot het abonnement.

Oplossing

Verleen de beheerde identiteit (of een ander account dat in het runbook wordt gebruikt) een geschikt rollidmaatschap in het abonnement. Meer informatie

 Screenshot that shows the assigning of Azure Role assignments.

Screenshot that shows how to add role assignment.

Scenario: toegang geblokkeerd tot Azure Storage, Azure Key Vault of Azure SQL

In dit scenario wordt Azure Storage als voorbeeld gebruikt. De informatie is echter even van toepassing op Azure Key Vault en Azure SQL.

Probleem

Als u probeert toegang te krijgen tot Azure Storage vanuit een runbook, treedt er een fout op die vergelijkbaar is met het volgende bericht: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Oorzaak

De Azure Firewall in Azure Storage is ingeschakeld.

Oplossing

Als u de Azure Firewall inschakelt in Azure Storage, Azure Key Vault of Azure SQL, blokkeert u de toegang vanuit Azure Automation-runbooks voor deze services. Toegang wordt geblokkeerd, zelfs wanneer de firewall-uitzondering voor het toestaan van vertrouwde Microsoft-services is ingeschakeld, omdat Automation geen deel uitmaakt van de lijst met vertrouwde services. Met een ingeschakelde firewall kan alleen toegang worden gemaakt met behulp van een Hybrid Runbook Worker en een service-eindpunt voor een virtueel netwerk.

Scenario: runbook mislukt met de fout 403 Geen machtiging of Verboden

Probleem

Uw runbook mislukt met de fout Geen machtiging of Verboden 403, of gelijkwaardig.

Oorzaak

Uitvoeren als-accounts hebben mogelijk niet dezelfde machtigingen voor Azure-resources als uw huidige Automation-account.

Oplossing

Zorg ervoor dat uw Uitvoeren als-account machtigingen heeft voor toegang tot alle resources die in uw script worden gebruikt.

Scenario: aanmelden bij Azure-account mislukt

Probleem

U ontvangt een van de volgende fouten wanneer u met de Connect-AzAccount cmdlet werkt:

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

Oorzaak

Deze fouten treden op als de naam van de aanmeldingsgegevensasset ongeldig is. Ze kunnen ook optreden als de gebruikersnaam en het wachtwoord die u hebt gebruikt om de Automation-aanmeldingsgegevensasset in te stellen niet geldig zijn.

Oplossing

Voer de volgende stappen uit om te bepalen wat er mis is:

  1. Zorg ervoor dat u geen speciale tekens gebruikt. Deze tekens bevatten het teken \@ in de naam van de Automation-referentieasset die u gebruikt om verbinding te maken met Azure.

  2. Controleer of u de gebruikersnaam en het wachtwoord kunt gebruiken die zijn opgeslagen in de Azure Automation-referentie in uw lokale PowerShell ISE-editor. Voer de volgende cmdlets uit in de PowerShell ISE.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Als uw verificatie lokaal mislukt, hebt u uw Microsoft Entra-referenties niet juist ingesteld. Zie het artikel Verifiëren bij Azure met behulp van Microsoft Entra-id om het Microsoft Entra-account correct in te stellen.

  4. Als de fout tijdelijk lijkt te zijn, kunt u proberen logica voor opnieuw proberen toe te voegen aan uw verificatieroutine om de verificatie robuuster te maken.

    $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 
        }
    }
    

Scenario: Login-AzureRmAccount uitvoeren om aan te melden

Probleem

U ontvangt de volgende fout wanneer u een runbook uitvoert:

Run Login-AzureRMAccount to login.

Oorzaak

Deze fout kan optreden wanneer u geen Uitvoeren als-account gebruikt of het Uitvoeren als-account is verlopen.

Deze fout heeft twee hoofdoorzaken:

  • Er zijn verschillende versies van de AzureRM- of Az-module.
  • U probeert toegang te krijgen tot resources in een afzonderlijk abonnement.

Oplossing

Als u deze fout ontvangt nadat u één AzureRM- of Az-module hebt bijgewerkt, werkt u al uw modules bij naar dezelfde versie.

Als u toegang probeert te krijgen tot resources in een ander abonnement, voert u de volgende stappen uit om machtigingen te configureren:

  1. Ga naar het Uitvoeren als-account van Automation en kopieer de toepassings-id en vingerafdruk.

    Copy Application ID and Thumbprint

  2. Ga naar het toegangsbeheer van het abonnement waar het Automation-account niet wordt gehost en voeg een nieuwe roltoewijzing toe.

    Access control

  3. Voeg de toepassings-id toe die u eerder hebt verzameld. Selecteer Inzendermachtigingen .

    Add role assignment

  4. Kopieer de naam van het abonnement.

  5. U kunt nu de volgende runbookcode gebruiken om de machtigingen van uw Automation-account te testen op het andere abonnement. Vervang <CertificateThumbprint> door de waarde die u in stap 1 hebt gekopieerd. Vervang "<SubscriptionName>" door de waarde die u in stap 4 hebt gekopieerd.

    $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
    }
    

Scenario: kan het Azure-abonnement niet vinden

Probleem

U ontvangt de volgende fout wanneer u met de Select-AzureSubscription, Select-AzureRMSubscriptionof Select-AzSubscription cmdlet werkt:

The subscription named <subscription name> cannot be found.

Fout

Deze fout kan optreden als:

  • De abonnementsnaam is niet geldig.
  • De Microsoft Entra-gebruiker die de abonnementsgegevens probeert op te halen, is niet geconfigureerd als beheerder van het abonnement.
  • De cmdlet is niet beschikbaar.
  • Er is een contextwisseling opgetreden.

Oplossing

Zie Contextwisseling in Azure Automation voor contextwisselingen.

Scenario: runbooks mislukken in situaties met meerdere abonnementen

Probleem

Bij het uitvoeren van runbooks kan het runbook Geen Azure-resources beheren.

Oorzaak

Het runbook gebruikt tijdens het uitvoeren niet de juiste context. Dit kan zijn omdat het runbook per ongeluk probeert toegang te krijgen tot het onjuiste abonnement.

Mogelijk ziet u fouten zoals deze:

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... +

of zoals deze:

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

Oplossing

Zie Contextwisseling in Azure Automation om te voorkomen dat u per ongeluk toegang probeert te krijgen tot het onjuiste abonnement.

Scenario: verificatie bij Azure mislukt omdat meervoudige verificatie is ingeschakeld

Probleem

U ontvangt de volgende fout bij het verifiëren bij Azure met uw Azure-gebruikersnaam en -wachtwoord:

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

Oorzaak

Als u meervoudige verificatie voor uw Azure-account hebt, kunt u geen Microsoft Entra-gebruiker gebruiken om te verifiëren bij Azure. In plaats daarvan moet u een certificaat of een service-principal gebruiken om te verifiëren.

Oplossing

Als u een service-principal wilt gebruiken met Azure Resource Manager-cmdlets, raadpleegt u Service-principal maken met behulp van Azure Portal en een service-principal verifiëren met Azure Resource Manager.

Scenario: Runbook mislukt met het foutbericht 'Een taak is geannuleerd'

Probleem

Uw runbook mislukt met een fout die vergelijkbaar is met het volgende voorbeeld:

Exception: A task was cancelled.

Oorzaak

Deze fout kan worden veroorzaakt door gebruik te maken van verouderde Azure-modules.

Oplossing

U kunt deze fout oplossen door uw Azure-modules bij te werken naar de nieuwste versie:

  1. Selecteer Modules in uw Automation-account en selecteer vervolgens Azure-modules bijwerken.
  2. De update duurt ongeveer 15 minuten. Nadat de update is voltooid, voert u het runbook dat is mislukt opnieuw uit.

Zie Azure-modules in Azure Automation bijwerken voor meer informatie over het bijwerken van uw modules.

Scenario: Term wordt niet herkend als de naam van een cmdlet, functie of script

Probleem

Uw runbook mislukt met een fout die vergelijkbaar is met het volgende voorbeeld:

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.

Oorzaak

Deze fout kan de volgende oorzaken hebben:

  • De module die de cmdlet bevat, wordt niet geïmporteerd in het Automation-account.
  • De module die de cmdlet bevat, wordt geïmporteerd, maar is verouderd.

Oplossing

Een van de volgende taken uitvoeren om deze fout op te lossen:

Scenario: Cmdlet mislukt in PnP PowerShell-runbook in Azure Automation

Probleem

Wanneer een runbook rechtstreeks een door PnP PowerShell gegenereerd object naar de Azure Automation-uitvoer schrijft, kan cmdlet-uitvoer niet meer worden gestreamd naar Automation.

Oorzaak

Dit probleem treedt meestal op wanneer Azure Automation runbooks verwerkt die PnP PowerShell-cmdlets aanroepen, add-pnplistitembijvoorbeeld zonder de retourobjecten te vangen.

Oplossing

Bewerk uw scripts om retourwaarden toe te wijzen aan variabelen, zodat de cmdlets niet proberen hele objecten naar de standaarduitvoer te schrijven. Een script kan de uitvoerstroom omleiden naar een cmdlet, zoals hier wordt weergegeven.

  $null = add-pnplistitem

Als de uitvoer van uw script cmdlets parseert, moet het script de uitvoer opslaan in een variabele en de variabele bewerken in plaats van de uitvoer te streamen.

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

Scenario: Cmdlet wordt niet herkend bij het uitvoeren van een runbook

Probleem

Uw runbook-taak mislukt met de volgende fout:

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

Oorzaak

Deze fout wordt veroorzaakt wanneer de PowerShell-engine de cmdlet die u gebruikt niet kan vinden in uw runbook. Het is mogelijk dat de module met de cmdlet ontbreekt in het account, dat er een naamconflict is met de naam van een runbook, of dat de cmdlet ook in een andere module bestaat en Automation de naam niet kan omzetten.

Oplossing

Gebruik een van de volgende oplossingen om het probleem op te lossen:

  • Zorg ervoor dat u de naam van de cmdlet juist hebt ingevoerd.
  • Zorg ervoor dat de cmdlet bestaat in uw Automation-account en dat er geen conflicten zijn. Als u wilt controleren of de cmdlet aanwezig is, opent u een runbook in de bewerkingsmodus en zoekt u naar de cmdlet die u in de bibliotheek wilt vinden of voert u het uit Get-Command <CommandName>. Nadat u hebt gevalideerd dat de cmdlet beschikbaar is voor het account en dat er geen naamconflicten zijn met andere cmdlets of runbooks, voegt u de cmdlet toe aan het canvas. Zorg ervoor dat u een geldige parameterset in uw runbook gebruikt.
  • Als er wel een naamconflict is en de cmdlet beschikbaar is in twee verschillende modules, lost u het probleem op door de volledig gekwalificeerde naam voor de cmdlet te gebruiken. U kunt bijvoorbeeld gebruikmaken van ModuleName\CmdletName.
  • Als u het runbook on-premises uitvoert in een Hybrid Worker-groep, moet u ervoor zorgen dat de module en cmdlet zijn geïnstalleerd op de computer waarop de Hybrid Worker wordt gehost.

Scenario: Onjuiste objectverwijzing bij aanroep naar Add-AzAccount

Probleem

Deze fout wordt weergegeven wanneer u werkt Add-AzAccount. Dit is een alias voor de Connect-AzAccount cmdlet:

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

Oorzaak

Deze fout kan optreden als het runbook niet de juiste stappen uitvoert voordat u aanroept Add-AzAccount om het Automation-account toe te voegen. Een voorbeeld van een van de benodigde stappen is aanmelden met een Uitvoeren als-account. Zie Runbook-uitvoering in Azure Automation voor de juiste bewerkingen die u in uw runbook wilt gebruiken.

Scenario: objectverwijzing niet ingesteld op een exemplaar van een object

Probleem

U ontvangt de volgende fout wanneer u een onderliggend runbook aanroept met de Wait parameter en de uitvoerstroom een object bevat:

Object reference not set to an instance of an object

Oorzaak

Als de stroom objecten bevat, Start-AzAutomationRunbook wordt de uitvoerstroom niet correct verwerkt.

Oplossing

Implementeer een pollinglogica en gebruik de cmdlet Get-AzAutomationJobOutput om de uitvoer op te halen. Hier wordt een voorbeeld van deze logica gedefinieerd:

$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

Scenario: Runbook mislukt vanwege gedeserialiseerde objecten

Probleem

Uw runbook mislukt met de volgende fout:

Cannot bind parameter <ParameterName>.

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

Oorzaak

Als uw runbook een PowerShell-werkstroom is, worden complexe objecten opgeslagen in een gedeserialiseerde indeling om de status van uw runbook te behouden als de werkstroom is onderbroken.

Oplossing

Gebruik een van de volgende oplossingen om dit probleem op te lossen:

  • Als u complexe objecten van de ene cmdlet naar de andere doorsluist, verpakt u deze cmdlets in een InlineScript-activiteit.
  • Geef de naam of waarde door die u nodig hebt van het complexe object in plaats van het hele object door te geven.
  • Gebruik een PowerShell-runbook in plaats van een PowerShell Workflow-runbook.

Scenario: 400 Onjuiste aanvraagstatus bij het aanroepen van een webhook

Probleem

Wanneer u een webhook voor een Azure Automation-runbook probeert aan te roepen, wordt de volgende fout weergegeven:

400 Bad Request : This webhook has expired or is disabled

Oorzaak

De webhook die u probeert aan te roepen, is uitgeschakeld of is verlopen.

Oplossing

Als de webhook is uitgeschakeld, kunt u deze opnieuw inschakelen via Azure Portal. Als de webhook is verlopen, moet u deze verwijderen en vervolgens opnieuw maken. U kunt een webhook alleen vernieuwen als deze nog niet is verlopen.

Scenario: Fout: 429: De aanvraagsnelheid is te hoog

Probleem

U ontvangt het volgende foutbericht bij het uitvoeren van de Get-AzAutomationJobOutput cmdlet:

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

Oorzaak

Deze fout kan optreden bij het ophalen van taakuitvoer van een runbook met veel uitgebreide streams.

Oplossing

Ga op een van de volgende manieren te werk om deze fout op te lossen:

  • Bewerk het runbook en verminder het aantal taakstreams dat wordt verzonden.
  • Verminder het aantal streams dat moet worden opgehaald bij het uitvoeren van de cmdlet. Hiervoor kunt u de waarde van de Stream parameter voor de Get-AzAutomationJobOutput-cmdlet instellen om alleen uitvoerstreams op te halen. ​

Scenario: Runbooktaak mislukt omdat het toegewezen quotum is overschreden

Probleem

Uw runbook-taak mislukt met de volgende fout:

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

Oorzaak

Deze fout treedt op wanneer de taakuitvoering het gratis quotum van 500 minuten voor uw account overschrijdt. Dit quotum is van toepassing op alle typen taakuitvoeringstaken. Sommige van deze taken zijn het testen van een taak, het starten van een taak vanuit de portal, het uitvoeren van een taak met behulp van webhooks of het plannen van een taak die moet worden uitgevoerd met behulp van de Azure-portal of uw datacenter. Zie prijzen voor Automation voor meer informatie over prijzen voor Automation.

Oplossing

Als u meer dan 500 minuten aan verwerking per maand wilt gebruiken, wijzigt u uw abonnement van de gratis laag in de Basic-laag:

  1. Meld u aan bij uw Azure-abonnement.
  2. Selecteer het Automation-account dat u wilt upgraden.
  3. Selecteer Instellingen en selecteer vervolgens Prijzen.
  4. Selecteer Inschakelen op de pagina onderaan om uw account te upgraden naar de Basic-laag.

Scenario: Runbook-uitvoerstroom groter dan 1 MB

Probleem

Uw runbook dat wordt uitgevoerd in de Azure-sandbox mislukt met de volgende fout:

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

Oorzaak

Deze fout treedt op omdat uw runbook heeft geprobeerd te veel uitzonderingsgegevens naar de uitvoerstroom te schrijven.

Oplossing

Er is een limiet van 1 MB voor de uitvoerstroom van de taak. Zorg ervoor dat uw runbook aanroepen naar een uitvoerbaar bestand of subproces plaatst met behulp van try en catch blokken. Als de bewerkingen een uitzondering genereren, moet u de code het bericht van de uitzondering laten schrijven naar een Automation-variabele. Met deze techniek voorkomt u dat het bericht naar de uitvoerstroom van de taak wordt geschreven. Voor Hybrid Runbook Worker-taken die worden uitgevoerd, wordt de uitvoerstroom afgekapt tot 1 MB weergegeven zonder foutbericht.

Scenario: De runbooktaak wordt drie keer gestart, maar wordt niet elke keer gestart

Probleem

Uw runbook mislukt met de volgende fout:

The job was tried three times but it failed

Oorzaak

Deze fout treedt op vanwege een of meer van de volgende redenen:

  • Geheugenlimiet. Een taak kan mislukken als deze meer dan 400 MB geheugen gebruikt. De gedocumenteerde limieten voor geheugen dat aan een sandbox is toegewezen, vindt u in Automation-servicelimieten.

  • Netwerksockets. Azure-sandboxes zijn beperkt tot 1000 gelijktijdige netwerksockets. Zie Automation servicelimieten voor meer informatie.

  • Module is niet compatibel. Moduleafhankelijkheden zijn mogelijk niet juist. In dit geval retourneert uw runbook meestal een Command not found of Cannot bind parameter meer berichten.

  • Geen verificatie met Active Directory voor sandbox. Uw runbook heeft geprobeerd een uitvoerbaar bestand of subproces aan te roepen dat wordt uitgevoerd in een Azure-sandbox. Het configureren van runbooks voor verificatie met Microsoft Entra ID met behulp van de Azure Active Directory Authentication Library (ADAL) wordt niet ondersteund.

Oplossing

  • Geheugenlimiet, netwerksockets. Voorgestelde manieren om binnen de geheugenlimieten te werken, zijn het splitsen van de werkbelasting tussen meerdere runbooks, het verwerken van minder gegevens in het geheugen, het schrijven van onnodige uitvoer van uw runbooks voorkomen en overwegen hoeveel controlepunten zijn geschreven in uw PowerShell-werkstroomrunbooks. Gebruik de duidelijke methode, zoals $myVar.clear, om variabelen uit te wissen en te gebruiken [GC]::Collect om garbagecollection onmiddellijk uit te voeren. Deze acties verminderen de geheugenvoetafdruk van uw runbook tijdens runtime.

  • Module is niet compatibel. Werk uw Azure-modules bij door de stappen te volgen in Azure PowerShell modules bijwerken in Azure Automation.

  • Geen verificatie met Active Directory voor sandbox. Wanneer u zich verifieert bij Microsoft Entra ID met een runbook, moet u ervoor zorgen dat de Azure AD-module beschikbaar is in uw Automation-account. Zorg ervoor dat u het Uitvoeren als-account de benodigde machtigingen verleent om de taken uit te voeren die het runbook automatiseert.

    Als uw runbook geen uitvoerbare of subprocessen kan aanroepen die worden uitgevoerd in een Azure-sandbox, gebruikt u het runbook op een Hybrid Runbook Worker. Hybride werkrollen worden niet beperkt door de geheugen- en netwerklimieten die gelden in Azure-sandboxes.

Scenario: PowerShell-taak mislukt met het foutbericht 'Kan methode niet aanroepen'

Probleem

U ontvangt het volgende foutbericht wanneer u een PowerShell-taak start in een runbook dat wordt uitgevoerd in Azure:

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

Oorzaak

Deze fout kan erop wijzen dat runbooks die worden uitgevoerd in een Azure-sandbox, niet kunnen worden uitgevoerd in de modus Volledige taal.

Oplossing

U kunt deze fout op twee manieren oplossen:

Zie Runbookuitvoering in Azure Automation voor meer informatie over dit gedrag en ander gedrag van Azure Automation-runbooks.

Scenario: een langlopend runbook kan niet worden voltooid

Probleem

Uw runbook wordt weergegeven in de status Gestopt nadat het drie uur is uitgevoerd. U ontvangt mogelijk ook deze fout:

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

Dit gedrag is standaard in Azure-sandboxes vanwege de eerlijke verdeling van processen binnen Azure Automation. Als een proces langer dan drie uur wordt uitgevoerd, stopt fair share automatisch een runbook. De status van een runbook dat voorbij de tijdslimiet voor evenredige verdeling gaat, verschilt per runbooktype. PowerShell- en Python-runbooks zijn ingesteld op de status Gestopt. PowerShell Workflow-runbooks zijn ingesteld op Mislukt.

Oorzaak

Het runbook heeft de limiet van drie uur overschreden die is toegestaan door evenredige verdeling in een Azure-sandbox.

Oplossing

Een aanbevolen oplossing is om het runbook uit te voeren op een Hybrid Runbook Worker. Hybride werknemers worden niet beperkt door de runbooklimiet voor evenredige verdeling van drie uur die Azure-sandboxes hebben. Runbooks die worden uitgevoerd op Hybrid Runbook Workers moeten worden ontwikkeld ter ondersteuning van gedrag bij opnieuw opstarten als er onverwachte problemen zijn met de lokale infrastructuur.

Een andere oplossing is om het runbook te optimaliseren door onderliggende runbooks te maken. Als uw runbook dezelfde functie op verschillende resources doorloopt, bijvoorbeeld in een databasebewerking op verschillende databases, kunt u de functie verplaatsen naar een onderliggend runbook. Elk onderliggend runbook wordt parallel uitgevoerd in een afzonderlijk proces. Dit gedrag vermindert de totale tijdsduur voor het bovenliggende runbook dat moet worden voltooid.

De PowerShell-cmdlets die het onderliggende runbookscenario inschakelen, zijn:

  • Start-AzAutomationRunbook. met deze cmdlet kunt u een runbook starten en parameters aan het runbook doorgeven.
  • Get-AzAutomationJob. Als er bewerkingen moeten worden uitgevoerd nadat het onderliggende runbook is voltooid, kunt u met deze cmdlet de taakstatus voor elk onderliggend item controleren.

Scenario: Fout in taakstromen over de methode get_SerializationSettings

Probleem

U ziet de volgende fout in uw taakstreams voor een runbook:

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

Oorzaak

Deze fout wordt waarschijnlijk veroorzaakt door een onvolledige migratie van AzureRM naar Az-modules in uw runbook te gebruiken. Deze situatie kan ertoe leiden dat Azure Automation een runbooktaak start met behulp van alleen AzureRM-modules en vervolgens een andere taak start met behulp van alleen Az-modules, wat leidt tot een crash in de sandbox.

Oplossing

We raden het gebruik van Az- en AzureRM-cmdlets niet aan in hetzelfde runbook. Zie Migreren naar Az-modules voor meer informatie over het juiste gebruik van de modules.

Scenario: Toegang geweigerd bij gebruik van Azure-sandbox voor runbook of toepassing

Probleem

Wanneer uw runbook of toepassing wordt uitgevoerd in een Azure-sandbox, weigert de omgeving de toegang.

Oorzaak

Dit probleem kan optreden omdat Azure-sandboxes de toegang tot alle niet-verwerkte COM-servers voorkomen. Een sandbox-toepassing of runbook kan bijvoorbeeld geen aanroepen naar Windows Management Instrumentation (WMI) of naar de Windows Installer-service (msiserver.exe).

Oplossing

Zie runbookuitvoeringsomgeving voor meer informatie over het gebruik van Azure-sandboxes.

Scenario: Ongeldige statuscode Verboden bij gebruik van Key Vault in een runbook

Probleem

Wanneer u azure Key Vault probeert te openen via een Azure Automation-runbook, krijgt u de volgende fout:

Operation returned an invalid status code 'Forbidden'

Oorzaak

Mogelijke oorzaken voor dit probleem zijn:

  • Geen Uitvoeren als-account gebruiken.
  • Onvoldoende machtigingen.

Oplossing

Geen Uitvoeren als-account gebruiken

Volg stap 5: voeg verificatie toe om Azure-resources te beheren om ervoor te zorgen dat u een Uitvoeren als-account gebruikt voor toegang tot Key Vault.

Onvoldoende machtigingen

Voeg machtigingen toe aan Key Vault om ervoor te zorgen dat uw Uitvoeren als-account voldoende machtigingen heeft voor toegang tot Key Vault.

Scenario: Runbook mislukt met fout 'Parameterlengte overschreden'

Probleem

Uw runbook gebruikt parameters en mislukt met de volgende fout:

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.

Oorzaak

Er is een limiet voor de totale lengte van alle parameters die kunnen worden opgegeven in Python 2.7-, Python 3.8- en PowerShell 7.1-runbooks. De totale lengte van alle parameternamen en parameterwaarden mag niet langer zijn dan 30.000 tekens.

Oplossing

U kunt dit probleem oplossen door Azure Automation-variabelen te gebruiken om waarden door te geven aan runbook. U kunt ook het aantal tekens in parameternamen en parameterwaarden verminderen om ervoor te zorgen dat de totale lengte niet langer is dan 30.000 tekens.

Volgende stappen

Als u het probleem hier niet ziet of als u het probleem niet kunt oplossen, kunt u een van de volgende kanalen proberen voor meer ondersteuning:

  • Krijg antwoorden van Azure-experts via Azure-forums.
  • Verbinding maken met @AzureSupport, het officiële Microsoft Azure-account voor het verbeteren van de klantervaring. Azure Support verbindt u met de Azure-community voor antwoorden, ondersteuning en experts.
  • Als u meer hulp nodig hebt, kunt u een ondersteuning voor Azure incident indienen. Ga naar de ondersteuning voor Azure site en selecteer Ondersteuning krijgen.