Get-AutomationPSCredential периодически дает сбой в службе автоматизации Azure

Время от времени мы обнаруживаем, что модуль Runbook автоматизации Azure выходит из строя со следующей ошибкой:

Get-AutomationPSCredential : The term 'Get-AutomationPSCredential' is not recognized as the name of a cmdlet, function, 
script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is 
correct and try again.
At line:1 char:9
+ $cred = Get-AutomationPSCredential -Name SqlJobRunner
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Get-AutomationPSCredential:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Различные наши модули Runbook выдают эту ошибку, по-видимому, на random.

Get-AutomationPSCredential - это модуль, предоставляемый Azure. Это не наш код, это код Microsoft.

И иногда кажется, что он просто «уходит».

Так что здесь происходит? Инфраструктура автоматизации Azure перезагружает или обновляет модули в неподходящее время для нашей работы? У меня создалось впечатление, что после планирования модуля Runbook зависимые модули «привязываются» к модулю Runbook, поэтому они будут там, когда это необходимо.

Почему это происходит и что? лучшая защита от сбоев?

0
задан 24 March 2017 в 15:22
2 ответа

Мне позвонили из службы поддержки Microsoft Azure с основной причиной.

Служба автоматизации Azure в моем регионе (восточная часть США) работает на PowerShell 5.0. Они сказали, что в 5.0 есть проблема в том, что модули загружаются асинхронно. Поэтому нет гарантии, что межмодульные зависимости будут доступны.

Они сказали мне, что дефект будет исправлен в августе, когда они выпустят PowerShell 5.1 для восточного региона США.

Они предложили два решения:

  1. Выполнить Get- AutomationPSCredential в цикле try / catch, спящий в течение 30 секунд между повторными попытками.
  2. Используйте гибридного рабочего, чтобы передать работу виртуальной машине, на которой установлен PowerShell 5.1.

Другим средством защиты может быть импорт необходимого модуля, где я нужно это. Сложность при этом заключается в том, что рассматриваемая функция Get-AutomationPSCredential исходит из другой сборки при локальной разработке, чем при выполнении в контексте автоматизации. При локальной разработке с использованием набора средств автоматизации разработки Azure команда находится в сборке AzureAutomationAuthoringToolkit . В Azure это Orchestrator.AssetManagement.Cmdlets .

Я просто попробую следующее: Импорт-модуль Orchestrator.AssetManagement.Cmdlets -ErrorAction SilentlyContinue

При выполнении в среде ISE функция всегда будет там, и этот Импорт-модуль завершится с ошибкой.

1
ответ дан 4 December 2019 в 16:19

Согласно вашему описанию, мы должны проверить, есть ли у модуля импорт. Если нет, то необходимо его импортировать.

Для проверки можно воспользоваться порталом:

Учетная запись автоматизации-> модули->Orchestrator.AssetManagement.Cmdlets: enter image description here

Если мы его не импортируем, надо использовать портал для импорта этого модуля:

enter image description here

enter image description here

0
ответ дан 4 December 2019 в 16:19

Теги

Похожие вопросы