使用PowerShell Profile快速设置 HTTP 代理

因为...

Windows 系统本身可以通过系统设置来HTTP代理,但是由于应用的编写方式不同,有的来自 Unix/Linux,有的是跨平台应用,有的是 PowerShell 脚本,在设计时没有专门编写读取 Windows 系统内的代理设置的代码,就需要手动设置环境变量来为应用设置代理。

由于应用读取代理的方式各不相同,例如环境变量 http_proxy, https_proxy, 或是大写的 HTTP_PROXY 或是 HTTPS_PROXY,也可能是调用 Windows 系统中设置的代理,还有的 PowerShell 脚本是读取 [Net.WebRequest]::DefaultWebProxy ,每次设置和取消都需要执行 N 条命令和多次点击操作,设置起来非常麻烦,所以查了下资料写了一段脚本,方便在 PowerShell 中快速设置 HTTP 代理。

这个脚本支持为通过上述方式获取代理设置的应用快速设置代理,也可以同时将设置应用到系统中。

怎么用?

PowerShell(<=PS 5.1) Profile 的默认位置是 $Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1,这是一个文本文件,如果不存在,手动创建即可。关于 Profile 的更多信息参见 官方文档

提示: 你可以通过在 PowerShell 中执行 notepad $Profile 的方式直接使用记事本编辑 Profile

将以下内容粘贴到文件尾部:

保存文件后重新打开一个新的 PowerShell 窗口即可。

设置当前窗口代理 :set-proxy 'http://your-proxy:port'
设置当前窗口代理 + 系统代理:set-proxy 'http://your-proxy:port' -ApplyToSystem
取消当前窗口代理:set-proxy (没有参数)
取消当前窗口代理 + 系统代理:set-proxy -ApplyToSystem

注意:

通过环境变量也就是不加 -ApplyToSystem 的方式设置代理时,代理仅在当前窗口生效。
增加 -ApplyToSystem 后系统代理的作用域为整个系统而非当前窗口,需要手动取消,但环境变量仍然只在当前窗口生效。

发表评论

电子邮件地址不会被公开。 必填项已用*标注