Устранение неполадок с последовательностями runbook
В этой статье описываются возможные проблемы с последовательностями runbook и способы их устранения. Общие сведения см. в статье Выполнение последовательности runbook в службе автоматизации Azure.
Больше не удается использовать командлеты из импортированных модулей, не относящихся к умолчанию, в графических модулях Runbook PowerShell
Проблема
При импорте модуля PowerShell вы не сможете использовать его командлеты в графических модулях Runbook PowerShell.
Причина
Чтобы повысить уровень безопасности модулей Runbook PowerShell, служба больше не обрабатывает файл манифеста модуля для экспорта командлетов и функций. Это означает, что их нельзя использовать при создании графических модулей Runbook PowerShell.
Разрешение
Нет влияния на выполнение существующих модулей Runbook. Для новых модулей Runbook, не использующих модули PowerShell по умолчанию, рекомендуется использовать текстовые модули Runbook вместо графических модулей Runbook PowerShell для преодоления этой проблемы. Вы можете использовать расширение служба автоматизации Azure для VScode для разработки и редактирования модулей Runbook PowerShell, которое использует GitHub Copilot для упрощения разработки модуля Runbook.
Ошибка Start-AzAutomationRunbook с сообщением об ошибке RunbookName не соответствует ожидаемому шаблону.
Проблема
При запуске Start-AzAutomationRunbook
определенных модулей Runbook:
start-azautomationRunbook -Name "Test_2" -AutomationAccountName "AutomationParent" -ResourceGroupName "AutomationAccount"
Ошибка завершается со следующей ошибкой:
Start-AzAutomationRunbook: "runbookname" does not match expected pattern '^[a-zA-Z]*-*[a-zA-Z0-9]*$'
Причина
Код, представленный в версии 1.9.0 модуля Az.Automation, проверяет имена модулей Runbook для запуска и неправильно флагов runbook с несколькими символами "-" или символом "_" в имени как недопустимое.
Обходное решение
Рекомендуется вернуться к версии 1.8.0 модуля.
Разрешение
В настоящее время мы работаем над развертыванием исправления для решения этой проблемы.
Диагностика проблем с runbook
Для диагностирования проблем в случае ошибок во время выполнения runbook в службе автоматизации Azure можно выполнить следующие действия.
Убедитесь, что скрипт runbook успешно выполнен на локальном компьютере.
Справочные сведения по языку и обучающие модули см. в документации по PowerShell или Python. Локальное выполнение скрипта позволяет обнаружить и устранить распространенные ошибки, например:
- отсутствующие модули;
- синтаксические ошибки;
- логические ошибки.
Изучите потоки ошибок в runbook.
Просмотрите конкретные сообщения об ошибках в этих потоках и сопоставьте их с ошибками, описанными в этой статье.
Убедитесь, что узлы и рабочая область службы автоматизации содержат необходимые модули.
Если runbook импортирует все модули, убедитесь, что они доступны для учетной записи службы автоматизации, выполнив действия, описанные в разделе Импорт модулей. Обновите модули PowerShell до последней версии, выполнив инструкции в статье Обновление модулей Azure PowerShell в службе автоматизации Azure. Дополнительные сведения об устранении неполадок см. в разделе об устранении неполадок в модулях.
Если выполнение runbook приостановлено или завершилось неожиданным сбоем, выполните следующие действия.
- Продлите веб-перехватчик, если вы пытаетесь использовать для запуска runbook веб-перехватчик с истекшим сроком действия.
- Проверьте состояния заданий, чтобы определить текущие состояния runbook и возможные причины проблемы.
- Добавьте в последовательность runbook дополнительные выходные данные, чтобы определить, что происходит перед приостановкой ее выполнения.
- Обработайте исключения, вызываемые заданием.
Выполните этот шаг, если задание runbook или среда с гибридной рабочей ролью Runbook не отвечает.
Если runbook выполняется в гибридной рабочей роли, а не в службе автоматизации Azure, возможно, вам потребуется устранить неполадки с самой гибридной рабочей ролью.
Сценарий. Не удается создать новое задание автоматизации в регионе Западной Европы
Проблема
При создании новых заданий службы автоматизации вы можете столкнуться с задержкой или сбоем создания задания. Запланированные задания автоматически будут сняты, а задания, выполненные на портале, могут быть сняты, если вы увидите сбой.
Причина
Это связано с высокой нагрузкой от модулей Runbook клиентов с помощью службы автоматизации в регионе Западной Европы.
Разрешение
Выполните следующее действие, если это возможно в соответствии с вашим требованием и средой, чтобы снизить вероятность сбоя:
- Если вы используете начало часа для создания задания (в 12:00, 1:00, 2:00 и т. д.), обычно в час или полчаса, рекомендуется переместить время начала задания в пять минут до или после часа/полчаса. Это связано с тем, что большинство клиентов используют начало часа для выполнения задания, что резко увеличивает нагрузку на службу, в то время как загрузка относительно низка в других слотах времени.
Сценарий: Runbook завершается ошибкой "это. Client.SubscriptionId не может иметь значение NULL. Сообщение об ошибке
Проблема
Модуль Runbook с помощью управляемого удостоверения Connect-AzAccount -Identity, который пытается управлять объектами Azure, не работает успешно и регистрирует следующую ошибку: 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
Причина
Это может произойти, если управляемое удостоверение (или другая учетная запись, используемая в runbook), не была предоставлена никаких разрешений на доступ к подписке.
Разрешение
Предоставьте управляемому удостоверению (или другой учетной записи, используемой в runbook) соответствующую роль в подписке. Подробнее
Сценарий. Доступ заблокирован для службы хранилища Azure, Azure Key Vault или Azure SQL
В этом сценарии в качестве примера используется служба хранилища Azure, однако он также применим кAzure Key Vault и Azure SQL.
Проблема
Попытка получить доступ к службе хранилища Azure из модуля runbook приводит к ошибке с сообщением, похожим на следующее: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.
Причина
Для службы хранилища Azure включен брандмауэр Azure.
Разрешение
Включение Брандмауэра Azure для службы хранилища Azure, Azure Key Vault или Azure SQL блокирует для этих служб доступ из модулей runbook Службы автоматизации Azure. Доступ будет заблокирован даже в том случае, если задано исключение брандмауэра, разрешающее доверенные службы Майкрософт, так как служба автоматизации не входит в список таких служб. С включенным брандмауэром доступ возможен только с помощью гибридной рабочей роли Runbook и конечной точки службы для виртуальной сети.
Сценарий. Выполнение последовательности runbook прекратилось с ошибкой "Нет разрешения" или "Запрещено 403"
Проблема
Выполнение последовательности runbook прекратилось с ошибкой "Нет разрешения", "Запрещено 403" или эквивалентной.
Причина
Учетные записи запуска от имени могут не иметь таких же разрешений для ресурсов Azure, как ваша текущая учетная запись службы автоматизации.
Разрешение
Убедитесь, что у вашей учетной записи запуска от имени есть разрешения на доступ к любым ресурсам, используемым в скрипте.
Сценарий: не удалось войти в учетную запись Azure
Проблема
При работе с командлетом Connect-AzAccount
происходит одна из следующих ошибок.
Unknown_user_type: Unknown User Type
No certificate was found in the certificate store with thumbprint
Причина
Эта ошибка происходит, если указано недопустимое имя ресурса учетных данных. Ошибка также может произойти, если имя пользователя и пароль, которые вы ввели для настройки ресурса учетных данных службы автоматизации, указаны неправильно.
Разрешение
Чтобы определить причину ошибки, выполните следующие действия:
Убедитесь, что вы не использовали специальные символы. В имени ресурса учетных данных службы автоматизации Azure, используемом для подключения к Azure, запрещается вводить такие специальные символы, как
\@
.Убедитесь, что вы можете использовать имя пользователя и пароль, которые хранятся в учетных данных службы автоматизации Azure в редакторе локальной интегрированной среды сценариев PowerShell. В интегрированной среде сценариев PowerShell запустите следующий командлет.
$Cred = Get-Credential #Using Azure Service Management Add-AzureAccount -Credential $Cred #Using Azure Resource Manager Connect-AzAccount -Credential $Cred
Если произошел локальный сбой проверки подлинности, значит учетные данные Microsoft Entra настроены неправильно. Сведения о правильной настройке учетной записи Microsoft Entra см. в статье Проверка подлинности в Azure с использованием Microsoft Entra ID.
Если ошибка, скорее всего, временная, попробуйте добавить логику повторных попыток в процедуру проверки подлинности, чтобы сделать ее более надежной.
$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 } }
Сценарий. Выполнение входа с помощью Login-AzureRMAccount
Проблема
При запуске модуля runbook отображается следующее сообщение об ошибке:
Run Login-AzureRMAccount to login.
Причина
Эта ошибка может произойти, если вы не используете учетную запись запуска от имени или срок ее действия истек.
Эта ошибка происходит по двум основным причинам.
- Используются разные версии модуля AzureRM или Az.
- Вы пытаетесь получить доступ к ресурсам в отдельной подписке.
Разрешение
Если эта ошибка происходит после обновления одного модуля AzureRM или Az, обновите все модули до одной версии.
Если вы пытаетесь получить доступ к ресурсам в другой подписке, выполните следующие действия, чтобы настроить разрешения.
Перейдите к учетной записи запуска от имени службы автоматизации и скопируйте идентификатор приложения и отпечаток.
Перейдите в средство управления доступом подписки, отличной от той, где размещена учетная запись службы автоматизации, и добавьте новое назначение ролей.
Добавьте идентификатор приложения, полученный ранее. Выберите разрешения на уровне Участник.
Скопируйте имя подписки.
Теперь можно использовать следующий код runbook для проверки разрешений учетной записи службы автоматизации в другой подписке. Замените
<CertificateThumbprint>
значением, скопированным на шаге 1. Замените"<SubscriptionName>"
значением, скопированным на шаге 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 }
Сценарий. Не удается найти подписку Azure
Проблема
При работе с командлетом Select-AzureSubscription
, Select-AzureRMSubscription
или Select-AzSubscription
произошла следующая ошибка:
The subscription named <subscription name> cannot be found.
Ошибка
Эта ошибка может произойти, если:
- имя подписки указано неправильно;
- Пользователь Microsoft Entra, который пытается получить сведения о подписке, не настроен в качестве администратора подписки.
- Командлет недоступен.
- Произошло переключение контекста.
Разрешение
Сведения о переключении контекста см. в разделе "Переключение контекста" в служба автоматизации Azure.
Сценарий. Сбой последовательности runbook при работе с несколькими подписками
Проблема
При выполнении последовательностей runbook им не удается управлять ресурсами Azure.
Причина
При запуске модуля runbook используется неправильный контекст. Это может быть вызвано тем, что модуль runbook случайно пытается получить доступ к неверной подписке.
Могут возникнуть следующие ошибки:
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... +
или, как показано ниже.
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
Разрешение
Чтобы избежать случайной попытки доступа к неправильной подписке, см. раздел "Переключение контекста" в служба автоматизации Azure.
Сценарий: сбой аутентификации в Azure из-за включенной многофакторной проверки подлинности
Проблема
При проверке подлинности в Azure с помощью имени и пароля происходит следующая ошибка:
Add-AzureAccount: AADSTS50079: Strong authentication enrollment (proof-up) is required
Причина
Если у вас есть многофакторная проверка подлинности в учетной записи Azure, вы не можете использовать пользователя Microsoft Entra для проверки подлинности в Azure. Вместо этого используйте для проверки подлинности сертификат или субъект-службу.
Разрешение
Сведения об использовании субъекта-службы с командлетами диспетчера ресурсов Azure см. в статьях о создании субъекта-службы с помощью портала Azure и о проверке подлинности субъекта-службы в Azure Resource Manager.
Сценарий. Сбой runbook с сообщением об ошибке "Задача была отменена"
Проблема
В модуле Runbook возникает ошибка, аналогичная приведенной ниже:
Exception: A task was cancelled.
Причина
Это ошибка может быть вызвана использованием устаревших модулей Azure.
Разрешение
Эту ошибку можно устранить, обновив модули Azure до последней версии.
- В учетной записи службы автоматизации последовательно выберите Модули и Обновить модули Azure.
- Обновление занимает примерно 15 минут. После его завершения повторно запустите последовательность runbook, которая завершилась сбоем.
Дополнительные сведения об обновлении модулей см. в разделе Обновление модулей Azure в службе автоматизации Azure.
Сценарий. Термин не распознан как имя командлета, функции или скрипта
Проблема
В модуле Runbook возникает ошибка, аналогичная приведенной ниже:
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.
Причина
Эта ошибка может происходить по следующим причинам:
- Модуль, содержащий командлет, не импортирован в учетную запись службы автоматизации.
- Модуль, содержащий командлет, импортирован, но устарел.
Разрешение
Чтобы устранить эту ошибку, выполните одно из следующих действий.
- Если это модуль Azure, см. статью об обновлении модулей Azure PowerShell в учетной записи службы автоматизации Azure.
- Если это другой модуль, убедитесь, что он импортирован в учетную запись службы автоматизации.
Сценарий. Сбой командлета в runbook PowerShell PnP на служба автоматизации Azure
Проблема
Когда runbook записывает автоматически созданный PowerShell объект PnP в выходные данные службы автоматизации Azure напрямую, выходные данные командлета не могут передаваться потоком обратно в службу автоматизации.
Причина
Чаще всего эта проблема возникает, когда служба автоматизации Azure обрабатывает последовательности runbook, которые вызывают командлеты PowerShell PnP, например add-pnplistitem
, без перехвата возвращаемых объектов.
Разрешение
Измените скрипты, чтобы все возвращаемые значения присваивались переменным, а командлеты не предпринимали попытки записи целых объектов в стандартный поток вывода. Скрипт может перенаправить поток вывода в командлет, как показано ниже.
$null = add-pnplistitem
Если скрипт анализирует выходные данные командлета, он должен сохранять их в переменной и оперировать ею, а не просто передавать эти выходные данные потоком.
$SomeVariable = add-pnplistitem ....
if ($SomeVariable.someproperty -eq ....
Сценарий: не удается распознать командлет при выполнении модуля Runbook
Проблема
Выполнение задания Runbook завершилось ошибкой.
<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program.
Причина
Эта ошибка возникает, когда модулю PowerShell не удается найти командлет, который используется в runbook. Такое возможно, когда в учетной записи отсутствует модуль, содержащий командлет, когда возникает конфликт имен с именем runbook, а также когда командлет существует и в другом модуле, а службе автоматизации не удается разрешить имя.
Разрешение
Эту проблему можно устранить любым из следующих способов.
- Проверьте правильность ввода имени командлета.
- Убедитесь, что командлет имеется в учетной записи службы автоматизации, а конфликты отсутствуют. Чтобы проверить наличие командлета, откройте runbook в режиме редактирования и найдите требуемый командлет в библиотеке или выполните команду
Get-Command <CommandName>
. Убедившись в наличии командлета в учетной записи и отсутствии конфликта имен с другими командлетами или последовательностями runbook, добавьте его на холст. Убедитесь, что в runbook используется допустимый набор параметров. - Если обнаружен конфликт имен, а сам командлет доступен в двух разных модулях, эту проблему можно решить использованием полного имени командлета. Например, вы можете использовать значение
ModuleName\CmdletName
. - Если runbook выполняется локально в группе гибридных рабочих ролей, убедитесь, что на компьютере, где размещена гибридная рабочая роль, установлен соответствующий модуль или командлет.
Сценарий: неправильная ссылка на объект при вызове Add-AzAccount
Проблема
Эта ошибка происходит при работе с псевдонимом Add-AzAccount
для командлета Connect-AzAccount
.
Add-AzAccount : Object reference not set to an instance of an object
Причина
Эта ошибка может происходить, если runbook не выполняет нужных действий перед вызовом Add-AzAccount
для добавления учетной записи службы автоматизации. Примером одного из необходимых действий может служить вход с использованием учетной записи запуска от имени. Сведения о том, какие операции следует использовать в runbook, см. в статье Выполнение runbook в службе автоматизации Azure.
Сценарий. Ссылка на объект не задана для экземпляра объекта
Проблема
Если поток вывода содержит объект, при вызове дочерней последовательности runbook с параметром Wait
происходит следующая ошибка:
Object reference not set to an instance of an object
Причина
Если поток содержит объекты, Start-AzAutomationRunbook
неправильно обрабатывает поток вывода.
Разрешение
Реализуйте логику опроса и используйте для получения выходных данных командлет Get-AzAutomationJobOutput. Пример этой логики определяется здесь:
$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
Сценарий: сбой модуля Runbook из-за десериализованного объекта
Проблема
Выполнение модуля Runbook завершилось ошибкой.
Cannot bind parameter <ParameterName>.
Cannot convert the <ParameterType> value of type Deserialized <ParameterType> to type <ParameterType>.
Причина
Когда runbook является рабочим процессом PowerShell, он хранит сложные объекты в десериализированном формате, чтобы сохранить состояние модуля при приостановке рабочего процесса.
Разрешение
Эту проблему можно устранить любым из следующих способов.
- Если сложные объекты передаются от одного командлета к другому через конвейер, используйте в качестве оболочки для этих командлетов действие
InlineScript
. - Передайте только требуемое имя или значение сложного объекта, а не весь объект.
- Используйте модуль Runbook PowerShell, а не модуль Runbook рабочего процесса PowerShell.
Сценарий. Состояние "400 — недопустимый запрос" при вызове веб-перехватчика.
Проблема
При попытке вызова веб-перехватчика для runbook службы автоматизации Azure происходит следующая ошибка:
400 Bad Request : This webhook has expired or is disabled
Причина
Вызываемый веб-перехватчик отключен, или срок его действия истек.
Разрешение
Если веб-перехватчик отключен, его можно повторно включить на портале Azure. Если срок действия веб-перехватчика истек, его необходимо удалить, а затем создать заново. Если срок действия еще не истек, можно только обновить веб-перехватчик.
Сценарий. "429: слишком большая текущая частота запросов"
Проблема
При выполнении командлета Get-AzAutomationJobOutput
вы получаете следующее сообщение об ошибке:
429: The request rate is currently too large. Please try again
Причина
Эта ошибка может происходить при извлечении выходных данных задания из последовательности runbook с множеством подробных потоков.
Разрешение
Чтобы устранить эту ошибку, выполните одно из следующих действий.
- Измените модуль Runbook и уменьшите количество потоков заданий, которые он выдает.
- уменьшите количество потоков, полученных при выполнении командлета. Для этого можно задать значение параметра
Stream
для командлета Get-AzAutomationJobOutput, чтобы получить только потоки вывода.
Сценарий. Сбой задания Runbook из-за превышения выделенной квоты
Проблема
Выполнение задания Runbook завершилось ошибкой.
The quota for the monthly total job run time has been reached for this subscription
Причина
Эта ошибка возникает, когда время выполнения задания превышает квоту для учетной записи в 500 бесплатных минут. Эта квота применяется ко всем типам задач на выполнение заданий. К этим типам задач может относиться тестирование задания, запуск задания на портале Azure, выполнение задания с помощью веб-перехватчиков, а также планирование задания с помощью портала Azure или центра обработки данных. Дополнительные сведения см. на странице цен на службу автоматизации.
Разрешение
Если на обработку вам требуется более 500 минут в месяц, выберите для подписки уровень "Базовый" вместо уровня "Бесплатный".
- Вход в вашу подписку Azure.
- Выберите учетную запись службы автоматизации, которую вы хотите обновить.
- Выберите Параметры, а затем — Цены.
- В нижней части страницы нажмите кнопку Включить, чтобы обновить свою учетную запись до уровня "Базовый".
Сценарий: поток вывода runbook больше 1 МБ
Проблема
Работа модуля runbook в песочнице Azure завершилась следующей ошибкой:
The runbook job failed due to a job stream being larger than 1MB, this is the limit supported by an Azure Automation sandbox.
Причина
Данная ошибка возникла потому, что последовательность runbook попыталась записать слишком много данных об исключении в поток вывода.
Разрешение
Для потока вывода задания установлено ограничение на уровне 1 МБ. Убедитесь, что runbook включает вызовы в исполняемый файл или вложенный процесс с помощью блоков try
и catch
. Если операции приводят к исключению, код будет записывать сообщение из исключения в переменную службы автоматизации. Этот подход предотвращает запись сообщения в поток вывода задания. Для выполнения заданий гибридной рабочей роли Runbook поток вывода, усеченный до 1 МБ, отображается без сообщения об ошибке.
Сценарий. Предприняты три неудачные попытки запуска задания runbook
Проблема
Последовательность runbook завершается сбоем со следующей ошибкой:
The job was tried three times but it failed
Причина
Эта ошибка происходит из-за одной из следующих проблем.
Предельный объем памяти. Задание может завершиться ошибкой, если оно использует более 400 МБ памяти. Ограничения на выделяемый песочнице объем памяти описаны в разделе Ограничения службы автоматизации.
Сетевые сокеты. В песочницах Azure одновременно может выполняться не более 1000 сетевых сокетов. Дополнительные сведения см. в статье Ограничения службы автоматизации.
Несовместим модуль. Зависимости модуля могут быть неправильными. В этом случае runbook обычно возвращает сообщение
Command not found
илиCannot bind parameter
.Для песочницы отсутствует проверка подлинности в Active Directory. Последовательность runbook попыталась вызвать исполняемый файл или подпроцесс, который запущен в песочнице Azure. Настройка модулей Runbook для проверки подлинности с помощью идентификатора Microsoft Entra с помощью библиотеки проверки подлинности Azure Active Directory (ADAL) не поддерживается.
Разрешение
Ограничение памяти, сетевые сокеты. Чтобы избежать превышения предельного объема памяти, рекомендуется разделить рабочую нагрузку между несколькими последовательностями runbook, не обрабатывать слишком большой объем данных в памяти, не записывать ненужные выходные данные из последовательностей runbook и учитывать, сколько контрольных точек записывается в последовательности runbook рабочих процессов PowerShell. Чтобы очистить переменную и немедленно запустить сборку мусора, вы можете использовать методы
$myVar.clear
и[GC]::Collect
соответственно. Эти действия уменьшают объем памяти, занимаемой модулем runbook во время выполнения.Несовместим модуль. Обновите модули Azure, выполнив инструкции, приведенные в статье об обновлении модулей Azure PowerShell в учетной записи службы автоматизации Azure.
Для песочницы отсутствует проверка подлинности в Active Directory. При проверке подлинности в Microsoft Entra ID с помощью runbook убедитесь, что модуль Azure AD доступен в учетной записи службы автоматизации. Не забудьте предоставить учетной записи запуска от имени необходимые разрешения для выполнения задач, которые автоматизируются последовательностью runbook.
Если runbook не может вызвать исполняемый файл или подпроцесс, выполняющийся в песочнице Azure, используйте runbook с гибридной рабочей ролью Runbook. В гибридных рабочих ролях нет таких ограничений памяти и сетевых ресурсов, как в песочницах Azure.
Сценарий. Сбой задания PowerShell с сообщением об ошибке "Не удается вызвать метод"
Проблема
При запуске задания PowerShell в последовательности runbook, запущенной в Azure, отображается следующее сообщение об ошибке:
Exception was thrown - Cannot invoke method. Method invocation is supported only on core types in this language mode.
Причина
Эта ошибка может означать, что последовательности runbook, выполняемые в песочнице Azure, не могут выполняться в полноязыковом режиме.
Разрешение
Эту проблему можно решить двумя способами:
- Вместо Start-Job используйте Start-AzAutomationRunbook для запуска runbook.
- Попытайтесь запустить runbook с использованием гибридной рабочей роли Runbook.
Дополнительные сведения об этом и других видах поведения последовательностей runbook службы автоматизации Azure см. в статье о выполнении runbook в службе автоматизации Azure.
Сценарий: выполнение последовательности runbook длится долго и не завершается
Проблема
После выполнения в течение трех часов последовательность runbook обозначается как остановленная. Возможно, отобразится следующее сообщение об ошибке:
The job was evicted and subsequently reached a Stopped state. The job cannot continue running.
Это предусмотренная реакция на событие в песочницах Azure, которая связана с мониторингом справедливого распределения процессов в службе автоматизации Azure. Если последовательность runbook выполняется дольше трех часов, служба справедливого распределения останавливает ее. Состояние последовательности runbook, для который превышено предельное время для справедливого распределения, зависит от типа runbook. Последовательности runbook PowerShell и Python переходят в состояние "Остановлено". Последовательности runbook рабочих процессов PowerShell переходят в состояние "Сбой".
Причина
Последовательность runbook выполнялся дольше трех часов (предельной продолжительности, заданной для песочницы Azure в рамках справедливого распределения).
Разрешение
Одно из рекомендуемых решений — запустить runbook в гибридной рабочей роли Runbook. Гибридные рабочие роли не ограничены тремя часами для справедливого распределения, как песочницы Azure. Последовательности runbook, выполняемые в гибридных рабочих ролях Runbook, следует разрабатывать с поддержкой перезапуска при возникновении непредвиденных проблем локальной инфраструктуры.
Еще одно решение — оптимизировать runbook с помощью дочерних последовательностей runbook. Если последовательность runbook циклически выполняет одну и ту же функцию для ряда ресурсов, например определенную операцию в нескольких базах данных, такую функцию можно переместить в дочернюю последовательность runbook. Каждая дочерняя последовательность runbook выполняется параллельно в отдельных процессах. Это уменьшает количество времени на завершение родительского модуля runbook.
Командлеты PowerShell для реализации дочерних runbook:
- Start-AzAutomationRunbook. Этот командлет позволяет запустить runbook и передать в него параметры.
- Get-AzAutomationJob. Если есть операции, которые нужно выполнить после выполнения дочерней последовательности runbook, этот командлет позволяет проверить состояние задания для каждой дочерней последовательности.
Сценарий. Ошибка в потоках заданий из-за метода get_SerializationSettings
Проблема
Для последовательности runbook в потоке задания происходит следующая ошибка:
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
Причина
Возможно, эта ошибка вызвана неполной миграцией из AzureRM в модули Az в последовательности runbook. Эта ситуация может привести к тому, что служба автоматизации Azure запустит задание runbook с использованием только модулей AzureRM, а затем запустит другое задание, используя только модули Az, что приводит к аварийному завершению работы песочницы.
Разрешение
Мы не рекомендуем использовать командлеты Az и AzureRM в одной последовательности runbook. Дополнительные сведения о правильном использовании модулей см. в разделе Миграция в модули Az.
Сценарий. Доступ запрещен при использовании песочницы Azure для runbook или приложения
Проблема
При попытке запуска runbook или приложения в песочнице Azure среда запрещает доступ.
Причина
Эта проблема может возникать, поскольку песочницы Azure запрещают доступ ко всем COM-серверам вне процессов. Например, изолированное приложение или последовательность runbook не может вызывать инструментарий управления Windows (WMI) или службу установщика Windows (msiserver.exe).
Разрешение
Дополнительные сведения об использовании изолированных программ Azure см. в разделе Среда выполнения runbook.
Сценарий. Недопустимый код состояния при использовании Key Vault внутри модуля Runbook
Проблема
При попытке получить доступ к Azure Key Vault с помощью последовательности runbook службы автоматизации Azure происходит следующая ошибка:
Operation returned an invalid status code 'Forbidden'
Причина
Возможны следующие причины этой проблемы.
- Не используется учетная запись запуска от имени.
- Недостаточно разрешений.
Разрешение
Не используется учетная запись запуска от имени
Выполните шаг 5 Добавление проверки подлинности для управления ресурсами Azure и убедитесь, что для доступа к Key Vault используется учетная запись запуска от имени.
Недостаточно разрешений
Добавьте разрешения для Key Vault, чтобы обеспечить учетной записи запуска от имени достаточные разрешения для доступа к Key Vault.
Сценарий: сбой Runbook из-за ошибки "Parameter length exceeded"
Проблема
Runbook использует параметры и завершается сбоем со следующей ошибкой:
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.
Причина
Существует ограничение на общую длину символов всех параметров, которые могут быть предоставлены в модулях Runbook Python 2.7, Python 3.8 и PowerShell 7.1. Общая длина всех имен параметров и значений параметров не должна превышать 30 000 символов.
Разрешение
Чтобы устранить эту проблему, можно использовать служба автоматизации Azure Переменные для передачи значений в Runbook. В качестве альтернативы можно уменьшить число символов в именах параметров и значениях параметров, чтобы общая длина не превышала 30 000 символов.
Рекомендуемые документы
- Выполнение модуля Runbook в службе автоматизации Azure
- Запуск модуля Runbook в службе автоматизации Azure
Следующие шаги
Если вы не нашли здесь свою проблему или вам не удалось ее решить, попробуйте использовать один из следующих каналов для получения дополнительной поддержки.
- Получите ответы специалистов Azure на форумах Azure.
- Подпишитесь на @AzureSupport, официальный канал Microsoft Azure для улучшения качества взаимодействия с клиентами. Служба поддержки Azure взаимодействует с сообществом Azure, предоставляя ответы, поддержку и советы экспертов.
- Если вам нужна дополнительная помощь, отправьте запрос в службу поддержки Azure. Перейдите на сайт поддержки Azure и выберите Получить поддержку.