首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Invoke-WebRequest GetSystemWebProxy()

Invoke-WebRequest GetSystemWebProxy()
EN

Stack Overflow用户
提问于 2013-03-27 03:46:29
回答 3查看 21.9K关注 0票数 9

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

代码语言:javascript
复制
$proxy = [System.Net.WebRequest]::GetSystemWebproxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials

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

代码语言:javascript
复制
$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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-27 04:02:07

也许这能帮上忙,我把它保存在我的个人资料里。它使用新的$PSDefaultParameterValues首选项变量为新的web cmdlet设置默认代理值。该代码检测我是否在我的办公室环境中,并相应地设置设置。这使我不必在每次使用这些命令时指定设置。

代码语言:javascript
复制
if(Test-Connection myCorpProxy -Count 1 -Quiet)
{
    $global:PSDefaultParameterValues = @{
        'Invoke-RestMethod:Proxy'='http://myCorpProxy:8080'
        'Invoke-WebRequest:Proxy'='http://myCorpProxy:8080'
        '*:ProxyUseDefaultCredentials'=$true
    }
}
票数 15
EN

Stack Overflow用户

发布于 2017-10-27 22:38:22

Use可以使用以下代码:

代码语言:javascript
复制
$dest = "http://www.google.fr"
$proxyurl = ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy($dest)
Invoke-WebRequest $dest -Proxy $proxyurl -ProxyUseDefaultCredentials
票数 13
EN

Stack Overflow用户

发布于 2016-12-31 02:51:42

上面代码的实际问题(尽管Shay的代码更优雅)是您试图在变量存在之前设置它的属性。在您调用Invoke-WebRequest之前,SessionVariable "$WS“并不存在,但是您试图在它上面设置.Proxy属性。

如果它在某一时刻工作,您可能已经创建了$WS的一个实例,因此能够在测试期间使用该对象,但在脚本自上而下处理时的新/干运行时,它还不存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15646079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档