通过Powershell进行Kudu Azure App Zip部署-将文件传输到wwwroot

时间:2019-07-18 17:58:38

标签: azure powershell kudu

我正在使用Powershell中的Kudu Azure Zip Deploy API。

如何确保在wwwroot中提取已部署的zip文件夹的内容,而其中的wwwroot是包含的文件夹?

当前

(这里的zip文件夹是wwwroot中的容器)

/ site / wwwroot / MYZIPFOLDERNAME / CONTENTS

预期:

(我希望将zip文件夹的内容直接添加到wwwroot并在zip文件夹名称之外)

/ site / wwwroot / CONTENTS

我已遵循以下文档,并具有如下的powershell脚本:

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

#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"

Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"

脚本完成后,压缩文件将上传到我的网站,但是内容打包在文件夹中并嵌套在wwwroot目录下。

如果我使用ZipDeployUI并拖动文件夹,它会解压缩到wwwroot /目录中,而不会出现预期的文件夹名称。

1 个答案:

答案 0 :(得分:1)

我按照官方文档Deploy your app to Azure App Service with a ZIP or WAR file来运行With PowerShell小节中的PowerShell脚本,可以,并且工作正常。

您的问题是由zip文件的文件结构引起的。我会告诉你区别。

我的本​​地目录D:\projects\xml中有两个xml文件。我使用两种不同的方式将它们打包到一个zip文件xml.zip中:带容器xml,不带任何容器,如下图所示,通过7-zip

图1.压缩文件xml中的容器xml.zip

enter image description here

图1.1。容器xml包含两个xml文件

enter image description here

图2. zip文件xml.zip中没有容器

enter image description here

然后,我使用不同的zip文件(具有不同的文件结构)运行相同的PowerShell脚本,在WebApp的ZipDeployUI中得到了不同的结果,如下图所示。

图3.使用包含容器xml的zip文件运行PowerShell脚本,将xml容器解压缩到wwwroot

enter image description here

图3.1。容器xml中路径wwwroot/xml下的两个xml文件

enter image description here

图4.使用没有容器的zip文件运行PowerShell脚本,将两个xml文件直接在wwwroot下解压缩

enter image description here

因此,如果您使用的是7-zip之类的工具,请直接将这些文件打包为zip文件,而不是打包其父目录。或者在PowerShell命令行中,首先cd移至包含要打包的这些文件的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip以获取zip文件,如Create a project Zip file所述。< / p>

希望有帮助。