понедельник, 8 апреля 2019 г.

AzureRM 5.7.0, ошибка при создании Azure Web App: Method not found


Столкнулся с ошибкой при создании нового Azure Web App с использованием AzureRM 5.7.0:
New-AzureRmWebApp : Method not found: 'System.String Microsoft.Azure.Management.WebSites.Models.Site.get_ResourceGroup()'.
Поиски решения показали, что я не первый, кто столкнулся с такой проблемой, но, к сожалению, рабочее решение никто не предложил. Можно было-бы обновить модуль AzureRM на более свежий, но не в моей ситуации. Поэтому пришлось найти обходное решение.



Важно - ошибка возникала только при запуске скрипта из TFS. Если этот же скрипт запустить на агенте локально, он отрабатывал корректно. Отличие в том, что TFS импортирует модуль с параметром -Global:

##[command]Import-Module -Name C:\Program Files\WindowsPowerShell\Modules\AzureRM\5.7.0\AzureRM.psd1 -Global

Если выполнить импорт AzureRM руками без параметра -Global, скрипт отрабатывает корректно. Но иначе получаем ошибку:

2019-04-08T10:47:14.5500155Z ##[error]Method not found: 'System.String Microsoft.Azure.Management.WebSites.Models.Site.get_ResourceGroup()'.

Решение нашлось довольно странное, но в моём случае рабочее.

1. Открываем в блокноте файл модуля AzureRM:

notepad "C:\Program Files\WindowsPowerShell\Modules\AzureRM\5.7.0\AzureRM.psm1"

2. Выносим три модуля в самый верх списка импорта, заодно убираем для них параметр "Global":

...
$PSDefaultParameterValues.Clear()
Set-StrictMode -Version Latest

Import-Module AzureRM.Websites -RequiredVersion 4.2.2 
Import-Module AzureRM.Profile -RequiredVersion 5.8.3
Import-Module AzureRM.Resources -RequiredVersion 5.5.2 
Import-Module Azure.Storage -RequiredVersion 4.2.1 -Global
Import-Module AzureRM.AnalysisServices -RequiredVersion 0.6.6 -Global
...

После этого задачи магическим образом начинают работать корректно. Просто убрать параметр Global не меняя последовательность импорта недостаточно, так как в файлах модулей может тоже находиться инструкция Import-Module.

Понятно, что это не решение проблемы, но для моего случая этот "костыль" оказался вполне приемлемым. 

Комментариев нет:

Отправить комментарий