powershell - 如何使用 Powershell 中的 MSDeploy 将 Web 应用程序 zip 包部署到 Azure?

标签 powershell azure msdeploy

我有一个 web 应用程序的 zip 包,我想使用从 Powershell 脚本调用的 MSDeploy 工具从我们的 Jenkins 服务器部署到 Azure。

怎么做?

最佳答案

使用以下脚本:

$PackagePath = "c:\temp\package.zip"
$ResourceGroupName = "resource-group-where-my-app-resides"
$AppName = "my-cool-web-app"

if (!(Test-Path $PackagePath)) {
  throw "Package file $PackagePath does not exist"
}

echo "Getting publishing profile for $AppName app"
$xml = Get-AzureRmWebAppPublishingProfile -Name $AppName `
           -ResourceGroupName $ResourceGroupName `
           -OutputFile temp.xml -Format WebDeploy -ErrorAction Stop
$username = ([xml]$xml).SelectNodes("//publishProfile[@publishMethod=`"MSDeploy`"]/@userName").value
$password = ([xml]$xml).SelectNodes("//publishProfile[@publishMethod=`"MSDeploy`"]/@userPWD").value
$url = ([xml]$xml).SelectNodes("//publishProfile[@publishMethod=`"MSDeploy`"]/@publishUrl").value
$siteName = ([xml]$xml).SelectNodes("//publishProfile[@publishMethod=`"MSDeploy`"]/@msdeploySite").value
del temp.xml
echo "Got publishing profile XML."

$msdeployArguments = 
    '-verb:sync ' +
    "-source:package='$PackagePath' " + 
    "-dest:auto,ComputerName=https://$url/msdeploy.axd?site=$siteName,UserName=$username,Password=$password,AuthType='Basic',includeAcls='False' " +
    "-setParam:name='IIS Web Application Name',value=$siteName"
$commandLine = '&"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" --% ' + $msdeployArguments
Invoke-Expression $commandLine

msdeploy.exe 非常脆弱,命令行参数中有空格,参见 https://stackoverflow.com/a/25198222

关于powershell - 如何使用 Powershell 中的 MSDeploy 将 Web 应用程序 zip 包部署到 Azure?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45155581/

相关文章:

Powershell - 排除 P : Drive from foreach loop

Azure 自动化无法将文件传输到存储帐户

c# - 运行 powershell 脚本时云无法加载文件或程序集 'System.Management.Automation'

Azure CosmosDB : illegal characters in Document Id

azure - 有没有办法试用 Windows Azure?

powershell - 任何 AWS Powershell 命令失败并显示消息 "Invalid URI: The hostname could not be parsed."

azure - 登录 Azure

asp.net - MSDeploy和 "site under maintenance"页面

Azure:如何从 Visual Studio 项目部署子目录?

visual-studio-2010 - 如何使用 VS2010 Web 部署包包含其他文件?