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.
Nie można już używać poleceń cmdlet z importowanych modułów innych niż domyślne w graficznych elementach Runbook programu PowerShell
Problem
Podczas importowania modułu programu PowerShell nie będzie można używać jego poleceń cmdlet w graficznych elementach Runbook programu PowerShell.
Przyczyna
Aby poprawić stan zabezpieczeń elementów Runbook programu PowerShell, usługa nie przetwarza już pliku manifestu modułu w celu wyeksportowania poleceń cmdlet i funkcji. Oznacza to, że nie można ich używać podczas tworzenia graficznych elementów Runbook programu PowerShell.
Rozwiązanie
Nie ma wpływu na wykonywanie istniejących elementów Runbook. W przypadku nowych elementów Runbook korzystających z modułów programu PowerShell innych niż domyślne zalecamy używanie tekstowych elementów Runbook zamiast graficznych elementów Runbook programu PowerShell w celu rozwiązania tego problemu. Za pomocą rozszerzenia usługi Azure Automation dla programu VScode można tworzyć i edytować elementy Runbook programu PowerShell, które korzystają z narzędzia GitHub Copilot, aby uprościć środowisko tworzenia elementów Runbook.
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.
Rozwiązanie
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:
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
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.
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.
Jeśli element runbook jest wstrzymywany lub jego działanie nieoczekiwanie kończy się niepowodzeniem:
- Odnów element webhook, jeśli próbujesz użyć wygasłego elementu webhook, aby uruchomić element runbook.
- Sprawdź stany zadań, aby określić bieżące stany elementu runbook i niektóre możliwe przyczyny problemu.
- Dodaj dodatkowe dane wyjściowe do elementu runbook, aby zidentyfikować, co się dzieje przed wstrzymaniem elementu runbook.
- Obsługuj wyjątki zgłaszane przez zadanie.
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 używający tożsamości zarządzanej Connect-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
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, 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:
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.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
Jeśli uwierzytelnianie nie powiedzie się lokalnie, oznacza to, że poświadczenia usługi Microsoft Entra nie zostały prawidłowo skonfigurowane. Aby poprawnie skonfigurować konto Microsoft Entra, zobacz artykuł Uwierzytelnianie na platformie Azure za pomocą Microsoft Entra ID.
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 aktualizacji jednego modułu AzureRM lub modułu 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:
Przejdź do konta Uruchom jako usługi Automation i skopiuj identyfikator aplikacji i odcisk palca.
Przejdź do kontroli dostępu subskrypcji, w której konto usługi Automation nie jest hostowane, i dodaj nowe przypisanie roli.
Dodaj zebrany wcześniej identyfikator aplikacji. Wybierz pozycję Uprawnienia współautora .
Skopiuj nazwę subskrypcji.
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-AzureSubscription
cmdlet , Select-AzureRMSubscription
lub 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 do uwierzytelniania trzeba użyć certyfikatu lub jednostki usługi.
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:
- Na koncie usługi Automation wybierz pozycję Moduły, a następnie wybierz pozycję Aktualizuj moduły platformy Azure.
- 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:
- Aby uzyskać informacje na temat modułu platformy Azure i dowiedzieć się jak aktualizować swoje moduły na koncie usługi Automation, zobacz sekcję Jak zaktualizować moduły Azure PowerShell w usłudze Azure Automation.
- W przypadku modułu spoza platformy Azure upewnij się, że moduł został zaimportowany na konto usługi Automation.
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-pnplistitem
na 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, 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-AzAccount
programem , 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żna go ponownie włączyć za pośrednictwem witryny Azure Portal. Jeśli element webhook wygasł, należy go usunąć, a następnie utworzyć ponownie. Element webhook można odnowić 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:
- Zaloguj się do subskrypcji platformy Azure.
- Wybierz konto usługi Automation do uaktualnienia.
- Wybierz pozycję Ustawienia, a następnie wybierz pozycję Cennik.
- 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
Obowiązuje limit dla strumienia wyjściowego zadań wynoszący 1 MB. 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 zakodować komunikat z wyjątku w zmiennej usługi Automation. Ta technika uniemożliwia zapisanie komunikatu w strumieniu wyjściowym zadań. 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 lubCannot 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 działania zmniejszają zużycie pamięci przez element 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:
- Zamiast używać polecenia Start-Job, użyj polecenia Start-AzAutomationRunbook , aby uruchomić element Runbook.
- Spróbuj uruchomić element Runbook w hybrydowym procesie roboczym elementu Runbook.
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ływać 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.
Zalecane dokumenty
- Wykonywanie elementu runbook w usłudze Azure Automation
- Uruchamianie elementu runbook w usłudze Azure Automation
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łącz się z @AzureSupport oficjalnym kontem platformy Microsoft Azure, aby poprawić jakość 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ą.