Автоматизация Runbook Azure - ошибка Invoke-AzureRmVMRunCommand - PullRequest
0 голосов
/ 14 октября 2019

У меня есть книга выполнения Azure, которая выполняется по расписанию. Он находится в powershell, и этот runbook запускает виртуальную машину и выполняет сценарий на запущенной виртуальной машине. Как я этого добиваюсь:

1) Сохраните сценарий для запуска на виртуальной машине в учетной записи хранения. 2) Выполните runbook powershell 3) Runbook Powershell использует команду wget для копирования сценария из шага 1 4) Invoke-AzureRmVMRunCommandв командах PowerShell для автоматизации Azure, как показано ниже

wget "https://utilitystorageaccnt.blob.core.windows.net/utilitycontainer/token" -outfile ((Get-Location).path + "\Reporting Copy.ps1") -UseBasicParsing

Invoke-AzureRmVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VmName -CommandId 'RunPowerShellScript' -ScriptPath ((Get-Location).path + '\Reporting Copy.ps1') -ErrorVariable result

Обратите внимание, что две вышеупомянутые команды содержатся в сценарии Runbook PowerShell, а не в самом сценарии, который выполняется на виртуальной машине.

Облицовкадве проблемы

1) Когда этот сценарий Reporting Copy.ps1 работает автономно на виртуальной машине, он работает правильно и не имеет проблем. Когда он запускается с использованием Runbook, я получаю эти ошибки в файле журнала на целевой VM.

"New-AzStorageContext: термин" New-AzStorageContext "не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, еслипуть был включен, проверьте правильность пути и повторите попытку. "

2) Даже после возникновения этой ошибки она не завершается и работает в циклах. Этот скрипт выполняет операцию копирования и продолжает цикл до тех пор, пока все копирование не будет завершено. Я могу обработать код для завершения, но я хотел бы знать, как принудительно завершить runbook. Я попытался остановить виртуальную машину даже на час, и она возобновила операцию копирования. Состояние Runbook в Azure отображается как выполненное. Есть два процесса Python, которые отображаются в проводнике, и их прерывание также не работает.

Любая помощь или подсказка приветствуется.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Проблема была в том, что я не установил модуль AZ для всех пользователей, подобных этому.

Установочный модуль -Name Az -AllowClobber -Scope AllUsers

Вместо этого я использовал

Установочный модуль -Name Az -AllowClobber -Scope CurrentUser

и поскольку автоматизация выполняется на другом пользователе, проблема возникла. Спасибо за вашу помощь.

0 голосов
/ 14 октября 2019

Похоже, вы не импортировали модуль Az PowerShell в нашу учетную запись автоматизации.

Пожалуйста, следуйте этому руководству: Поддержка модуля Az в Azure Automation

Попробуйте использоватьтолько модуль Az, а не AzureRM

...