9

PowerShell 2.0では、次のようにすることで、正確なプロキシ設定を知らなくても、使用するプロキシを設定できることを知っています。

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

さて、私の質問は、プロキシ設定がわからない場合、上記を使用してPowerShell3.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

ただし、これを実行しようとすると、(明らかに会社のプロキシから)エラーが発生し、資格情報を確認できないことを示します。これが最終的に機能することを望んでいますが、おそらく私は単純な間違いを犯しているだけです。

4

3 に答える 3

15

多分これは助けになるかもしれません、私はそれを私のプロフィールに残します。新しい$PSDefaultParameterValues設定変数を使用して、新しいWebコマンドレットのデフォルトのプロキシ値を設定しています。コードは、私がオフィス環境にいるかどうかを検出し、それに応じて設定を設定します。これにより、これらのコマンドを使用するたびに設定を指定する手間が省けます。

if(Test-Connection myCorpProxy -Count 1 -Quiet)
{
    $global:PSDefaultParameterValues = @{
        'Invoke-RestMethod:Proxy'='http://myCorpProxy:8080'
        'Invoke-WebRequest:Proxy'='http://myCorpProxy:8080'
        '*:ProxyUseDefaultCredentials'=$true
    }
}
于 2013-03-26T20:02:06.527 に答える
13

使用はこのコードを使用できます:

$dest = "http://www.google.fr"
$proxyurl = ([System.Net.WebRequest]::GetSystemWebproxy()).GetProxy($dest)
Invoke-WebRequest $dest -Proxy $proxyurl -ProxyUseDefaultCredentials
于 2017-10-27T14:38:21.893 に答える
0

上記のコードの実際の問題は(Shayの方がエレガントですが)、変数が存在する前にプロパティを設定しようとしていることです。Invoke-WebRequestを呼び出す前にSessionVariable"$WS"は存在しませんが、その上に.Proxyプロパティを設定しようとしています。

ある時点で機能した場合は、おそらく以前に$ WSのインスタンスを作成したことがあるため、テスト中にオブジェクトを操作できましたが、スクリプトがトップダウンで処理されていたときのフレッシュ/ドライランでは、まだ存在していませんでした。 。

于 2016-12-30T18:51:42.333 に答える