PowerShell通过 $PROFILE 函数式设置代理

PowerShell通过 $PROFILE 函数式设置代理

在 Windows 开发环境里,经常会遇到一些命令行工具需要走代理的情况,比如 gitnpmscoopcurl 等。如果每次都手动输入环境变量,既麻烦又容易忘。

PowerShell 的 PROFILE 可以理解为启动配置文件,对应的内置变量是 $PROFILE。每次打开 PowerShell 时,它都会自动加载这个文件里的内容。因此,可以把常用函数写进 $PROFILE,以后只需要输入一个简单命令,就能快速开启、关闭或查看代理状态。

查看 PROFILE 路径

在 PowerShell 中执行:

1
$PROFILE

如果只是想确认文件是否已经存在,可以执行:

1
Test-Path $PROFILE

如果返回 False,说明当前还没有创建配置文件。

创建 PROFILE 文件

可以使用下面的命令创建:

1
New-Item -Path $PROFILE -Type File -Force

然后用编辑器打开它:

1
notepad $PROFILE

如果你使用 VS Code,也可以:

1
code $PROFILE

添加代理函数

把下面这段内容放进 $PROFILE 文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function proxy {
$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"
[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://127.0.0.1:7890")
Write-Host "Proxy enabled: http://127.0.0.1:7890" -ForegroundColor Green
}

function unproxy {
$env:http_proxy = $null
$env:https_proxy = $null
[System.Net.WebRequest]::DefaultWebProxy = $null
Write-Host "Proxy disabled" -ForegroundColor Yellow
}

function check-proxy {
if ($env:http_proxy -or $env:https_proxy) {
Write-Host "Current proxy settings:" -ForegroundColor Cyan
Write-Host "HTTP Proxy: $env:http_proxy"
Write-Host "HTTPS Proxy: $env:https_proxy"
} else {
Write-Host "No proxy is currently set." -ForegroundColor Cyan
}
}

这段配置提供了三个函数:

  • proxy:开启当前 PowerShell 会话的 HTTP/HTTPS 代理。
  • unproxy:关闭当前 PowerShell 会话的代理。
  • check-proxy:查看当前代理环境变量是否已经设置。

这里的代理地址是:

1
http://127.0.0.1:7890

如果你的代理软件端口不是 7890,需要把代码里的端口改成自己的实际端口。

重新加载配置

保存 $PROFILE 文件后,可以关闭 PowerShell 再重新打开,也可以直接执行:

1
. $PROFILE

注意前面有一个点和空格,表示重新加载当前配置文件。

使用方法

开启代理:

1
proxy

查看代理状态:

1
check-proxy

关闭代理:

1
unproxy

常见问题

如果执行脚本时提示权限不足,可能是 PowerShell 执行策略限制。可以先查看当前策略:

1
Get-ExecutionPolicy

如果需要允许当前用户运行本地脚本,可以执行:

1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

一般来说,设置到 CurrentUser 就足够了,不需要修改整个系统的策略。

小结

把代理配置写进 PowerShell $PROFILE 后,日常使用会轻松很多。需要代理时输入 proxy,不用时输入 unproxy,再用 check-proxy 检查状态,整个流程会比反复手动设置环境变量清爽得多。