Sdílet prostřednictvím


Řešení problémů s runbooky

Tento článek popisuje problémy s runbooky, ke kterým může dojít a jak je vyřešit. Obecné informace najdete v tématu Spouštění runbooků ve službě Azure Automation.

V grafických runboocích PowerShellu už není možné používat rutiny z importovaných ne výchozích modulů.

Problém

Při importu modulu PowerShellu nebudete moct používat jeho rutiny v grafických runboocích PowerShellu.

Příčina

Aby se zlepšil stav zabezpečení runbooků PowerShellu, služba už nespouští soubor manifestu modulu za účelem exportu rutin a funkcí. To znamená, že se nedají použít při vytváření grafických runbooků PowerShellu.

Rozlišení

Spuštění existujících runbooků nemá žádný vliv. V případě nových runbooků, které používají jiné než výchozí moduly PowerShellu, doporučujeme místo grafických runbooků PowerShellu použít textové runbooky k vyřešení tohoto problému. Rozšíření Azure Automation pro VScode můžete použít k vytváření a úpravám runbooků PowerShellu, které využívá GitHub Copilot ke zjednodušení prostředí vytváření runbooků.

Start-AzAutomationRunbook selže s chybovou zprávou RunbookName neodpovídá očekávanému vzoru

Problém

Když spustíte Start-AzAutomationRunbook konkrétní runbooky:

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

Selže s následující chybou:

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

Příčina

Kód, který byl zaveden ve verzi 1.9.0 modulu Az.Automation, ověřuje názvy runbooků tak, aby se spouštěly a nesprávně označí runbooky s více znaky "-" nebo znakem "_" v názvu jako neplatný.

Alternativní řešení

Doporučujeme vrátit se k verzi modulu 1.8.0.

Rozlišení

V současné době pracujeme na nasazení opravy tohoto problému.

Diagnostika problémů s runbooky

Pokud se při provádění runbooků v Azure Automation zobrazí chyby, můžete k diagnostice problémů použít následující kroky:

  1. Ujistěte se, že se skript runbooku úspěšně spustil na místním počítači.

    Referenční informace o jazyku a výukové moduly najdete v dokumentaci k PowerShellu nebo dokumentace k Pythonu. Místní spuštění skriptu může odhalit a vyřešit běžné chyby, jako jsou:

    • Chybějící moduly
    • Syntaktické chyby
    • Logické chyby
  2. Prozkoumejte datové proudy chyb runbooku.

    Podívejte se na tyto datové proudy, vyhledejte konkrétní zprávy a porovnejte je s chybami zdokumentovanými v tomto článku.

  3. Ujistěte se, že vaše uzly a pracovní prostor Automation obsahují požadované moduly.

    Pokud váš runbook importuje nějaké moduly, pomocí kroků v tématu Import modulů ověřte, že jsou dostupné pro váš účet Automation. Aktualizujte moduly PowerShellu na nejnovější verzi podle pokynů v tématu Aktualizace modulů Azure PowerShell v Azure Automation. Další informace o řešení potíží najdete v tématu Řešení potíží s moduly.

  4. Pokud je runbook pozastavený nebo neočekávaně selže:

  5. Tento krok proveďte, pokud úloha runbooku nebo prostředí pro Hybrid Runbook Worker nereaguje.

    Pokud spouštíte runbooky pomocí funkce Hybrid Runbook Worker místo použití služby Azure Automation, možná bude potřeba vyřešit potíže se samotnou rolí Hybrid Worker.

Scénář: Nejde vytvořit novou úlohu Automation v oblasti Západní Evropa

Problém

Při vytváření nových úloh Automation může dojít ke zpoždění nebo selhání. Naplánované úlohy se automaticky vyřadí z důchodu a úlohy spuštěné prostřednictvím portálu se dají vyřadit, pokud dojde k selhání.

Příčina

Důvodem je vysoké zatížení runbooků zákazníků využívajících službu Automation v oblasti Západní Evropa.

Rozlišení

Pokud je to podle vašeho požadavku a prostředí možné, proveďte následující akci, aby se snížila pravděpodobnost selhání:

  • Pokud používáte horní část hodiny pro vytvoření úlohy (v 12:00, 1:00, 2:00 atd.), obvykle v hodině nebo půl hodině, doporučujeme přesunout čas zahájení úlohy na pět minut před hodinou nebo půlhodinou. Důvodem je to, že většina zákazníků používá začátek hodiny pro provádění úloh, což výrazně zvyšuje zatížení služby, zatímco zatížení je relativně nízké v ostatních časových slotech.

Scénář: Runbook selže s touto chybou. Client.SubscriptionId nemůže mít hodnotu null." chybová zpráva

Problém

Runbook s využitím spravované identity Connect-AzAccount –Identity, která se pokouší spravovat objekty Azure, nefunguje úspěšně a zaznamená následující chybu: 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

Příčina

K tomu může dojít v případě, že spravovaná identita (nebo jiný účet použitý v runbooku) nemá udělená žádná oprávnění pro přístup k předplatnému.

Řešení

Udělte spravované identitě (nebo jinému účtu používanému v runbooku) odpovídající členství v rolích v předplatném. Další informace

 Snímek obrazovky znázorňující přiřazení rolí Azure

Snímek obrazovky, který ukazuje, jak přidat přiřazení role

Scénář: Zablokování přístupu ke službě Azure Storage, Azure Key Vault nebo Azure SQL

Tento scénář používá jako příklad Službu Azure Storage . Informace se ale stejně vztahují ke službě Azure Key Vault a Azure SQL.

Problém

Při pokusu o přístup ke službě Azure Storage z runbooku dojde k chybě podobné následující zprávě: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Příčina

Služba Azure Firewall ve službě Azure Storage je povolená.

Rozlišení

Povolení služby Azure Firewall ve službě Azure Storage, Azure Key Vault nebo Azure SQL blokuje přístup z runbooků Azure Automation pro tyto služby. Přístup se zablokuje i v případě, že je povolená výjimka brány firewall pro povolení důvěryhodných služeb Microsoftu, protože služba Automation není součástí seznamu důvěryhodných služeb. S povolenou bránou firewall je možné přístup vytvořit pouze pomocí funkce Hybrid Runbook Worker a koncového bodu služby virtuální sítě.

Scénář: Selhání runbooku s chybou typu Žádná oprávnění nebo 403 – Zakázáno

Problém

Váš runbook selže s chybou Bez oprávnění nebo Zakázáno 403 nebo ekvivalentem.

Příčina

Účty Spustit jako nemusí mít stejná oprávnění k prostředkům Azure jako váš aktuální účet Automation.

Rozlišení

Ujistěte se, že váš účet Spustit jako má oprávnění pro přístup k prostředkům používaným ve skriptu.

Scénář: Přihlášení k čtu Azure selhalo

Problém

Při práci s rutinou Connect-AzAccount se zobrazí jedna z následujících chyb:

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

Příčina

K těmto chybám dochází v případě, že název prostředku přihlašovacích údajů není platný. Může k nim dojít také v případě, že není platné uživatelské jméno a heslo, které jste použili k nastavení prostředku přihlašovacích údajů služby Automation.

Rozlišení

Pokud chcete zjistit, co je špatně, postupujte takto:

  1. Ujistěte se, že nepoužíváte žádné speciální znaky. Mezi tyto znaky patří znak \@ v názvu prostředku přihlašovacích údajů služby Automation, který používáte pro připojení k Azure.

  2. Zkontrolujte, jestli můžete použít uživatelské jméno a heslo, které jsou uložené v přihlašovacích údajích Azure Automation v místním editoru integrovaného skriptovacího prostředí (ISE) v prostředí PowerShell. V integrovaném skriptovacím prostředí (ISE) v prostředí PowerShell spusťte následující rutiny.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Pokud se ověřování nezdaří místně, nenastavili jste správně přihlašovací údaje Microsoft Entra. Pokud chcete správně nastavit účet Microsoft Entra, přečtěte si článek Ověření v Azure pomocí Microsoft Entra ID.

  4. Pokud se zdá, že je chyba přechodná, zkuste ověřování udělat robustnější přidáním logiky opakování do vaší ověřovací rutiny.

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

Scénář: Přihlášení spuštěním rutiny Login-AzureRMAccount

Problém

Při spuštění runbooku se zobrazí následující chyba:

Run Login-AzureRMAccount to login.

Příčina

K této chybě může dojít, když nepoužíváte účet Spustit jako nebo vypršela platnost účtu Spustit jako.

Tato chyba má dvě hlavní příčiny:

  • Existují různé verze modulu AzureRM nebo Az.
  • Pokoušíte se získat přístup k prostředkům v samostatném předplatném.

Rozlišení

Pokud se tato chyba zobrazí po aktualizaci jednoho modulu AzureRM nebo Az, aktualizujte všechny moduly na stejnou verzi.

Pokud se pokoušíte získat přístup k prostředkům v jiném předplatném, nakonfigurujte oprávnění pomocí následujícího postupu:

  1. Přejděte do účtu Automation Spustit jako a zkopírujte ID aplikace a kryptografický otisk.

    Kopírování ID aplikace a kryptografického otisku

  2. Přejděte do řízení přístupu předplatného, kde není účet Automation hostovaný, a přidejte nové přiřazení role.

    Řízení přístupu

  3. Přidejte ID aplikace shromážděné dříve. Vyberte oprávnění přispěvatele .

    Přidat přiřazení role

  4. Zkopírujte název předplatného.

  5. Teď můžete pomocí následujícího kódu runbooku otestovat oprávnění z účtu Automation do jiného předplatného. Nahraďte <CertificateThumbprint> hodnotou zkopírovanou v kroku 1. Nahraďte "<SubscriptionName>" hodnotou zkopírovanou v kroku 4.

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

Scénář: Nepovedlo se najít předplatné Azure

Problém

Při práci s nástrojem , Select-AzureRMSubscriptionnebo Select-AzSubscription rutinou Select-AzureSubscriptionse zobrazí následující chyba:

The subscription named <subscription name> cannot be found.

Chyba

K této chybě může dojít v následujících případech:

  • Název předplatného není platný.
  • Uživatel Microsoft Entra, který se pokouší získat podrobnosti o předplatném, není nakonfigurovaný jako správce předplatného.
  • Rutina není dostupná.
  • Došlo k přepínání kontextu.

Rozlišení

Přepínání kontextu najdete v tématu Přepínání kontextu ve službě Azure Automation.

Scénář: Selhání runbooku při práci s několika předplatnými

Problém

Při spouštění runbooků se runbooku nedaří spravovat prostředky Azure.

Příčina

Runbook při spuštění nepoužívá správný kontext. Důvodem může být to, že runbook se omylem pokouší získat přístup k nesprávnému předplatnému.

Můžou se zobrazit chyby podobné tomuto:

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

nebo podobný tomuto:

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

Rozlišení

Pokud se chcete vyhnout náhodnému pokusu o přístup k nesprávnému předplatnému, přečtěte si téma Přepínání kontextu ve službě Azure Automation.

Scénář: Ověřování do Azure selhává, protože je povolené vícefaktorové ověřování

Problém

Při ověřování v Azure s uživatelským jménem a heslem Azure se zobrazí následující chyba:

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

Příčina

Pokud máte ve svém účtu Azure vícefaktorové ověřování, nemůžete k ověření v Azure použít uživatele Microsoft Entra. Místo toho budete muset k ověření použít certifikát nebo instanční objekt.

Rozlišení

Pokud chcete použít instanční objekt s rutinami Azure Resource Manageru, přečtěte si téma Vytvoření instančního objektu pomocí webu Azure Portal a ověřování instančního objektu pomocí Azure Resource Manageru.

Scénář: Runbook selže s chybovou zprávou Úloha byla zrušena

Problém

Váš runbook selže s podobnou chybou jako v následujícím příkladu:

Exception: A task was cancelled.

Příčina

Příčinou této chyby může být použití zastaralých modulů Azure.

Rozlišení

Tuto chybu můžete vyřešit aktualizací modulů Azure na nejnovější verzi:

  1. Ve svém účtu Automation vyberte Moduly a pak vyberte Aktualizovat moduly Azure.
  2. Aktualizace trvá přibližně 15 minut. Po dokončení znovu spusťte runbook, který selhal.

Další informace o upgradu modulů najdete v tématu Aktualizace modulů Azure ve službě Azure Automation.

Scénář: Výraz se nerozpoznal jako název rutiny, funkce nebo skriptu

Problém

Váš runbook selže s podobnou chybou jako v následujícím příkladu:

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.

Příčina

Tato chyba může mít následující důvody:

  • Modul, který obsahuje rutinu, se neimportuje na účet Automation.
  • Modul, který obsahuje rutinu, se naimportuje, ale je zastaralý.

Rozlišení

Pokud chcete tuto chybu vyřešit, proveďte jednu z následujících úloh:

Scénář: Selhání rutiny v runbooku PowerShellu PnP ve službě Azure Automation

Problém

Když runbook zapíše přímo do výstupu Azure Automation objekt vygenerovaný PnP PowerShellem, výstup rutiny nemůže streamovat zpět do služby Automation.

Příčina

K tomuto problému nejčastěji dochází v případě, že Azure Automation zpracovává runbooky, které například vyvolávají rutiny PowerShellu PnP, add-pnplistitembez zachycení vrácených objektů.

Rozlišení

Upravte skripty a přiřaďte všechny návratové hodnoty proměnným, aby se rutiny nepokoušly zapisovat celé objekty do standardního výstupu. Skript může výstupní datový proud přesměrovat na rutinu, jak je znázorněno tady.

  $null = add-pnplistitem

Pokud skript analyzuje výstup rutiny, musí uložit výstup do proměnné a manipulovat s proměnnou místo pouhého streamování výstupu.

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

Scénář: Při spouštění runbooku se nerozpoznala rutina

Problém

Úloha runbooku selže s chybou:

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

Příčina

Tato chyba je způsobená tím, že modul PowerShellu nemůže najít rutinu, kterou používáte v runbooku. Je možné, že v účtu chybí modul obsahující rutinu, došlo ke konfliktu názvu s názvem runbooku, nebo rutina existuje také v jiném modulu a služba Automation nemůže název přeložit.

Rozlišení

Problém vyřešíte pomocí některého z následujících řešení:

  • Ujistěte se, že jste zadali název rutiny správně.
  • Ujistěte se, že rutina existuje ve vašem účtu Automation a že nedochází ke konfliktům. Pokud chcete ověřit, jestli je rutina k dispozici, otevřete runbook v režimu úprav a vyhledejte rutinu, kterou chcete najít v knihovně, nebo spusťte Get-Command <CommandName>příkaz . Jakmile ověříte, že je rutina pro účet dostupná a že nedochází ke konfliktům názvů s jinými rutinami nebo runbooky, přidejte rutinu na plátno. Ujistěte se, že v runbooku používáte platnou sadu parametrů.
  • Pokud dochází ke konfliktu názvů a rutina je k dispozici ve dvou různých modulech, vyřešte problém použitím plně kvalifikovaného názvu rutiny. Můžete použít třeba ModuleName\CmdletName.
  • Pokud spouštíte runbook místně ve skupině rolí Hybrid Worker, ujistěte se, že modul a rutina jsou nainstalovány na počítači, který je hostitelem Hybrid Worker.

Scénář: Nesprávný odkaz na objekt při volání Add-AzAccount

Problém

Tato chyba se zobrazí při práci s Add-AzAccountrutinou, což je alias rutiny Connect-AzAccount :

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

Příčina

K této chybě může dojít, pokud runbook neprovádí správné kroky před voláním Add-AzAccount pro přidání účtu Automation. Příkladem jednoho z nezbytných kroků je přihlášení pomocí účtu Spustit jako. Správné operace, které se mají použít v runbooku, najdete v tématu Spouštění runbooků ve službě Azure Automation.

Scénář: Odkaz na objekt není nastaven na instanci objektu

Problém

Při vyvolání podřízeného runbooku Wait s parametrem a výstupním streamem se zobrazí následující chyba:

Object reference not set to an instance of an object

Příčina

Pokud stream obsahuje objekty, Start-AzAutomationRunbook nezpracuje výstupní datový proud správně.

Rozlišení

Implementujte logiku dotazování a pomocí rutiny Get-AzAutomationJobOutput načtěte výstup. Tady je definována ukázka této logiky:

$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

Scénář: Runbook selže kvůli deserializovanému objektu

Problém

Runbook selže s chybou:

Cannot bind parameter <ParameterName>.

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

Příčina

Pokud je runbook pracovním postupem PowerShellu, ukládá složité objekty v deserializovaném formátu, aby se zachoval stav runbooku, pokud je pracovní postup pozastavený.

Rozlišení

Tento problém můžete vyřešit pomocí některého z následujících řešení:

  • Pokud propojujete komplexní objekty z jedné rutiny do druhé, zabalte tyto rutiny do aktivity InlineScript.
  • Místo předání celého objektu předejte název nebo hodnotu, kterou potřebujete z komplexního objektu.
  • Místo runbooku pracovního postupu PowerShellu použijte runbook PowerShellu.

Scénář: Stav 400 – Chybný požadavek při volání webhooku

Problém

Při pokusu o vyvolání webhooku pro runbook Azure Automation se zobrazí následující chyba:

400 Bad Request : This webhook has expired or is disabled

Příčina

Webhook, který se pokoušíte volat, je zakázaný nebo vypršela jeho platnost.

Rozlišení

Pokud je webhook zakázaný, můžete ho znovu povolit prostřednictvím webu Azure Portal. Pokud vypršela platnost webhooku, musíte ho odstranit a znovu vytvořit. Platnost webhooku můžete obnovit jenom v případě, že ještě nevypršela.

Scénář: 429: Frekvence požadavků je momentálně příliš vysoká

Problém

Při spuštění rutiny Get-AzAutomationJobOutput se zobrazí následující chybová zpráva:

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

Příčina

K této chybě může dojít při načítání výstupu úlohy z runbooku, který obsahuje mnoho podrobných datových proudů.

Rozlišení

Pokud chcete tuto chybu vyřešit, proveďte jednu z následujících věcí:

  • Upravte runbook a snižte počet datových proudů úloh, které generuje.
  • Snižte počet datových proudů, které se mají načíst při spuštění rutiny. Uděláte to tak, že nastavíte hodnotu parametru Stream pro rutinu Get-AzAutomationJobOutput , která načte pouze výstupní streamy. ​

Scénář: Úloha runbooku selže, protože byla překročena přidělená kvóta

Problém

Úloha runbooku selže s chybou:

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

Příčina

K této chybě dochází, když provádění úlohy překročí 500minutovou bezplatnou kvótu pro váš účet. Tato kvóta se vztahuje na všechny typy úloh provádění úloh. Některé z těchto úloh testují úlohu, spouští úlohu z portálu, spouští úlohu pomocí webhooků nebo plánuje spuštění úlohy pomocí webu Azure Portal nebo vašeho datacentra. Další informace o cenách služby Automation najdete v tématu Ceny služby Automation.

Rozlišení

Pokud chcete použít více než 500 minut zpracování za měsíc, změňte předplatné z úrovně Free na úroveň Basic:

  1. Přihlaste se ke svému předplatnému Azure.
  2. Vyberte účet Automation, který chcete upgradovat.
  3. Vyberte Nastavení a pak vyberte Ceny.
  4. Výběrem možnosti Povolit na stránce dole upgradujte svůj účet na úroveň Basic.

Scénář: Výstupní stream runbooku větší než 1 MB

Problém

Váš runbook spuštěný v sandboxu Azure selže s následující chybou:

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

Příčina

K této chybě dochází, protože se váš runbook pokusil napsat příliš mnoho dat výjimek do výstupního datového proudu.

Rozlišení

U výstupního datového proudu úlohy platí limit 1 MB. Ujistěte se, že runbook uzavře volání spustitelného souboru nebo podprocesu pomocí try a catch bloků. Pokud operace vyvolá výjimku, napište kód zprávy z výjimky do proměnné Automation. Tato technika zabraňuje zápisu zprávy do výstupního datového proudu úkolu. U spuštěných úloh Hybrid Runbook Worker se výstupní datový proud zkrátí na 1 MB bez chybové zprávy.

Scénář: Při všech třech pokusech o spuštění úlohy runbooku došlo k selhání

Problém

Runbook selže s následující chybou:

The job was tried three times but it failed

Příčina

K této chybě dochází z některého z následujících důvodů:

  • Limit paměti. Úloha může selhat, pokud používá více než 400 MB paměti. Zdokumentovaná omezení paměti přidělené sandboxu najdete v tématu Omezení služby Automation.

  • Síťové sokety. Sandboxy Azure jsou omezené na 1 000 souběžných síťových soketů. Další informace najdete v tématu Omezení služby Automation.

  • Modul není kompatibilní. Závislosti modulů nemusí být správné. V takovém případě runbook obvykle vrací Command not found zprávu nebo Cannot bind parameter zprávu.

  • Žádné ověřování ve službě Active Directory pro sandbox. Váš runbook se pokusil volat spustitelný soubor nebo podproces, který běží v sandboxu Azure. Konfigurace runbooků pro ověření pomocí ID Microsoft Entra pomocí knihovny Azure Active Directory Authentication Library (ADAL) není podporovaná.

Rozlišení

  • Limit paměti, síťové sokety. Navrhované způsoby práce v rámci limitů paměti jsou rozdělení úlohy mezi několik runbooků, zpracování méně dat v paměti, zabránění zápisu zbytečného výstupu z runbooků a zvážení počtu kontrolních bodů, které jsou zapsány do runbooků pracovního postupu PowerShellu. Pomocí jasné metody, například $myVar.clear, vymazat proměnné a použít [GC]::Collect ke spuštění uvolňování paměti okamžitě. Tyto akce snižují pro runbook využití paměti za běhu.

  • Modul není kompatibilní. Aktualizujte moduly Azure podle kroků v tématu Postup aktualizace modulů Azure PowerShellu ve službě Azure Automation.

  • Žádné ověřování ve službě Active Directory pro sandbox. Při ověřování v Microsoft Entra ID s využitím runbooku se ujistěte, že je v účtu Automation k dispozici modul Azure AD. Nezapomeňte účtu Spustit jako udělit potřebná oprávnění k provádění úloh, které runbook automatizuje.

    Pokud runbook nemůže volat spustitelný soubor nebo podproces spuštěný v sandboxu Azure, použijte runbook v procesu Hybrid Runbook Worker. Hybridní pracovní procesy nejsou omezené limity paměti a sítě, které mají sandboxy Azure.

Scénář: Úloha PowerShellu selže s chybovou zprávou Nejde vyvolat metodu

Problém

Při spuštění úlohy PowerShellu v runbooku, který běží v Azure, se zobrazí následující chybová zpráva:

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

Příčina

Tato chyba může značit, že runbooky, které běží v sandboxu Azure, nemůžou běžet v režimu full language.

Rozlišení

Tuto chybu můžete vyřešit dvěma způsoby:

Další informace o tomto chování a dalším chování runbooků Azure Automation najdete v tématu Spouštění runbooků ve službě Azure Automation.

Scénář: Dlouho běžící runbook se nepodaří dokončit

Problém

Runbook se zobrazuje ve stavu Zastaveno po spuštění po dobu tří hodin. Může se zobrazit také tato chyba:

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

Toto chování je návrhem v sandboxech Azure kvůli spravedlivému sdílení procesů ve službě Azure Automation. Pokud se proces spustí déle než tři hodiny, spravedlivé sdílení runbook automaticky zastaví. Stav runbooku, který překračuje časový limit spravedlivého sdílení, se liší podle typu runbooku. Runbooky PowerShellu a Pythonu jsou nastavené na stav Zastaveno. Runbooky pracovního postupu PowerShellu jsou nastavené na Selhání.

Příčina

Runbook běžel přes tříhodinový limit povolený spravedlivým sdílením v sandboxu Azure.

Rozlišení

Jedním z doporučených řešení je spuštění runbooku v procesu Hybrid Runbook Worker. Hybridní pracovní procesy nejsou omezeny limitem 3hodinového spravedlivého sdílení runbooku, který mají sandboxy Azure. Runbooky, které běží v hybrid Runbook Worker, by měly být vyvinuty tak, aby podporovaly chování při restartování, pokud dojde k neočekávaným problémům s místní infrastrukturou.

Dalším řešením je optimalizovat runbook vytvořením podřízených runbooků. Pokud runbook prochází stejnou funkcí u několika prostředků, například v databázové operaci na několika databázích, můžete tuto funkci přesunout do podřízeného runbooku. Každý podřízený runbook se spouští paralelně v samostatném procesu. Toto chování snižuje celkovou dobu dokončení nadřazeného runbooku.

Rutiny PowerShellu, které umožňují scénář podřízeného runbooku, jsou:

  • Start-AzAutomationRunbook. Tato rutina vám umožní spustit runbook a předat do něj parametry.
  • Get-AzAutomationJob. Pokud jsou operace, které je potřeba provést po dokončení podřízeného runbooku, tato rutina umožňuje zkontrolovat stav úlohy pro každou podřízenou.

Scénář: Chyba v datových proudech úloh týkající se metody get_SerializationSettings

Problém

V datových proudech úloh runbooku se zobrazí následující chyba:

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

Příčina

Příčinou této chyby je pravděpodobně neúplná migrace z azureRM na moduly Az ve vašem runbooku. Tato situace může způsobit, že Azure Automation spustí úlohu runbooku jenom pomocí modulů AzureRM a pak spustí jinou úlohu jenom pomocí modulů Az, což vede k chybovému ukončení sandboxu.

Rozlišení

Nedoporučujeme používat rutiny Az a AzureRM ve stejném runbooku. Další informace o správném použití modulů najdete v tématu Migrace na moduly Az.

Scénář: Přístup odepřen při použití sandboxu Azure pro runbook nebo aplikaci

Problém

Když se runbook nebo aplikace pokusí spustit v sandboxu Azure, prostředí odepře přístup.

Příčina

Tento problém může nastat, protože sandboxy Azure brání přístupu ke všem serverům COM mimo proces. Například aplikace v izolovaném prostoru (sandbox) nebo runbook nemůžou volat rozhraní WMI (Windows Management Instrumentation) ani do služby Instalační služby systému Windows (msiserver.exe).

Rozlišení

Podrobnosti o používání sandboxů Azure najdete v tématu Prostředí spouštění runbooků.

Scénář: Neplatný stavový kód Zakázáno při použití služby Key Vault v runbooku

Problém

Při pokusu o přístup ke službě Azure Key Vault prostřednictvím runbooku Azure Automation se zobrazí následující chyba:

Operation returned an invalid status code 'Forbidden'

Příčina

Možné příčiny tohoto problému:

  • Nepoužívá účet Spustit jako.
  • Nedostatečná oprávnění.

Rozlišení

Nepoužívání účtu Spustit jako

Postupujte podle kroku 5– Přidejte ověřování pro správu prostředků Azure a ujistěte se, že pro přístup ke službě Key Vault používáte účet Spustit jako.

Nedostatečná oprávnění

Přidejte oprávnění ke službě Key Vault, abyste měli jistotu, že váš účet Spustit jako má dostatečná oprávnění pro přístup ke službě Key Vault.

Scénář: Runbook selže s chybou „Překročení délky parametru“.

Problém

Váš runbook používá parametry a selže s následující chybou:

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.

Příčina

Existuje omezení celkové délky znaků všech parametrů, které je možné zadat v runbookech Python 2.7, Python 3.8 a PowerShell 7.1. Celková délka všech názvů parametrů a hodnot parametru nesmí překročit 30 000 znaků.

Rozlišení

K vyřešení tohoto problému můžete použít proměnné Azure Automation k předání hodnot do runbooku. Můžete také snížit počet znaků v názvech parametrů a hodnotách parametru, abyste zajistili, že celková délka nepřekročí 30 000 znaků.

Další kroky

Pokud se tady váš problém nezobrazuje nebo nemůžete problém vyřešit, zkuste získat další podporu některým z následujících kanálů:

  • Získejte odpovědi od odborníků na Azure prostřednictvím fór Azure.
  • Spojte se s @AzureSupport, oficiálním účtem Microsoft Azure pro zlepšení uživatelského prostředí. Podpora Azure vás spojuje s komunitou Azure a poskytuje odpovědi, podporu a odborníky.
  • Pokud potřebujete další pomoc, můžete podat podpora Azure incident. Přejděte na web podpora Azure a vyberte Získat podporu.