我正在尝试在Azure上的应用程序服务上发布Web应用程序包。 我需要创建一个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.
我猜这些错误是由于这些cmdlet来自旧的Classic Manager(在Cloud Shell中不可用)造成的。
基本上,我需要使用脚本从Cloud Shell发布 Web应用程序包。我该如何实现?我还有其他选择吗?
答案 0 :(得分:2)
您要遵循的步骤和命令是用于ASM(经典)网站部署的。
Shell是否只能具有ARM模块,而没有具有这些命令的模块。
检查下面的链接,看看是否适合您。
https://docs.microsoft.com/en-us/azure/app-service/app-service-deploy-zip
希望这会有所帮助。
答案 1 :(得分:2)
从Hannel建议的文档链接开始,我终于通过invoking REST API with 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