Rozwiązywanie problemów z elementami runbook

W tym artykule opisano problemy z elementem Runbook, które mogą wystąpić i jak je rozwiązać. Aby uzyskać ogólne informacje, zobacz Wykonywanie elementu Runbook w usłudze Azure Automation.

Polecenie Start-AzAutomationRunbook kończy się niepowodzeniem z komunikatem o błędzie "RunbookName nie pasuje do oczekiwanego wzorca"

Problem

Po uruchomieniu polecenia Start-AzAutomationRunbook , aby uruchomić określone elementy Runbook:

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

Kończy się to niepowodzeniem z powodu następującego błędu:

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

Przyczyna

Kod wprowadzony w wersji 1.9.0 modułu Az.Automation weryfikuje nazwy elementów Runbook do uruchamiania i niepoprawnie flaguje elementy Runbook z wieloma znakami "-" lub znakiem "_" w nazwie jako nieprawidłowe.

Obejście

Zalecamy przywrócenie wersji 1.8.0 modułu.

Rozwiązanie

Obecnie pracujemy nad wdrożeniem poprawki w celu rozwiązania tego problemu.

Diagnozowanie problemów z elementem runbook

W przypadku wystąpienia błędów podczas wykonywania elementu runbook w usłudze Azure Automation możesz wykonać następujące kroki, aby zdiagnozować problemy:

  1. Upewnij się, że skrypt elementu runbook jest pomyślnie wykonywany na maszynie lokalnej.

    Aby zapoznać się z dokumentacją dotyczącą języka i modułami szkoleniowymi, zobacz dokumentację programu PowerShell lub dokumentację języka Python. Uruchomienie skryptu lokalnie może pomóc w wykryciu i usunięciu typowych błędów, takich jak:

    • Brakujące moduły
    • Błędy składniowe
    • Błędy logiki
  2. Zbadaj strumienie błędów elementu runbook.

    Przyjrzyj się tym strumieniom pod kątem określonych komunikatów i porównaj je z błędami opisanymi w tym artykule.

  3. Upewnij się, że węzły i obszar roboczy usługi Automation mają wymagane moduły.

    Jeśli element runbook importuje moduły, sprawdź, czy są one dostępne dla konta usługi Automation, wykonując kroki opisane w temacie Importowanie modułów. Zaktualizuj moduły programu PowerShell do najnowszej wersji, postępując zgodnie z instrukcjami w temacie Aktualizowanie modułów programu Azure PowerShell w usłudze Azure Automation. Aby uzyskać więcej informacji na temat rozwiązywania problemów, zobacz Rozwiązywanie problemów z modułami.

  4. Jeśli element runbook jest wstrzymywany lub jego działanie nieoczekiwanie kończy się niepowodzeniem:

  5. Wykonaj ten krok, jeśli zadanie elementu runbook lub środowisko w hybrydowym procesie roboczym elementu runbook nie odpowiada.

    Jeśli uruchamiasz elementy runbook przy użyciu hybrydowego procesu roboczego elementu runbook, a nie za pomocą usługi Azure Automation, konieczne może być rozwiązanie problemu z samym hybrydowym procesem roboczym.

Scenariusz: Nie można utworzyć nowego zadania automatyzacji w regionie Europa Zachodnia

Problem

Podczas tworzenia nowych zadań usługi Automation może wystąpić opóźnienie lub niepowodzenie tworzenia zadania. Zaplanowane zadania zostaną automatycznie wycofane, a zadania wykonywane za pośrednictwem portalu mogą zostać wycofane, jeśli wystąpi błąd.

Przyczyna

Wynika to z dużego obciążenia elementów Runbook klientów korzystających z usługi Automation w regionie Europa Zachodnia.

Rozwiązanie

Wykonaj następującą akcję, jeśli jest to możliwe zgodnie z wymaganiami i środowiskiem, aby zmniejszyć prawdopodobieństwo awarii:

  • Jeśli używasz górnej części godziny tworzenia zadania (o godzinie 12:00, 1:00, 2:00 itd.), zazwyczaj w godzinach lub pół godziny zalecamy przeniesienie czasu rozpoczęcia zadania do pięciu minut przed godziną lub po godzinie/pół godziny. Wynika to z faktu, że większość klientów używa początku godziny do wykonania zadania, co znacząco zwiększa obciążenie usługi, podczas gdy obciążenie jest stosunkowo niskie w innych przedziałach czasu.

Scenariusz: element Runbook kończy się niepowodzeniem z komunikatem "this. Identyfikator Client.SubscriptionId nie może mieć wartości null" — komunikat o błędzie

Problem

Element runbook korzystający z tożsamości zarządzanej Połączenie-AzAccount -Identity, który próbuje zarządzać obiektami platformy Azure, nie działa pomyślnie i rejestruje następujący błąd —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

Przyczyna

Może się tak zdarzyć, gdy tożsamość zarządzana (lub inne konto używane w elemecie Runbook) nie otrzymała żadnych uprawnień dostępu do subskrypcji.

Rozwiązanie

Przyznaj tożsamości zarządzanej (lub innemu kontu używanemu w elemencie runbook) odpowiedniego członkostwa w roli w subskrypcji. Dowiedz się więcej

 Screenshot that shows the assigning of Azure Role assignments.

Screenshot that shows how to add role assignment.

Scenariusz: Zablokowany dostęp do usługi Azure Storage, Azure Key Vault lub Azure SQL

W tym scenariuszu użyto usługi Azure Storage jako przykładu, jednak informacje te mają równie zastosowanie do usługi Azure Key Vault i usługi Azure SQL.

Problem

Próba uzyskania dostępu do usługi Azure Storage z poziomu elementu Runbook powoduje wystąpienie błędu podobnego do następującego komunikatu: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Przyczyna

Usługa Azure Firewall w usłudze Azure Storage jest włączona.

Rozwiązanie

Włączenie usługi Azure Firewall w usłudze Azure Storage, usłudze Azure Key Vault lub usłudze Azure SQL blokuje dostęp z elementów Runbook usługi Azure Automation dla tych usług. Dostęp zostanie zablokowany nawet wtedy, gdy wyjątek zapory umożliwiający zezwolenie na zaufane usługi firmy Microsoft jest włączony, ponieważ usługa Automation nie jest częścią listy zaufanych usług. W przypadku włączonej zapory dostęp można uzyskać tylko przy użyciu hybrydowego procesu roboczego elementu Runbook i punktu końcowego usługi sieci wirtualnej.

Scenariusz: Działanie elementu runbook kończy się błędem Brak uprawnień lub 403 Zabronione

Problem

Element Runbook kończy się niepowodzeniem z powodu błędu Brak uprawnień lub Zabronione 403 lub równoważnego.

Przyczyna

Konta Uruchom jako mogą nie mieć tych samych uprawnień względem zasobów platformy Azure co bieżące konto usługi Automation.

Rozwiązanie

Upewnij się, że twoje konto Uruchom jako ma uprawnienia dostępu do wszystkich zasobów używanych w skryscie.

Scenariusz: logowanie do konta platformy Azure zakończyło się niepowodzeniem

Problem

Podczas pracy z poleceniem Connect-AzAccount cmdlet występuje jeden z następujących błędów:

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

Przyczyna

Te błędy występują, jeśli nazwa zasobu poświadczeń jest nieprawidłowa. Mogą one również wystąpić, jeśli nazwa użytkownika i hasło użyte do skonfigurowania zasobu poświadczeń usługi Automation nie są prawidłowe.

Rozwiązanie

Aby ustalić, co jest złe, wykonaj następujące kroki:

  1. Upewnij się, że nie masz żadnych znaków specjalnych. Te znaki zawierają znak \@ w nazwie zasobu poświadczeń usługi Automation, którego używasz do nawiązywania połączenia z platformą Azure.

  2. Sprawdź, czy możesz użyć nazwy użytkownika i hasła, które są przechowywane w poświadczeniu usługi Azure Automation w lokalnym edytorze aplikacji ISE programu PowerShell. Uruchom następujące polecenia cmdlet w aplikacji ISE programu PowerShell.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Jeśli uwierzytelnianie nie powiedzie się lokalnie, nie skonfigurowaliśmy poprawnie poświadczeń usługi Microsoft Entra. Aby poprawnie skonfigurować konto Microsoft Entra, zobacz artykuł Uwierzytelnianie na platformie Azure przy użyciu identyfikatora Entra firmy Microsoft.

  4. Jeśli błąd wydaje się przejściowy, spróbuj dodać logikę ponawiania prób do procedury uwierzytelniania, aby uwierzytelnianie było bardziej niezawodne.

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

Scenariusz: Uruchamianie polecenia Login-AzureRMAccount w celu zalogowania się

Problem

Podczas uruchamiania elementu Runbook jest wyświetlany następujący błąd:

Run Login-AzureRMAccount to login.

Przyczyna

Ten błąd może wystąpić, gdy nie używasz konta Uruchom jako lub konto Uruchom jako wygasło.

Ten błąd ma dwie podstawowe przyczyny:

  • Istnieją różne wersje modułu AzureRM lub modułu Az.
  • Próbujesz uzyskać dostęp do zasobów w oddzielnej subskrypcji.

Rozwiązanie

Jeśli ten błąd zostanie wyświetlony po zaktualizowaniu jednego modułu AzureRM lub Az, zaktualizuj wszystkie moduły do tej samej wersji.

Jeśli próbujesz uzyskać dostęp do zasobów w innej subskrypcji, wykonaj następujące kroki, aby skonfigurować uprawnienia:

  1. Przejdź do konta Uruchom jako usługi Automation i skopiuj identyfikator aplikacji i odcisk palca.

    Copy Application ID and Thumbprint

  2. Przejdź do kontroli dostępu subskrypcji, w której konto usługi Automation nie jest hostowane, i dodaj nowe przypisanie roli.

    Access control

  3. Dodaj zebrany wcześniej identyfikator aplikacji. Wybierz pozycję Uprawnienia współautora .

    Add role assignment

  4. Skopiuj nazwę subskrypcji.

  5. Teraz możesz użyć następującego kodu elementu Runbook, aby przetestować uprawnienia z konta usługi Automation do innej subskrypcji. Zastąp <CertificateThumbprint> wartość skopiowaną w kroku 1. Zastąp "<SubscriptionName>" wartość skopiowaną w 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
    }
    

Scenariusz: Nie można znaleźć subskrypcji platformy Azure

Problem

Podczas pracy z poleceniem Select-AzureSubscriptioncmdlet , Select-AzureRMSubscriptionlub Select-AzSubscription występuje następujący błąd:

The subscription named <subscription name> cannot be found.

Błąd

Ten błąd może wystąpić, jeśli:

  • Nazwa subskrypcji jest nieprawidłowa.
  • Użytkownik firmy Microsoft Entra, który próbuje uzyskać szczegóły subskrypcji, nie jest skonfigurowany jako administrator subskrypcji.
  • Polecenie cmdlet nie jest dostępne.
  • Wystąpiło przełączanie kontekstu.

Rozwiązanie

Aby uzyskać informacje na temat przełączania kontekstu, zobacz Przełączanie kontekstu w usłudze Azure Automation.

Scenariusz: Działanie elementu runbook kończy się błędem podczas pracy z wieloma subskrypcjami

Problem

Podczas wykonywania elementów Runbook element Runbook nie może zarządzać zasobami platformy Azure.

Przyczyna

Element Runbook nie używa poprawnego kontekstu podczas uruchamiania. Może to być spowodowane tym, że element Runbook przypadkowo próbuje uzyskać dostęp do nieprawidłowej subskrypcji.

Mogą pojawić się błędy podobne do tego:

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

lub podobne do tego:

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

Rozwiązanie

Aby uniknąć przypadkowej próby uzyskania dostępu do nieprawidłowej subskrypcji, zobacz Przełączanie kontekstu w usłudze Azure Automation.

Scenariusz: Uwierzytelnianie na platformie Azure kończy się niepowodzeniem, ponieważ włączono uwierzytelnianie wieloskładnikowe

Problem

Podczas uwierzytelniania na platformie Azure przy użyciu nazwy użytkownika i hasła platformy Azure występuje następujący błąd:

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

Przyczyna

Jeśli masz uwierzytelnianie wieloskładnikowe na koncie platformy Azure, nie możesz użyć użytkownika firmy Microsoft Entra do uwierzytelniania na platformie Azure. Zamiast tego należy użyć certyfikatu lub jednostki usługi do uwierzytelniania.

Rozwiązanie

Aby użyć jednostki usługi z poleceniami cmdlet usługi Azure Resource Manager, zobacz Tworzenie jednostki usługi przy użyciu witryny Azure Portal i Uwierzytelnianie jednostki usługi za pomocą usługi Azure Resource Manager.

Scenariusz: element runbook kończy się niepowodzeniem z komunikatem o błędzie „Zadanie zostało anulowane”

Problem

Element runbook kończy się niepowodzeniem z powodu błędu podobnego do następującego przykładu:

Exception: A task was cancelled.

Przyczyna

Ten błąd może być spowodowany użyciem nieaktualnych modułów platformy Azure.

Rozwiązanie

Ten błąd można rozwiązać, aktualizując moduły platformy Azure do najnowszej wersji:

  1. Na koncie usługi Automation wybierz pozycję Moduły, a następnie wybierz pozycję Aktualizuj moduły platformy Azure.
  2. Aktualizacja zajmuje niecałe 15 minut. Po jej zakończeniu uruchom ponownie element runbook, który zakończył się niepowodzeniem.

Aby dowiedzieć się więcej o aktualizowaniu modułów, zobacz sekcję Aktualizowanie modułów platformy Azure w usłudze Azure Automation.

Scenariusz: termin nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji lub skryptu

Problem

Element runbook kończy się niepowodzeniem z powodu błędu podobnego do następującego przykładu:

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.

Przyczyna

Ten błąd może wystąpić z następujących powodów:

  • Moduł zawierający polecenie cmdlet nie jest zaimportowany na konto usługi Automation.
  • Moduł zawierający polecenie cmdlet jest zaimportowany, ale jest nieaktualny.

Rozwiązanie

Wykonaj jedno z następujących zadań, aby rozwiązać ten błąd:

Scenariusz: polecenie cmdlet kończy się niepowodzeniem w elemecie Runbook programu PowerShell PnP w usłudze Azure Automation

Problem

Gdy element Runbook zapisuje obiekt wygenerowany przez program PnP PowerShell bezpośrednio do danych wyjściowych usługi Azure Automation, dane wyjściowe polecenia cmdlet nie mogą przesyłać strumieniowo do usługi Automation.

Przyczyna

Ten problem występuje najczęściej, gdy usługa Azure Automation przetwarza elementy Runbook, które wywołują polecenia cmdlet programu PowerShell PnP, add-pnplistitemna przykład , bez przechwytywania zwracanych obiektów.

Rozwiązanie

Edytuj skrypty, aby przypisać wszystkie zwracane wartości do zmiennych, aby polecenia cmdlet nie próbowały zapisywać całych obiektów w standardowych danych wyjściowych. Skrypt może przekierować strumień wyjściowy do polecenia cmdlet, jak pokazano tutaj.

  $null = add-pnplistitem

Jeśli skrypt analizuje dane wyjściowe polecenia cmdlet, skrypt musi przechowywać dane wyjściowe w zmiennej i manipulować zmienną, a nie po prostu przesyłać strumieniowo dane wyjściowe.

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

Scenariusz: polecenie cmdlet nie zostało rozpoznane podczas wykonywania elementu Runbook

Problem

Zadanie elementu runbook kończy się niepowodzeniem z powodu błędu:

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

Przyczyna

Ten błąd jest spowodowany tym, że aparat programu PowerShell nie może odnaleźć polecenia cmdlet, którego używasz w elemecie Runbook. Możliwe, że na koncie brakuje modułu zawierającego polecenie cmdlet, istnieje konflikt nazw z nazwą elementu runbook lub polecenie cmdlet istnieje również w innym module, a usługa Automation nie może rozpoznać nazwy.

Rozwiązanie

Aby rozwiązać ten problem, użyj dowolnego z następujących rozwiązań:

  • Upewnij się, że nazwa polecenia cmdlet została wprowadzona poprawnie.
  • Upewnij się, że polecenie cmdlet istnieje na koncie usługi Automation i że nie ma konfliktów. Aby sprawdzić, czy polecenie cmdlet jest obecne, otwórz element Runbook w trybie edycji i wyszukaj polecenie cmdlet, które chcesz znaleźć w bibliotece, lub uruchom polecenie Get-Command <CommandName>. Po sprawdzeniu, czy polecenie cmdlet jest dostępne dla konta i czy nie ma konfliktów nazw z innymi poleceniami cmdlet lub elementami runbook, dodaj polecenie cmdlet do kanwy. Upewnij się, że używasz prawidłowego zestawu parametrów w elemencie runbook.
  • Jeśli występuje konflikt nazw, a polecenie cmdlet jest dostępne w dwóch różnych modułach, rozwiąż problem, używając w pełni kwalifikowanej nazwy polecenia cmdlet. Możesz na przykład użyć ModuleName\CmdletName.
  • Jeśli wykonujesz element Runbook lokalnie w hybrydowej grupie procesów roboczych, upewnij się, że moduł i polecenie cmdlet są zainstalowane na maszynie, która hostuje hybrydowy proces roboczy.

Scenariusz: Nieprawidłowe odwołanie do obiektu podczas wywołania polecenia Add-AzAccount

Problem

Ten błąd występuje podczas pracy z Add-AzAccountprogramem , który jest aliasem Connect-AzAccount polecenia cmdlet:

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

Przyczyna

Ten błąd może wystąpić, jeśli element Runbook nie wykonuje odpowiednich kroków przed wywołaniem Add-AzAccount polecenia w celu dodania konta usługi Automation. Przykładem jednego z niezbędnych kroków jest zalogowanie się przy użyciu konta Uruchom jako. Aby uzyskać prawidłowe operacje używane w elemecie Runbook, zobacz Wykonywanie elementu Runbook w usłudze Azure Automation.

Scenariusz: odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu

Problem

Podczas wywoływania podrzędnego elementu Runbook z parametrem Wait występuje następujący błąd, a strumień wyjściowy zawiera obiekt:

Object reference not set to an instance of an object

Przyczyna

Jeśli strumień zawiera obiekty, Start-AzAutomationRunbook nie obsługuje strumienia wyjściowego poprawnie.

Rozwiązanie

Zaimplementuj logikę sondowania i użyj polecenia cmdlet Get-AzAutomationJobOutput , aby pobrać dane wyjściowe. W tym miejscu zdefiniowano przykład tej logiki:

$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

Scenariusz: Element Runbook kończy się niepowodzeniem z powodu zdeserializowanego obiektu

Problem

Element Runbook kończy się niepowodzeniem z powodu błędu:

Cannot bind parameter <ParameterName>.

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

Przyczyna

Jeśli element Runbook jest przepływem pracy programu PowerShell, przechowuje złożone obiekty w formacie deserializacji, aby utrwały stan elementu Runbook, jeśli przepływ pracy jest zawieszony.

Rozwiązanie

Aby rozwiązać ten problem, użyj dowolnego z następujących rozwiązań:

  • Jeśli przesyłasz potokowo złożone obiekty z jednego polecenia cmdlet do innego, opakuj te polecenia cmdlet w działaniu InlineScript.
  • Przekaż nazwę lub wartość, której potrzebujesz, z obiektu złożonego zamiast przekazywać cały obiekt.
  • Użyj elementu Runbook programu PowerShell zamiast elementu Runbook przepływu pracy programu PowerShell.

Scenariusz: 400 Nieprawidłowy stan żądania podczas wywoływania elementu webhook

Problem

Podczas próby wywołania elementu webhook dla elementu Runbook usługi Azure Automation zostanie wyświetlony następujący błąd:

400 Bad Request : This webhook has expired or is disabled

Przyczyna

Element webhook, który próbujesz wywołać, jest wyłączony lub wygasł.

Rozwiązanie

Jeśli element webhook jest wyłączony, możesz go ponownie włączyć za pośrednictwem witryny Azure Portal. Jeśli element webhook wygasł, należy go usunąć, a następnie utworzyć ponownie. Możesz odnowić element webhook tylko wtedy, gdy jeszcze nie wygasł.

Scenariusz: 429: Liczba żądań jest obecnie zbyt duża

Problem

Podczas uruchamiania Get-AzAutomationJobOutput polecenia cmdlet zostanie wyświetlony następujący komunikat o błędzie:

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

Przyczyna

Ten błąd może wystąpić podczas pobierania danych wyjściowych zadania z elementu Runbook zawierającego wiele pełnych strumieni.

Rozwiązanie

Wykonaj jedną z następujących czynności, aby rozwiązać ten błąd:

  • Edytuj element Runbook i zmniejsz liczbę strumieni zadań, które emituje.
  • Zmniejsz liczbę strumieni do pobrania podczas uruchamiania polecenia cmdlet. W tym celu można ustawić wartość parametru Stream polecenia cmdlet Get-AzAutomationJobOutput , aby pobrać tylko strumienie wyjściowe. ​

Scenariusz: zadanie elementu Runbook kończy się niepowodzeniem z powodu przekroczenia przydzielonego limitu przydziału

Problem

Zadanie elementu runbook kończy się niepowodzeniem z powodu błędu:

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

Przyczyna

Ten błąd występuje, gdy wykonanie zadania przekracza limit przydziału bezpłatnego 500 minut dla twojego konta. Ten limit przydziału dotyczy wszystkich typów zadań wykonywania zadań. Niektóre z tych zadań to testowanie zadania, uruchamianie zadania z portalu, wykonywanie zadania przy użyciu elementów webhook lub planowanie zadania do wykonania przy użyciu witryny Azure Portal lub centrum danych. Aby dowiedzieć się więcej o cenach usługi Automation, zobacz Cennik usługi Automation.

Rozwiązanie

Jeśli chcesz użyć ponad 500 minut przetwarzania miesięcznie, zmień subskrypcję z warstwy Bezpłatna na warstwę Podstawowa:

  1. Zaloguj się do subskrypcji platformy Azure.
  2. Wybierz konto usługi Automation do uaktualnienia.
  3. Wybierz pozycję Ustawienia, a następnie wybierz pozycję Cennik.
  4. Wybierz pozycję Włącz na dole strony, aby uaktualnić konto do warstwy Podstawowa.

Scenariusz: strumień wyjściowy elementu Runbook większy niż 1 MB

Problem

Element Runbook uruchomiony w piaskownicy platformy Azure kończy się niepowodzeniem z powodu następującego błędu:

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

Przyczyna

Ten błąd występuje, ponieważ element Runbook próbował zapisać zbyt wiele danych wyjątku do strumienia wyjściowego.

Rozwiązanie

Istnieje limit 1 MB dla strumienia wyjściowego zadania. Upewnij się, że element Runbook otacza wywołania pliku wykonywalnego lub podrzędnego przetwarzania przy użyciu elementów try i catch bloków. Jeśli operacje zgłaszają wyjątek, należy napisać komunikat z wyjątku do zmiennej automatyzacji. Ta technika uniemożliwia zapisanie komunikatu w strumieniu wyjściowym zadania. W przypadku wykonanych zadań hybrydowego procesu roboczego elementu Runbook strumień wyjściowy obcięty do 1 MB jest wyświetlany bez komunikatu o błędzie.

Scenariusz: trzy razy podjęto próbę uruchomienia zadania elementu runbook, ale za każdym razem zakończyło się to niepowodzeniem

Problem

Element Runbook kończy się niepowodzeniem z powodu następującego błędu:

The job was tried three times but it failed

Przyczyna

Ten błąd występuje z jednej z następujących przyczyn:

  • Limit pamięci. Zadanie może zakończyć się niepowodzeniem, jeśli używa ponad 400 MB pamięci. Udokumentowane limity pamięci przydzielonej do piaskownicy znajdują się w temacie Limity usługi Automation.

  • Gniazda sieciowe. Piaskownice platformy Azure są ograniczone do 1000 współbieżnych gniazd sieciowych. Aby uzyskać więcej informacji, zobacz Limity usługi Automation.

  • Niezgodny moduł. Zależności modułów mogą nie być poprawne. W takim przypadku element Runbook zwykle zwraca Command not found komunikat lub Cannot bind parameter .

  • Brak uwierzytelniania w usłudze Active Directory dla piaskownicy. Element Runbook próbował wywołać plik wykonywalny lub podproces uruchamiany w piaskownicy platformy Azure. Konfigurowanie elementów Runbook do uwierzytelniania przy użyciu identyfikatora Entra firmy Microsoft przy użyciu biblioteki ADAL (Azure Active Directory Authentication Library) nie jest obsługiwane.

Rozwiązanie

  • Limit pamięci, gniazda sieciowe. Sugerowane sposoby pracy w ramach limitów pamięci to podzielenie obciążenia między wiele elementów Runbook, przetwarzanie mniejszej ilości danych w pamięci, unikanie zapisywania niepotrzebnych danych wyjściowych z elementów Runbook i rozważ, ile punktów kontrolnych jest zapisywanych w elementach Runbook przepływu pracy programu PowerShell. Użyj metody clear, takiej jak $myVar.clear, aby wyczyścić zmienne i użyć [GC]::Collect do natychmiastowego uruchomienia odzyskiwania pamięci. Te akcje zmniejszają ilość pamięci elementu Runbook podczas wykonywania.

  • Niezgodny moduł. Zaktualizuj moduły platformy Azure, wykonując kroki opisane w temacie Jak zaktualizować moduły usługi Azure PowerShell w usłudze Azure Automation.

  • Brak uwierzytelniania w usłudze Active Directory dla piaskownicy. Podczas uwierzytelniania w usłudze Microsoft Entra ID za pomocą elementu Runbook upewnij się, że moduł usługi Azure AD jest dostępny na koncie usługi Automation. Pamiętaj, aby przyznać kontu Uruchom jako niezbędne uprawnienia do wykonywania zadań automatyzowanych przez element runbook.

    Jeśli element Runbook nie może wywołać pliku wykonywalnego lub podrzędnego przetwarzania uruchomionego w piaskownicy platformy Azure, użyj elementu Runbook w hybrydowym procesie roboczym elementu Runbook. Hybrydowe procesy robocze nie są ograniczane przez limity pamięci i sieci obowiązujące piaskownice platformy Azure.

Scenariusz: zadanie programu PowerShell kończy się niepowodzeniem z komunikatem o błędzie "Nie można wywołać metody"

Problem

Podczas uruchamiania zadania programu PowerShell w elemencie Runbook uruchomionym na platformie Azure jest wyświetlany następujący komunikat o błędzie:

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

Przyczyna

Ten błąd może wskazywać, że elementy Runbook uruchamiane w piaskownicy platformy Azure nie mogą działać w trybie pełnego języka.

Rozwiązanie

Istnieją dwa sposoby rozwiązania tego błędu:

Aby dowiedzieć się więcej o tym zachowaniu i innych zachowaniach elementów Runbook usługi Azure Automation, zobacz Wykonywanie elementu Runbook w usłudze Azure Automation.

Scenariusz: Długotrwały element Runbook nie może zostać ukończony

Problem

Element Runbook jest wyświetlany w stanie Zatrzymano po uruchomieniu przez trzy godziny. Ten błąd może również zostać wyświetlony:

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

To zachowanie jest projektowane w piaskownicach platformy Azure ze względu na sprawiedliwe monitorowanie procesów w usłudze Azure Automation. Jeśli proces jest wykonywany dłużej niż trzy godziny, program Fair Share automatycznie zatrzymuje element Runbook. Stan elementu Runbook, który przekracza limit czasu odpowiedniego udostępniania, różni się od typu elementu Runbook. Elementy Runbook programu PowerShell i języka Python są ustawione na stan Zatrzymano. Elementy Runbook przepływu pracy programu PowerShell mają wartość Niepowodzenie.

Przyczyna

Element Runbook został uruchomiony przez trzygodzinny limit dozwolony przez sprawiedliwy udział w piaskownicy platformy Azure.

Rozwiązanie

Jednym z zalecanych rozwiązań jest uruchomienie elementu Runbook w hybrydowym procesie roboczym elementu Runbook. Hybrydowe procesy robocze nie są ograniczone przez trzygodzinny limit elementów Runbook sprawiedliwego udostępniania, który mają piaskownice platformy Azure. Elementy Runbook uruchamiane w hybrydowych procesach roboczych elementów Runbook powinny być opracowywane w celu obsługi zachowań ponownego uruchamiania, jeśli występują nieoczekiwane problemy z infrastrukturą lokalną.

Innym rozwiązaniem jest zoptymalizowanie elementu Runbook przez utworzenie podrzędnych elementów Runbook. Jeśli element Runbook przechodzi przez tę samą funkcję w kilku zasobach, na przykład w operacji bazy danych w kilku bazach danych, możesz przenieść funkcję do podrzędnego elementu Runbook. Każdy podrzędny element Runbook jest wykonywany równolegle w osobnym procesie. To zachowanie zmniejsza całkowity czas ukończenia nadrzędnego elementu Runbook.

Polecenia cmdlet programu PowerShell, które umożliwiają podrzędny scenariusz elementu Runbook, to:

  • Start-AzAutomationRunbook. To polecenie cmdlet pozwala uruchomić element runbook i przekazać do niego parametry.
  • Get-AzAutomationJob. Jeśli istnieją operacje, które należy wykonać po zakończeniu podrzędnego elementu Runbook, to polecenie cmdlet umożliwia sprawdzenie stanu zadania dla każdego elementu podrzędnego.

Scenariusz: błąd w strumieniach zadań dotyczących metody get_SerializationSettings

Problem

W strumieniach zadań dla elementu Runbook zostanie wyświetlony następujący błąd:

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

Przyczyna

Ten błąd jest prawdopodobnie spowodowany użyciem niekompletnej migracji z modułów AzureRM do modułów Az w elemecie Runbook. Taka sytuacja może spowodować uruchomienie zadania elementu Runbook przez usługę Azure Automation przy użyciu tylko modułów AzureRM, a następnie uruchomienie innego zadania przy użyciu tylko modułów Az, co prowadzi do awarii piaskownicy.

Rozwiązanie

Nie zalecamy używania poleceń cmdlet Az i AzureRM w tym samym elemecie Runbook. Aby dowiedzieć się więcej o prawidłowym użyciu modułów, zobacz Migrowanie do modułów Az.

Scenariusz: odmowa dostępu podczas korzystania z piaskownicy platformy Azure dla elementu Runbook lub aplikacji

Problem

Gdy element Runbook lub aplikacja próbuje uruchomić w piaskownicy platformy Azure, środowisko odmawia dostępu.

Przyczyna

Ten problem może wystąpić, ponieważ piaskownice platformy Azure uniemożliwiają dostęp do wszystkich serwerów COM poza procesem. Na przykład aplikacja w trybie piaskownicy lub element Runbook nie może wywołać instrumentacji zarządzania Windows (WMI) ani do usługi Instalatora Windows (msiserver.exe).

Rozwiązanie

Aby uzyskać szczegółowe informacje na temat korzystania z piaskownic platformy Azure, zobacz Środowisko wykonywania elementu Runbook.

Scenariusz: nieprawidłowy kod stanu Zabronione w przypadku korzystania z usługi Key Vault wewnątrz elementu Runbook

Problem

Podczas próby uzyskania dostępu do usługi Azure Key Vault za pomocą elementu Runbook usługi Azure Automation wystąpi następujący błąd:

Operation returned an invalid status code 'Forbidden'

Przyczyna

Możliwe przyczyny tego problemu to:

  • Nie używasz konta Uruchom jako.
  • Niewystarczające uprawnienia.

Rozwiązanie

Nieużywaj konta Uruchom jako

Postępuj zgodnie z krokiem 5. Dodaj uwierzytelnianie, aby zarządzać zasobami platformy Azure, aby upewnić się, że używasz konta Uruchom jako do uzyskiwania dostępu do usługi Key Vault.

Niewystarczające uprawnienia

Dodaj uprawnienia do usługi Key Vault, aby upewnić się, że twoje konto Uruchom jako ma wystarczające uprawnienia dostępu do usługi Key Vault.

Scenariusz: element Runbook kończy się niepowodzeniem z powodu błędu „Przekroczono długość parametru”

Problem

Twój element Runbook używa parametrów i kończy się niepowodzeniem z powodu następującego błędu:

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.

Przyczyna

Istnieje limit całkowitej długości znaków wszystkich parametrów, które można udostępnić w językach Python 2.7, Python 3.8 i PowerShell 7.1. Całkowita długość wszystkich nazw parametrów i wartości parametrów nie może przekraczać 30 000 znaków.

Rozwiązanie

Aby rozwiązać ten problem, możesz użyć zmiennych usługi Azure Automation, aby przekazać wartości do elementu Runbook. Alternatywnie można zmniejszyć liczbę znaków w nazwach parametrów i wartościach parametrów, aby upewnić się, że całkowita długość nie przekracza 30 000 znaków.

Następne kroki

Jeśli w tym miejscu nie widzisz problemu lub nie możesz rozwiązać problemu, spróbuj wykonać jedną z następujących kanałów, aby uzyskać pomoc techniczną:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem forów platformy Azure.
  • Połączenie za pomocą @AzureSupport oficjalne konto platformy Microsoft Azure w celu poprawy jakości obsługi klienta. Pomoc techniczna platformy Azure łączy Cię ze społecznością platformy Azure, aby uzyskać odpowiedzi, pomoc techniczną i ekspertów.
  • Jeśli potrzebujesz dodatkowej pomocy, możesz zgłosić zdarzenie pomoc techniczna platformy Azure. Przejdź do witryny pomoc techniczna platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną.