面向办公会话的 PowerShell Web cmdlet 代理默认值
将命令专属的 Proxy 默认值加入 PSDefaultParameterValues,保留无关的默认值,并在切换环境时移除这些条目。
从 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 仍可能使用它所支持的系统或环境配置;删除默认值并不等于显式请求直连。