【Azure 应用服务】使用PowerShell脚本上传文件至App Service目录
问题描述
使用PowerShell脚本上传文件至App Service目录的示例
脚本示例
对文件进行上传,使用的 WebClient.UploadFile 方法进行上传。当文件夹中包含子目录,执行以下脚本就会报错。
$url="ftp://cnws-prod-xxxxx-00x.ftp.chinacloudsites.chinacloudapi.cn/site/wwwroot/"
$webappname="your web app name"
$username="your web app name\$web app name"
$password="xxxxxxxxxxxx"
$appdirectory="C:\WebSite" ##local directory name
Set-Location $appdirectory
$webclient = New-Object -TypeName System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$files = Get-ChildItem -Path $appdirectory -Recurse | Where-Object{!($_.PSIsContainer)}
foreach ($file in $files)
{
$relativepath = (Resolve-Path -Path $file.FullName -Relative).Replace(".\", "").Replace('\', '/')
$uri = New-Object System.Uri("$url/$relativepath")
"Uploading to " + $uri.AbsoluteUri
$webclient.UploadFile($uri, $file.FullName)
}
$webclient.Dispose()
- $url, $username, $password 等信息都可以在App Service的Overview页面通过 Get Publish Profile 获取

通过以上代码,上传文件到App Service的时候,如果遇见存在子目录时候,可以先将子目录压缩为一个文件,等上传到App Service后,登录Kudu高级管理工具后,通过 unzip 解压到指定目录。如:

其他的PowerShell方式:
1) 使用 Publish-AzWebApp (Deploys an Azure Web App from a ZIP, JAR, or WAR file using zipdeploy.):https://docs.microsoft.com/en-us/powershell/module/az.websites/publish-azwebapp?view=azps-6.3.0&viewFallbackFrom=azps-6.1.0
Publish-AzWebApp
-ArchivePath <String>
[-AsJob]
[-ResourceGroupName] <String>
[-Name] <String>
[[-Slot] <String>]
[-Force]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
2) 使用Msdeploy : (https://stackoverflow.com/questions/45155581/how-to-deploy-web-app-zip-package-to-azure-using-msdeploy-from-powershell)
$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
3) 通过PowerShell加载 WinSCPnet.dll 的连接 FTPS,使用其中的 session.putFiles 的方法可以传递子目录。
参考资料
Publish-AzWebApp:https://docs.microsoft.com/en-us/powershell/module/az.websites/publish-azwebapp?view=azps-6.3.0&viewFallbackFrom=azps-6.1.0
How to deploy web app zip package to Azure using MSDeploy from Powershell? : https://stackoverflow.com/questions/45155581/how-to-deploy-web-app-zip-package-to-azure-using-msdeploy-from-powershell
使用 FTP 将文件上传到 Web 应用: https://docs.azure.cn/zh-cn/app-service/scripts/powershell-deploy-ftp?toc=%2Fpowershell%2Fmodule%2Ftoc.json&view=azs-2102
【Azure 应用服务】使用PowerShell脚本上传文件至App Service目录 的更多相关文章
- SpringBoot上传文件到本服务器 目录与jar包同级问题
目录 前言 原因 实现 不要忘记 最后的封装 Follow up 前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传 ...
- python实现上传文件到linux指定目录
今天接到一个小需求,就是想在windows环境下,上传压缩文件到linux指定的目录位置并且解压出来,然后我想了一下,这个可以用python试试写下. 环境:1.linux操作系统一台2.window ...
- SpringBoot上传文件到本服务器 目录与jar包同级
前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你 ...
- WebClient使用与IIS7最大上传文件--升级&引导窗口&目录同步完整解决方法
IIS7最大上传文件说明:http://www.mzwu.com/article.asp?id=2449 WebClient使用说明使用using 及时回收资源 using(var wc=new W ...
- 使用root用户登录到AWS EC2服务器,上传文件到/var/www目录
关键词 1.aws ec2中上传文件到/var/www目录(使用filezilla) 2.使用root用户登录aws ec2实例 上一篇随笔中记录了在aws ec2实例中部署apache服务器的过程, ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service 遇见的 3 个问题
在App Service(Windows)中部署Flask应用时的注意事项: ● 添加Python扩展插件,Python 3.6.4 x64: ●● 配置 FastCGI 处理程序,添加Web.con ...
- 【Azure 应用服务】Python flask 应用部署在Aure App Service中作为一个子项目时,解决遇见的404 Not Found问题
问题描述 在成功的部署Python flask应用到App Service (Windows)后,如果需要把当前项目(如:hiflask)作为一个子项目(子站点),把web.config文件从wwwr ...
- php上传文件,创建递归目录
<?php $uid=$_REQUEST['uid']; $avatar = 'D:/avic/discuz/uc_server/data/avatar/'.get_avatar($uid, $ ...
- Android上传图片到PHP服务器并且支持浏览器上传文件(word、图片、音乐等)
暑假已经过了一半了,这才完成计划当中的第二个任务.虽然进度是慢了点.但也算是暑假的收获吧.下面我就把我学习当中的收获记录在此. 还是跟以往一样,先上图片. 操作的步骤:打开程序---->选择上传 ...
随机推荐
- Python+Requests+Re(正则)爬取某糗事百科图片(数据分析一)
1.博客目前在学习爬虫课程,使用正则表达式来爬取网页的图片信息 2.下面我们一起来回归下Python中的正则使用方式/方法 3.糗事百科图片爬取源码如下: import requestsimport ...
- tcpdump软件使用
tcpdump是一个抓包工具, -w 选项是把抓到的包写到二进制文件中,一般扩展名是.cap或.dmp,但tcpdump程序创建文件时并不添加扩展名,可自己指定. -i 是指定要抓包的interfac ...
- mysql免安装版下载及安装教程
第一步:下载 下载地址:http://dev.mysql.com/downloads/mysql/ 点击图中红色箭头Archives,可以下载自己想要的mysql版本,如图: 下载后解压,放在自己想要 ...
- 第二篇 -- Qt Designer界面介绍
1. Qt Designer创建界面 2. Qt Designer全局
- Querydsl与SpringBoot集成
Querydsl为大多数数据库提供了一种基于Java的类型安全,类SQL的查询方式.相比JPA,Querydsl能提供更加强大的查询方式,比如关联查询.相比MyBatis,Querydsl省去了XML ...
- Winform中生成自动控件
场景: 前几天项目需要模拟数据,但是实际设备还没有接上,就自己用Winform搭建了一个数据模拟器,生成数据给平台.这里又一个需求,就是从数据库中找出设备,然后自动生成控件,勾选就表示开启该设备,能上 ...
- <题解>[IOI2019]景点划分
题目传送门(luogu) 题目传送门(loj) 这个题对我来说可以算是超出了我的能力范围 被学长拿来教我做构造,构造题真简单,构造题真是人,构造题真能手切... 首先对于本题,必须要知道dfs树这东西 ...
- a = input(a, yymmdd10.)引发的问题
在数据清理过程中,经常会遇到以文本储存的日期型数据,这种数据不能直接进行分析,需要先将其转化为以数值存储的格式. 首先准备数据集: data data1; input a :$10. b :$10. ...
- 剖析虚幻渲染体系(08)- Shader体系
目录 8.1 本篇概述 8.2 Shader基础 8.2.1 FShader 8.2.2 Shader Parameter 8.2.3 Uniform Buffer 8.2.4 Vertex Fact ...
- phpunit 远程代码执行漏洞(CVE-2017-9841)
影响版本 4.8.19 ~ 4.8.27 5.0.10 ~ 5.6.2 访问进行抓包 http://192.168.49.2:8080/vendor/phpunit/phpunit/src/Util/ ...