繁体   English   中英

如何使用 PowerShell 部署到 Azure 应用服务?

[英]How do I deploy to Azure App Service with PowerShell?

我环顾四周,使用 PowerShell 中 Azure 和 AzureRM commandlet 中的数千个命令,我仍然不确定如何执行此操作。

到目前为止我所做的工作:

  • 安装 Azure 和 AzureRM 模块并将它们导入脚本
  • 从 get-AzurePublishSettingsFile 命令生成“*.publishsettings”文件
  • 导入了“*.publishsettings”文件
  • 可以使用“Stop-AzureWebsite”和“Start-AzureWebsite”命令行开关访问网站

我需要做什么:

  • 创建新部署并将文件推送到应用服务站点。

注意:我没有 Visual Studio 项目和 .csproj 文件配置。 我只想获取文件夹的内容并将其推送到网站。

任何帮助都会很有用,因为文档在细节上非常糟糕,而且 PowerShell 中有数千个命令需要通过。

您可以查看此博客:使用Azure PowerShell将应用服务部署到部署插槽

Get-AzurePublishSettingsFile
Import-AzurePublishSettingsFile .\Your-Publish-Settings-credentials.publishsettings
Get-AzureSubscription
Select-AzureSubscription -SubscriptionName "The Subscription Name containing the slot"
Set-AzureSubscription -SubscriptionId "ID of subscription"

$WebAppName = "standard(staging)"
Get-AzureWebsite -Name $WebAppName
Publish-AzureWebsiteProject -Name $WebAppName -Package "C:\PowerShell\standard.zip" -Slot "staging"

不幸的是,接受的答案给了我以下错误:

Get-AzureWebSite:找不到请求的值“PremiumV2”

StackOverflow答案建议使用Get-AzureRmWebApp ,但这会带来一些身份验证方面的挑战。 经过一些搜索后,我发现下面的文章准确地解释了我需要的东西:一种在没有任何人工交互的情况下发布到Azure的方法。

请参阅下面脚本的简化版本。

#In the Azure portal go to (search for) "Azure Active Directory" -> 
#"Properties" -> Directory ID
$TenantId = "<Azure Active Directory Id>"

#In the Azure portal go to (search for) "Subscriptions" -> Subscription ID
$SubscriptionId = "<Azure Subscription Id>"

#In the Azure portal go to (search for) "Azure Active Directory" -> "App registrations" -> 
#Create a new registration, this will give you the ID and Secret below.
#Make sure to give your new app registration sufficient rights to your app service 
$ServicePrincipleApplicationId = "<Service Principle Id>"
$ServicePrincipleApplicationSecret = "<Service Principle Secret>"

$WebAppPath = "<Local folder where your package is located>"
$ResourceGroupName = "<The name of the Azure resource group that contains your app service>"
$WebAppName = "<The name of your Azure app service>"
$WebAppSlot = "<The name of the deployment slot you want to publish to>"

$MSDeployPath = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
$source = "-source:contentPath=$WebAppPath"
$publishProfileOutputPath = Join-Path -Path $ENV:Temp -ChildPath 'publishprofile.xml'
$dest = "-dest:contentPath=d:\home\site\wwwroot\,publishSettings=$publishProfileOutputPath"
$SecurePassword = $ServicePrincipleApplicationSecret | ConvertTo-SecureString -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ServicePrincipleApplicationId, $securePassword
$connectParameters = @{
    Credential     = $Credential
    TenantId       = $TenantId
    SubscriptionId = $SubscriptionId
}

Add-AzureRmAccount @connectParameters -ServicePrincipal

Get-AzureRmWebAppSlotPublishingProfile -OutputFile $publishProfileOutputPath -Format WebDeploy -ResourceGroupName $ResourceGroupName -Name $WebAppName -Slot $WebAppSlot

Stop-AzureRmWebAppSlot -ResourceGroupName $ResourceGroupName -Name $WebAppName -Slot $WebAppSlot

& $MSDeployPath @('-verb:sync', $source, $dest)

Start-AzureRmWebAppSlot -ResourceGroupName $ResourceGroupName -Name $WebAppName -Slot $WebAppSlot

使用 PowerShell cmdlet 将 zip 包部署到 Azure Web 应用服务。 请参阅MS 文档。

通过 PowerShell 连接到 Azure 订阅。 执行 Publish-AzWebApp 以部署 Web App。

$webAppName = "<NameOfWebAppService>"
$resourceGroup = "<WebAppResourceGroupName>"
$zipArchiveFullPath = "<zip-package-filePath\FileName.zip>"
Publish-AzWebApp -ResourceGroupName "$resourceGroup" -Name "$webAppName" -ArchivePath "$($zipArchiveFullPath)" -Force

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM