在服务器 B 上交互式可用的 Web 请求,当同一命令通过 PowerShell remoting 在那里运行时,可能会收到 407。从 A 登录到 B 并不会自动为 B 的下一次身份验证交换委派该身份。

A → remoting session on B → HTTP proxy → website

一种受支持的设计是为出站请求 显式提供代理账户 。使用现有的 PSSession 和以适当方式获取的 PSCredential 对象:

Invoke-Command -Session $session -ArgumentList $proxyCredential -ScriptBlock {
    param([pscredential]$outboundProxyCredential)

    $requestOptions = @{
        Uri = 'https://api.example/'
        Proxy = 'http://proxy.example:8080'
        ProxyCredential = $outboundProxyCredential
    }
    Invoke-WebRequest @requestOptions
}

凭据对象属于代理的预期账户。会话仍然使用其常规的 remoting 身份验证,任何网站登录仍是该网站请求的一部分。

这样就不必依赖首次登录的自动委派。但它要求远程主机把提供的账户材料作为预期管理设计的一部分来处理。其他架构,例如托管 RunAs 终结点或受限的服务访问,有各自的配置要求。

如果出错的假设是默认代理凭据,请记录远程命令运行所用的账户以及代理要求的身份验证。更长的 Web 请求超时无法提供缺失的凭据。

New-PSSessionOption 上的代理选项针对的是 remoting 连接本身。当需要代理的是 B 向外的 Web 连接时,请在远程脚本块内配置 Invoke-WebRequest。

相关文章