You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell在Azure Web App中创建文件夹并添加文件

在Azure Web App中创建文件夹并添加文件的正确操作方式

嘿,我得先给你提个醒:你现在写的Test-Path和md命令是在本地PowerShell环境执行的,它们只会检查你自己电脑上的D:\home\site\wwwroot\webapps\ROOT路径,完全碰不到Azure Web App服务器里的文件系统,所以这部分逻辑是走不通的。

要操作Web App的远程文件系统,有两种靠谱的方法,我给你详细拆解:

方法1:用PowerShell直接在Web App沙箱里执行命令(推荐)

如果你用的是AzureRm模块(不过更建议升级到最新的Az模块,毕竟Rm已经被弃用了),可以用Invoke-AzureRmWebAppCommand直接在Web App的环境里跑命令:

# 你已经完成的登录和订阅选择步骤
Add-AzureAccount
Select-AzureRmSubscription -SubscriptionName 'Demo'

# 获取目标Web App对象
$webApp = Get-AzureRmWebApp -Name 'test--app' -ResourceGroupName 'TEST-POC-AUTOMATION'

# 在Web App服务器上创建指定文件夹
Invoke-AzureRmWebAppCommand -WebApp $webApp `
  -Command "if (!(Test-Path 'D:\home\site\wwwroot\webapps\ROOT')) { New-Item -ItemType Directory -Path 'D:\home\site\wwwroot\webapps\ROOT' }" `
  -OutputFormat Text

# 要是想创建文件,比如生成一个空白的test.txt,就这么写
Invoke-AzureRmWebAppCommand -WebApp $webApp `
  -Command "New-Item -ItemType File -Path 'D:\home\site\wwwroot\webapps\ROOT\test.txt' -Value 'Hello from PowerShell'" `
  -OutputFormat Text

如果已经升级到Az模块,把命令里的AzureRm替换成Az就行,比如Invoke-AzWebAppCommand。

方法2:调用Kudu REST API(适合更复杂的操作,比如上传本地文件)

如果需要上传本地文件到Web App,用Kudu API会更灵活:

第一步:先获取Kudu的发布凭据

$publishingCredentials = Get-AzureRmWebAppPublishingProfile -WebApp $webApp -OutputFile null | Select-Xml -XPath "//publishProfile[@publishMethod='MSDeploy']"
$username = $publishingCredentials.Node.userName
$password = $publishingCredentials.Node.userPWD
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$kuduApiUrl = "https://$($webApp.Name).scm.azurewebsites.net/api/vfs/site/wwwroot/webapps/ROOT/"

第二步:创建目标文件夹

Invoke-RestMethod -Uri $kuduApiUrl `
  -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} `
  -Method Put

第三步:上传本地文件到这个文件夹

比如把你本地C:\temp\myfile.txt上传到Web App的目标文件夹里:

$localFilePath = "C:\temp\myfile.txt"
$fileContent = Get-Content $localFilePath -Raw
$uploadUrl = $kuduApiUrl + "myfile.txt"

Invoke-RestMethod -Uri $uploadUrl `
  -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} `
  -Method Put `
  -Body $fileContent `
  -ContentType "text/plain"

几个重要的提醒

  • 千万别把本地PowerShell环境和Web App的远程沙箱搞混了,本地的文件命令对Web App一点用都没有。
  • 尽快把AzureRm模块升级到Az模块吧,微软已经停止对Rm的维护了,后续会有兼容性问题。

内容的提问来源于stack exchange,提问作者Mahesh Kava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:55:47