У меня есть книга выполнения 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, которые отображаются в проводнике, и их прерывание также не работает.
Любая помощь или подсказка приветствуется.
Спасибо.