Веб-приложение публикации Azure с помощью диспетчера ресурсов в Powershell - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь опубликовать пакет веб-приложений в службе приложений в Azure. Мне нужно написать скрипт Powershell для запуска из Cloud Shell, чтобы опубликовать пакет. Я написал следующий код

Import-AzurePublishSettingsFile - $WebApp.PublishProfilePath
Publish-AzureWebsiteProject -Package $WebApp.ZipPath -Name $WebApp.WebAppName

Этот код работает на моей локальной машине, но не в Cloud Shell, где я получаю следующие ошибки:

Import-AzurePublishSettingsFile : The term 'Import-AzurePublishSettingsFile' 
is not recognized as the name of a cmdlet, function, script file, or 
operable program.

Publish-AzureWebsiteProject : The term 'Publish-AzureWebsiteProject' is not 
recognized as the name of a cmdlet, function, script file, or operable 
program.

Я полагаю, что эти ошибки вызваны тем, что эти командлеты происходят из старого Classic Manager, который недоступен в Cloud Shell.

В основном мне нужно опубликовать пакет веб-приложения из облачной оболочки со скриптом . Как я могу этого достичь? У меня есть другие варианты?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Исходя из ссылки на документацию, предложенной Hannel, я наконец решил, вызвав REST API с помощью Powershell . С Azure CLI намного проще, но у меня есть более сложный сценарий, уже написанный с Powershell.

Окончательный код такой:

# Getting credentials
$creds = Invoke-AzureRmResourceAction -ResourceGroupName $resourceGroupName `
    -ResourceType Microsoft.Web/sites/config `
    -ResourceName "$($WebApp.WebAppName)/publishingcredentials" `
    -Action list `
    -ApiVersion 2015-08-01 `
    -Force

$username = $creds.Properties.PublishingUserName
$password = $creds.Properties.PublishingPassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))

# Deploy Web App
Invoke-RestMethod -Uri "https://$($WebApp.WebAppName).scm.azurewebsites.net/api/zipdeploy" `
    -Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} `
    -Method POST `
    -InFile $WebApp.ZipPath `
    -ContentType "multipart/form-data"  `
    -UseBasicParsing `
    -ErrorAction Stop | Out-Null
0 голосов
/ 09 ноября 2018

Следующие шаги и команды предназначены для развертывания веб-сайта ASM (classic).

Может ли Shell иметь только модули ARM и не иметь модулей с такой командой.

Проверьте ссылку ниже, чтобы убедиться, что это работает для вас.

https://docs.microsoft.com/en-us/azure/app-service/app-service-deploy-zip

Надеюсь, это поможет.

...