在2026年5月28日附近,OneDrive突然好像卡死了。
打开Onedrive图标,永远都是对某些文件"下载中",如果你开通了file on demand ,那么文件也是永远在从远程网络下载中,实际上等于你根本无法访问这些文件。
我不知道OneDrive这是抽什么风,但我查了下网上各种方法,然后挨个测试,结果没有任何一个有实际作用。
有的人说是网络问题,我还专门搞了下"网络",结果还是没用,可以确定不是网络问题。
当时的状态大概是下面截图这样的:

如果一直这样卡死当然也就没这篇文章了,这次我分享下我自己发现然后实现的特殊方法。
当时,我注意到了一个神奇的现象:刚刚开机的时候OneDrive就会正常下载文件,正常工作,但是大概等待4-5分钟就会永远保持一个不动的进度条。
我多次开机,确定这个现象是可以复现的,那这东西很可能就是转机。
当然,不可能让我们真的反复开机关机,而是可以通过自动终结OneDrive进程,然后重新拉起进程。这能部分模仿开机关机的操作,只有实测才知道是否真的可行。
我经过测试之后果然可行。
下面来说下具体怎么做。
现在来到你想要访问,但是一直无法访问,永远卡在下载中的文件。然后点击鼠标右键,选择其中的永远保留在设备上。

本质上就是相当于部分关闭了file on demand功能。
然后请打开Windows powershell(注意不是cmd),然后直接复制和粘贴以下powershell脚本,选择"粘贴多行",然后直接敲击回车按键等脚本自动终结和反复拉起OneDrive。
while ($true) {
$now = Get-Date -Format "HH:mm:ss"
Write-Host "[$now] 正在关闭 OneDrive..." -ForegroundColor Yellow
Stop-Process -Name "OneDrive" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 3
$now = Get-Date -Format "HH:mm:ss"
Write-Host "[$now] 正在重启 OneDrive..." -ForegroundColor Green
Start-Process "$env:LOCALAPPDATA\Microsoft\OneDrive\OneDrive.exe"
Write-Host "已启动,开始 5 分钟倒计时..." -ForegroundColor Gray
# 300 秒每秒刷新一次时间
for ($i = 300; $i -gt 0; $i--) {
$currentTime = Get-Date -Format "HH:mm:ss"
$min = [math]::Floor($i / 60)
$sec = $i % 60
# 利用 `r 实现单行原地刷新时间的效果
Write-Host -NoNewline "`r当前时间: [$currentTime] | 距离下次重启还有: $($min)分$($sec)秒 " -ForegroundColor Cyan
Start-Sleep -Seconds 1
}
Write-Host "" # 换行,防止新日志覆盖倒计时
}现在就是挂机等待了,我就这样连续运行了两天,将我需要的文件下载到了本地。

我在实际的运行中,发现通常在第四分钟的时候就会在某些文件卡死进度条,之所以等待5分钟也是为了保险。
而且OneDrive下载速度其实很快,只要重启OneDrive,之前卡死的文件几秒钟就能下载好。
现在回到另外一个话题,为什么我要下载文件?原因还是在于OneDrive因为某种未知的原因,将我从2023年就一直选择了保留在本地的文件夹,其中的一部分自动上传成了"仅联机"。注意是一部分不是全部,反正特别奇怪。
本质上说这是严重的程序运行问题,但是这问题一般也不会注意到,直到OneDrive抽风,让我根本没办法访问这些文件为止。
其实那几天OneDrive出现的草台班子还不只是这些,当时突然出现了10-50-170个冲突的同步文件,导致了大量的冲突版本,无法下载只是当时出现的严重错误之一。
另外,OneDrive无法正常工作,也许和你的电脑的"我的文档"中的微信聊天记录有关系,如果可以的话建议检查(官方微信APP清理过期冗余数据)下。
注: 1 根据你自己的判断决定是否使用脚本,后果自负。
2 观测,研究都由我本人完成,脚本编写由AI完成。