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

如何用PowerShell从非商业版OneDrive下载公开共享文件?

如何用PowerShell无凭证下载非商业版OneDrive共享文件

问题背景

Dropbox的共享文件可通过替换域名直接生成下载链接,但非商业版OneDrive的短共享链接(如https://1drv.ms/u/s!Bjfhd-pwUc_asdcadfasdfTYFASDFASDf?e=aksdHDG)直接用Invoke-WebRequest下载时,只会得到预览页面的JavaScript代码,无法获取实际文件。核心需求是无需凭证下载“任何人可查看”的文件,因此依赖OAuth2令牌的模块方案不符合要求。

解决方案

OneDrive的短共享链接会跳转到文件预览页面,需从中提取真实下载地址后再执行下载。以下是两种可行实现方式:

方法1:通过重定向头提取下载链接

利用短链接的重定向特性,获取跳转后的预览页面地址,将其中的embed替换为download即可得到直接下载链接:

# 替换为你的OneDrive共享短链接
$sharedUrl = "https://1drv.ms/u/s!Bjfhd-pwUc_asdcadfasdfTYFASDFASDf?e=aksdHDG"
# 获取重定向地址
$redirectResponse = Invoke-WebRequest -UseBasicParsing -Uri $sharedUrl -MaximumRedirection 0 -ErrorAction SilentlyContinue
# 转换为下载链接
$downloadUrl = $redirectResponse.Headers.Location -replace "embed", "download"
# 下载文件到指定路径
Invoke-WebRequest -UseBasicParsing -Uri $downloadUrl -OutFile "C:\MyFile.txt"

方法2:解析预览页面提取下载按钮链接

如果重定向方法失效,可直接抓取预览页面内容,提取页面中“下载”按钮对应的链接:

$sharedUrl = "https://1drv.ms/u/s!Bjfhd-pwUc_asdcadfasdfTYFASDFASDf?e=aksdHDG"
# 获取预览页面内容
$pageContent = Invoke-WebRequest -UseBasicParsing -Uri $sharedUrl
# 提取下载链接
$downloadUrl = $pageContent.Links | Where-Object { $_.outerHTML -match "Download" } | Select-Object -ExpandProperty href -First 1
# 执行下载
Invoke-WebRequest -UseBasicParsing -Uri $downloadUrl -OutFile "C:\MyFile.txt"

注意事项

  • 确保共享文件已设置为任何人可查看权限,否则即使获取到下载链接也会因权限不足无法下载。
  • 若遇到链接格式变更导致方法失效,可手动打开共享链接,查看浏览器中下载按钮的真实地址,调整脚本中的提取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:25:56