Invoke-WebRequest GetSystemWebProxy()

Chr*_*ris 7 powershell powershell-3.0

在PowerShell 2.0下,我知道您可以通过执行以下操作来设置您想要使用的代理,而无需知道确切的代理设置:

$proxy = [System.Net.WebRequest]::GetSystemWebproxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是,如果我不知道代理设置可以使用上面的内容并将其与PowerShell 3.0结合使用Invoke-WebRequest.这是我希望能够做到的:

$proxy = [System.Net.WebRequest]::GetSystemWebproxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials

$WS.Proxy = $proxy

$login = Invoke-WebRequest https://website.com/login_form.html -SessionVariable WS
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时,我收到一个错误(显然是来自我的公司代理),表明我的凭据无法验证.我希望这最终会奏效,但也许我只是犯了一个简单的错误.

Sha*_*evy 14

也许这可以提供帮助,我将其保留在我的个人资料中.它使用新的$PSDefaultParameterValues首选项变量来设置新Web cmdlet的默认代理值.代码检测我是否在我的办公室环境中并相应地设置设置.这节省了我每次使用这些命令时指定的设置.

if(Test-Connection myCorpProxy -Count 1 -Quiet)
{
    $global:PSDefaultParameterValues = @{
        'Invoke-RestMethod:Proxy'='http://myCorpProxy:8080'
        'Invoke-WebRequest:Proxy'='http://myCorpProxy:8080'
        '*:ProxyUseDefaultCredentials'=$true
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 8

使用可以使用此代码:

$dest = "http://www.google.fr"
$proxyurl = ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy($dest)
Invoke-WebRequest $dest -Proxy $proxyurl -ProxyUseDefaultCredentials
Run Code Online (Sandbox Code Playgroud)