从 PowerShell 3.0 起,PSDefaultParameterValues 可以为重复的 Web 调用提供代理默认值:

$PSDefaultParameterValues['Invoke-WebRequest:Proxy'] = 'http://proxy.example:8080'
$PSDefaultParameterValues['Invoke-RestMethod:Proxy'] = 'http://proxy.example:8080'

这些赋值会保留字典中无关的默认值。显式的 Proxy 参数会覆盖对应的默认值。键要保持命令专属,不要用 wildcard 匹配所有同名参数。对于允许公共中间商的独立公共站点会话,只有在没有设置任何 ProxyCredential 或 ProxyUseDefaultCredentials 默认值、也没有显式代理凭据时,才从 HTTP 代理列表 中挑选候选。

如果代理使用当前 Windows 身份,请添加对应的默认值:

$PSDefaultParameterValues['Invoke-WebRequest:ProxyUseDefaultCredentials'] = $true
$PSDefaultParameterValues['Invoke-RestMethod:ProxyUseDefaultCredentials'] = $true

如果将来的交互式会话需要用到,就把选定的条目放入合适的 profile。换到其他网络时,替换它们的值,或删除本次配置拥有的条目:

$PSDefaultParameterValues.Remove('Invoke-WebRequest:Proxy')
$PSDefaultParameterValues.Remove('Invoke-RestMethod:Proxy')
$PSDefaultParameterValues.Remove('Invoke-WebRequest:ProxyUseDefaultCredentials')
$PSDefaultParameterValues.Remove('Invoke-RestMethod:ProxyUseDefaultCredentials')

删除后会恢复普通的参数选择。cmdlet 仍可能使用它所支持的系统或环境配置;删除默认值并不等于显式请求直连。

相关文章