Invoke-WebRequest:在 PowerShell 中提供代理凭据
Invoke-WebRequest 有专门的代理凭据参数。目标站点的凭据和浏览器中成功登录并不能替代它。
对于显式的代理帐户,请将凭据对象传给 -ProxyCredential:
$proxyAccount = Get-Credential
Invoke-WebRequest -Uri https://example.com/ -Proxy http://proxy.example:8080 -ProxyCredential $proxyAccount请把端点替换为已批准的代理服务。Get-Credential 会提示输入帐户,而不是把密码写进命令行。这个帐户发给中间代理;目标站点的凭据是另一个参数,无法回应代理返回的 407。
如果代理的认证方式与进程身份支持集成认证,请改用 -ProxyUseDefaultCredentials。不要在同一次请求中同时使用它和显式的代理凭据。
查看正在运行脚本的 PowerShell 版本的参考文档。Windows PowerShell 与新版 PowerShell 在实现和参数可用性上不同;受支持的版本还提供 -NoProxy,用于显式发出直连请求。
同一个脚本作为计划任务时行为不同
检查相关的 $PSDefaultParameterValues 条目以及进程支持的代理配置。配置文件可以在会话启动时加入 针对具体命令的代理默认值。计划任务可能跳过该配置文件并以另一个身份运行,即使脚本文件本身没有变化。
比较目标 URL、所选端点、所需的代理方法、PowerShell 版本以及显式凭据与默认凭据,并对密钥做遮盖处理。如果代理认证成功而目标返回 401,应排查该目标站点的登录,而不是把代理密码挪到源站凭据参数里。