33

Powershell を使用して Web ページにアクセスできないようです。「(407) Proxy Authentication Required」というメッセージが表示され続けます。私は多くのことを試しました。プロキシが何であるか、または必要な認証の種類がわかりません。私がアクセスできるのは、構成用のスクリプトを使用する IE だけです。そこからいくつかのIPを使用してみましたが、うまくいきませんでした。何か案は?

これが私が試したことの一例です:

$wc = New-Object System.Net.WebClient
$wc.Headers.Add("User-Agent","Mozilla/4.0+")        
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$wc.DownloadString("http://stackoverflow.com")
4

9 に答える 9

25

私は誰もこのようなことをしているのを見たことがありませんが、Powershell スクリプトで「グローバル設定」としてこれを行う方法があります (ローカル開発ビルドの前に C# でこれを行ったことを覚えています)。

[System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

このようにして、すべての WebClient をプロキシの詳細で更新したくない場合は、グローバル設定を上書きするだけです (スクリプトを実行するたびに行う必要があります)。ただし、これは、現在ログインしている Windows ユーザーがシステム定義のプロキシ サーバーに対して有効であることを前提としています。

:これは、以前はプロキシを認識していなかったPSスクリプトを機能させるための迅速で汚い方法としてのみ有用であると言えます(Cake buildなど)。

于 2016-12-15T15:15:32.850 に答える
1

以下を使用すると、資格情報の入力を求めるプロンプトが表示されます。

$client.Credentials = Get-Credential
于 2014-11-20T12:36:34.243 に答える
0

私はたった3行でこれを解決しました:

  1. $proxy='http://username:password@IP:PORT'
  2. $ENV:HTTP_PROXY=$proxy
  3. $ENV:HTTPS_PROXY=$proxy
于 2021-11-17T07:53:27.973 に答える
0

キャッシュ認証情報を追加してみてください....

$domain = 'ChDom'
$Client = new-object System.Net.WebClient
$cc = New-object System.Net.CredentialCache
$urlObj = New-object System.Uri($url)

#these variables must be plaintext strings
$creds = New-object System.Net.NetworkCredential($Username,$Password)

#your auth might be different than mine
$cc.add($urlobj,"NTLM",$creds)
$client.Credentials = $cc
$Client.Downloadfile($url, C:\Temp\TestPage.html)
于 2013-02-05T22:45:47.753 に答える
0

スクリプトを知っている場合は、ダウンロードしてメモ帳で開き、プロキシ サーバーの IP とポートを見つけます。認証に関しては、ほとんどの場合、Windows の資格情報が使用されるため、理論的には、スクリプトに疑わしいものがない限り、それを空のままにしておくことができるはずです。

于 2013-01-16T13:24:47.657 に答える