Ř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:
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
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.
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.
Pokud je runbook pozastavený nebo neočekávaně selže:
- Pokud se pokoušíte ke spuštění runbooku použít webhook s prošlou platností, obnovte webhook.
- Zkontrolujte stav úloh a zjistěte aktuální stav runbooků a některé možné příčiny problému.
- Přidejte k runbooku další výstup, abyste zjistili, co se stane před pozastavením runbooku.
- Zpracujte všechny výjimky vyvolané vaší úlohou.
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
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:
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.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
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.
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:
Přejděte do účtu Automation Spustit jako a zkopírujte ID aplikace a kryptografický otisk.
Přejděte do řízení přístupu předplatného, kde není účet Automation hostovaný, a přidejte nové přiřazení role.
Přidejte ID aplikace shromážděné dříve. Vyberte oprávnění přispěvatele .
Zkopírujte název předplatného.
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-AzureRMSubscription
nebo Select-AzSubscription
rutinou Select-AzureSubscription
se 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:
- Ve svém účtu Automation vyberte Moduly a pak vyberte Aktualizovat moduly Azure.
- 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:
- Informace o tom, jak aktualizovat moduly v účtu Automation, najdete v tématu Postup aktualizace modulů Azure PowerShellu ve službě Azure Automation.
- V případě modulu mimo Azure se ujistěte, že je importovaný do vašeho účtu Automation.
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-pnplistitem
bez 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-AzAccount
rutinou, 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:
- Přihlaste se ke svému předplatnému Azure.
- Vyberte účet Automation, který chcete upgradovat.
- Vyberte Nastavení a pak vyberte Ceny.
- 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 neboCannot 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:
- Místo použití úlohy Start-Job spusťte runbook pomocí start-AzAutomationRunbook .
- Zkuste spustit runbook ve funkci Hybrid Runbook Worker.
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ů.
Doporučené dokumenty
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.