Řešení problémů s runbooky

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

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

Problém

Spuštěním příkazu Start-AzAutomationRunbook spustíte 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 zavedený ve verzi 1.9.0 modulu Az.Automation ověřuje názvy runbooků, které se mají spustit, a nesprávně označí runbooky několika znaky "-" nebo znakem _v názvu jako neplatné.

Alternativní řešení

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

Řešení

V současné době pracujeme na nasazení opravy, která tento problém vyřeší.

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 runbooky spouštíte ve službě Hybrid Runbook Worker místo v Azure Automation, možná budete muset vyřešit potíže se samotným procesem 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í a úlohy spouštěné prostřednictvím portálu je možné 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.

Řešení

Pokud je to podle vašich požadavků a prostředí proveditelné, proveďte následující akci, abyste snížili riziko selhání:

  • Pokud při vytváření úlohy používáte horní část hodiny (ve 12:00, 1:00, 2:00 atd.), obvykle na hodinu nebo půl hodiny, doporučujeme přesunout čas zahájení úlohy na pět minut před nebo po hodině nebo půl hodiny. Důvodem je to, že většina zákazníků používá k provádění úloh začátek hodiny, 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 chybou "this. Client.SubscriptionId nemůže mít hodnotu null." chybová zpráva

Problém

Váš runbook používající spravovanou identitu Connect-AzAccount –Identity, která se pokouší spravovat objekty Azure, nefunguje úspěšně a protokoluje 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

V tomto scénáři se jako příklad používá Azure Storage. Tyto informace se však stejně vztahují na 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

Je povolená Azure Firewall ve službě Azure Storage.

Řešení

Povolení Azure Firewall ve službě Azure Storage, Azure Key Vault nebo Azure SQL blokuje přístup z Azure Automation runbooků pro tyto služby. Přístup se zablokuje, i když je povolená výjimka brány firewall pro povolení důvěryhodných služeb Microsoftu, protože automatizace není součástí seznamu důvěryhodných služeb. S povolenou bránou firewall je možné získat přístup 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

Runbook selže s chybou Ne oprávnění nebo Zakázáno 403 nebo ekvivalentní chybou.

Příčina

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

Řešení

Ujistěte se, že váš účet Spustit jako má oprávnění pro přístup ke všem prostředkům použitým ve vašem 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.

Řeš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 místní ověřování selhalo, nenastavili jste správně přihlašovací údaje Azure Active Directory (Azure AD). Pokud chcete správně nastavit účet Azure AD, přečtěte si článek Ověřování v Azure pomocí Azure Active Directory.

  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
    }
    

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 platnost účtu Spustit jako vypršela. Další informace najdete v tématu Azure Automation přehled účtů 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.

Řeš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í následujícím postupem:

  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 DŘÍVE shromážděné ID aplikace . 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 vašeho účtu Automation k druhému předplatnému. 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 rutinou Select-AzureSubscription, Select-AzureRMSubscriptionnebo Select-AzSubscription se zobrazí následující chyba:

The subscription named <subscription name> cannot be found.

Chyba

K této chybě může dojít v těchto případech:

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

Řešení

Informace o přepínání kontextu najdete v tématu Přepínání kontextu v 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ů runbook nespravuje prostředky Azure.

Příčina

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

Může se zobrazit chyba podobná této:

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

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

Řeš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 v 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 pomocí uživatelského jména a hesla 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 Azure Active Directory. Místo toho musíte k ověření použít certifikát nebo instanční objekt.

Řešení

Informace o použití instančního objektu s rutinami Azure Resource Manager najdete v tématech Vytvoření instančního objektu pomocí Azure Portal a Ověřování instančního objektu pomocí Azure Resource Manager.

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.

Řeš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 aktualizaci modulů najdete v tématu Aktualizace modulů Azure v 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ý.

Řeš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 v Azure Automation

Problém

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

Příčina

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

Řešení

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

  $null = add-pnplistitem

Pokud skript analyzuje výstup rutiny, musí skript 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

K této chybě dojde v případě, ž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.

Řešení

K vyřešení problému použijte některé 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 například použít 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, což je alias pro rutinu Connect-AzAccount :

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

Příčina

K této chybě může dojít v případě, že runbook před voláním Add-AzAccount příkazu pro přidání účtu Automation neprovádí správné kroky. Příkladem jednoho z nezbytných kroků je přihlášení pomocí účtu Spustit jako. Správné operace, které se mají v runbooku použít, najdete v tématu Spouštění runbooků v 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í datový proud obsahuje objekt se zobrazí následující chyba:

Object reference not set to an instance of an object

Příčina

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

Řešení

Implementujte logiku dotazování a k načtení výstupu použijte rutinu Get-AzAutomationJobOutput . Ukázka této logiky je definovaná tady:

$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 váš 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ý.

Řešení

K vyřešení tohoto problému použijte některé 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 Azure Automation runbooku 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 buď zakázaný, nebo vypršela jeho platnost.

Řešení

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

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

Řešení

Pokud chcete tuto chybu vyřešit, udělejte 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. K tomu můžete nastavit hodnotu parametru Stream rutiny Get-AzAutomationJobOutput tak, aby načetla pouze výstupní datové proudy. ​

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ž spuště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. Mezi tyto úlohy patří testování úlohy, spuštění úlohy z portálu, spuštění úlohy pomocí webhooků nebo naplánování spuštění úlohy pomocí Azure Portal nebo datacentra. Další informace o cenách služby Automation najdete v tématu Ceny služby Automation.

Řešení

Pokud chcete využí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 dolní části stránky vyberte Povolit a upgradujte svůj účet na úroveň Basic.

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

Problém

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 zapsat příliš mnoho dat výjimek do výstupního datového proudu.

Řešení

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

Scénář: Úloha runbooku se třikrát pokusila spustit, ale pokaždé se nedaří spustit

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. Pokud úloha využívá více než 400 MB paměti, může selhat. 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 tomto případě runbook obvykle vrátí Command not found zprávu nebo Cannot bind parameter .

  • Bez ověřování pomocí služby Active Directory pro sandbox. Váš runbook se pokusil volat spustitelný soubor nebo podproces, který běží v sandboxu Azure. Konfigurace runbooků pro ověřování pomocí Azure AD pomocí knihovny ADAL (Azure Active Directory Authentication Library) se nepodporuje.

Řešení

  • Limit paměti, síťové sokety. Navrhované způsoby, jak pracovat v rámci limitů paměti, je rozdělit úlohy mezi několik runbooků, zpracovat méně dat v paměti, vyhnout se zápisu zbytečného výstupu z runbooků a zvážit, kolik kontrolních bodů se zapisuje do runbooků pracovního postupu PowerShellu. Pomocí metody clear, například $myVar.clear, vymažte proměnné a použijte [GC]::Collect k okamžitému spuštění uvolňování paměti. Tyto akce snižují nároky na paměť runbooku za běhu.

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

  • Bez ověřování pomocí služby Active Directory pro sandbox. Při ověřování v Azure AD 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 váš runbook nemůže volat spustitelný soubor nebo podproces spuštěný v sandboxu Azure, použijte runbook ve funkci 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 znamenat, že runbooky, které běží v sandboxu Azure, se nedají spustit v režimu úplného jazyka.

Řešení

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

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

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

Problém

Váš runbook se po spuštění po dobu tří hodin zobrazí ve stavu Zastaveno. 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 v sandboxech Azure záměrně kvůli spravedlivému sdílení procesů v rámci Azure Automation. Pokud proces běží déle než tři hodiny, fair share 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 Neúspěšné.

Příčina

Runbook překročil tříhodinový limit povolený spravedlivým sdílením v sandboxu Azure.

Řešení

Jedním z doporučených řešení je spustit runbook ve funkci Hybrid Runbook Worker. Hybridní pracovní procesy nejsou omezeny limitem tříhodinového spravedlivého sdílení runbooků, který mají sandboxy Azure. Runbooky, které běží na službě Hybrid Runbook Worker, by se měly vyvíjet tak, aby podporovaly chování 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 váš runbook prochází stejnou funkcí na několika prostředcích, například při databázové operaci v několika databázích, můžete 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 existují 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 položku.

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

Problém

V datových proudech úloh pro runbook 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ě použití neúplné migrace z AzureRM na moduly Az ve vašem runbooku. Tato situace může způsobit, že Azure Automation spustí úlohu runbooku pouze pomocí modulů AzureRM a pak spustí jinou úlohu pouze pomocí modulů Az, což vede k chybovému ukončení sandboxu.

Řeš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í přístup odmítne.

Příčina

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

Řešení

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

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

Problém

Při pokusu o přístup k 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á se účet Spustit jako.
  • Nedostatečná oprávnění.

Řešení

Nepoužívá se účet Spustit jako

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

Nedostatečná oprávnění

Přidejte oprávnění k Key Vault, abyste měli jistotu, že váš účet Spustit jako má dostatečná oprávnění pro přístup k 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é poskytnout v runboocích 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ů.

Řešení

Pokud chcete tento problém vyřešit, můžete pomocí Azure Automation Variables předat hodnoty 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 se vám nedaří problém vyřešit, vyzkoušejte jeden z následujících kanálů, kde získáte další podporu:

  • 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, který vylepšuje prostředí pro zákazníky. Podpora Azure vás připojí ke komunitě Azure, kde získáte 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.