在PowerShell 2.0下,我知道您可以通过执行以下操作来设置您想要使用的代理,而无需知道确切的代理设置:
$proxy = [System.Net.WebRequest]::GetSystemWebproxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials现在,我的问题是,如果我不知道代理设置,我是否可以使用上面的设置并将其与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然而,当我尝试这样做时,我得到了一个错误,(显然是来自我的公司代理),表明我的凭证无法验证。我希望这最终会起作用,但也许我只是犯了一个简单的错误。
发布于 2013-03-27 04:02:07
也许这能帮上忙,我把它保存在我的个人资料里。它使用新的$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
}
}发布于 2017-10-27 22:38:22
Use可以使用以下代码:
$dest = "http://www.google.fr"
$proxyurl = ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy($dest)
Invoke-WebRequest $dest -Proxy $proxyurl -ProxyUseDefaultCredentials发布于 2016-12-31 02:51:42
上面代码的实际问题(尽管Shay的代码更优雅)是您试图在变量存在之前设置它的属性。在您调用Invoke-WebRequest之前,SessionVariable "$WS“并不存在,但是您试图在它上面设置.Proxy属性。
如果它在某一时刻工作,您可能已经创建了$WS的一个实例,因此能够在测试期间使用该对象,但在脚本自上而下处理时的新/干运行时,它还不存在。
https://stackoverflow.com/questions/15646079
复制相似问题