Windows 11下PowerShell脚本配置代理启动Anki2失败求助
Anki无法通过PowerShell脚本配置代理同步,Bat脚本正常的问题排查与修复
问题概述
Windows 11工作笔记本上,Anki2无法连接ankiweb.net同步学习进度。使用.bat脚本可正常完成同步,但PowerShell脚本启动Anki后出现连接错误:
Error details: error sending request for url (): error trying to connect: tcp connect error
可用的Bat脚本(anki-proxy.bat)
@echo off &SetLocal DisableDelayedExpansion set /p USERNAME=<myuser> set /p PASSWORD=<passwrd> set "https_proxy=http://<myuser>:<passwrd>@mycompanyproxy-address:9090" cd "C:\Users\<myuser>\AppData\Local\Programs\Anki" start anki.exe pause
出错的PowerShell脚本(anki2-proxy.ps1)
$proxyCreds=get-credential -username $env:username -message "Please put your Proxy password: " Set-Variable http_proxy="http://{$proxyCreds.USERNAME}:{$proxyCreds.PASSWORD}@mycompanyproxy-address:9090" Start "C:\Users\<myuser>\AppData\Local\Programs\Anki\anki.exe"
问题根源分析
- 环境变量作用域错误:PowerShell中
Set-Variable仅创建PowerShell内部变量,并非进程级环境变量,Anki启动时无法读取该代理配置;而Bat脚本的set命令是设置当前进程的环境变量,Anki进程会直接继承。 - 变量语法与密码类型错误:
- 用
{}包裹变量是错误的PowerShell插值语法,应使用$() Get-Credential返回的密码是SecureString类型,直接嵌入URL会导致格式异常
- 用
- 缺少HTTPS代理配置:Bat脚本设置了
https_proxy,但PowerShell仅配置了http_proxy,而Anki同步使用HTTPS协议,必须对应设置https_proxy
修复方案
修正后的PowerShell脚本
# 获取代理凭据 $proxyCreds = Get-Credential -Username $env:USERNAME -Message "请输入代理密码:" # 将SecureString密码转换为明文(注意:明文密码存在安全风险,仅在必要场景使用) $plainPassword = [System.Net.NetworkCredential]::new("", $proxyCreds.Password).Password # 设置进程级环境变量(Anki启动时会继承) $env:http_proxy = "http://$($proxyCreds.UserName):$plainPassword@mycompanyproxy-address:9090" $env:https_proxy = $env:http_proxy # 启动Anki Start-Process "C:\Users\<myuser>\AppData\Local\Programs\Anki\anki.exe"
关键修复点说明
- 环境变量设置:使用
$env:前缀配置进程级环境变量,和Bat脚本的行为逻辑一致,确保Anki能读取到代理信息 - 密码处理:通过
NetworkCredential将SecureString转换为明文,解决密码格式不兼容问题 - 语法修正:用
$()正确解析嵌套变量,避免URL格式错误 - 补全HTTPS代理:同步请求依赖HTTPS,必须配置
https_proxy才能建立连接
可选安全优化(避免明文密码)
如果公司支持系统自动代理配置,可跳过手动输入密码,直接让Anki使用系统代理:
# 启用系统代理自动检测 $env:HTTP_PROXY_AUTO_DETECT = "1" $env:HTTPS_PROXY_AUTO_DETECT = "1" Start-Process "C:\Users\<myuser>\AppData\Local\Programs\Anki\anki.exe"
内容的提问来源于stack exchange,提问作者WobblyWindows
相关产品推荐
相关产品推荐

