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

Windows计划任务执行PowerShell上传S3文件时忽略用户配置导致传输速度异常

Windows计划任务执行PowerShell上传S3文件时忽略用户配置导致传输速度异常

这种情况我之前排查过好几次,核心问题基本都是Windows计划任务的运行环境和你手动登录时不一样,导致PowerShell没读到你存在C:\Users\<username>\.aws\config里的高并发/带宽配置, fallback到了默认的低参数设置,所以速度差这么多。

具体原因分析

  • 如果你设置了计划任务「不管用户是否登录都要运行」,它会以系统上下文加载环境,这时候USERPROFILE等用户级环境变量可能没正确加载,PowerShell找不到你用户目录下的.aws配置文件夹,只能用默认的S3传输参数(默认并发数和带宽都很低)。
  • 就算选了「用户登录时运行」,有时候计划任务的工作目录不是你的用户主目录,PowerShell查找.aws文件夹时会去错误的路径(比如系统盘的默认目录),同样读不到自定义配置。

解决方案

这里给你几个靠谱的解决办法,按优先级来:

1. 在脚本里强制指定AWS配置文件路径

最直接的方法,不管环境怎么变,让脚本明确读取你指定的配置文件。修改你的PowerShell脚本:

# 强制指定AWS配置文件的位置
$env:AWS_CONFIG_FILE = "C:\Users\<你的用户名>\.aws\config"
# 后续的原脚本内容不变
Set-AWSCredential -ProfileName BackupProfile
Write-S3Object -BucketName xyausdpaisd-bkt -Region ap-south-1 -File $latest.FullName

这样就能确保脚本用的是你自定义的高并发/带宽配置。

2. 调整计划任务的运行选项

  • 如果不需要在用户未登录时执行任务,把计划任务的「安全选项」改成只在用户登录时运行。这种模式下,计划任务会加载你用户的完整环境变量,PowerShell能自动找到C:\Users\<username>\.aws目录,读取你的配置。
  • 要是必须在未登录时运行,除了上面指定配置文件的方法,还可以在计划任务的「操作」设置里,把「起始于(可选)」设置为你的用户主目录(比如C:\Users\<你的用户名>),让PowerShell从这个目录开始查找.aws文件夹。

3. 加调试日志验证配置是否生效

可以在脚本里加一行输出当前加载的AWS配置,方便排查问题:

# 输出当前BackupProfile的配置到日志文件
Get-AWSConfig -ProfileName BackupProfile | Out-File "C:\temp\aws_s3_debug.log"

运行计划任务后,打开这个日志文件,检查max_concurrent_requests和max_bandwidth是不是你设置的300和5000MB/s。如果不是,说明配置还是没加载对,再回头检查路径或计划任务设置。

备注:内容来源于stack exchange,提问作者user2629636

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:23:11