4

Windows nano サーバーがあり、プロキシ設定を設定しようとしています。nano サーバーはコマンド モードのみで、GUI はありません。PowerShell で実行しました

netsh winhttp set proxy proxy-server="ipadress:8080"

で、〜がある

ping www.google.de 

グーグルからのIPアドレスが表示されたので、何らかの接続があります。でも走ろうとすると

wget www.google.de 

私は得る

"Unable to connect to the remote server"

次に、PowerShell環境でプロキシを設定しました

set http_proxy="ipadress:8080" and https_proxy...

しかし、同じ問題。プロキシ設定で wget を直接呼び出すと、次のように機能します。

wget 'http://www.google.de' -Proxy http://ipadress:8080

wgetグローバル プロキシ設定を使用して動作させるにはどうすればよいですか? または、設定が正しく設定されていませんか?または、機能しているいくつかの Windows 機能をインストールする必要がありますか?

後で接続をテストするためwgetに、どのプログラムの Web リクエストも機能するはずです。

4

2 に答える 2

9

ここでの問題は、環境変数を設定しておらず、cmd exe と PowerShell コマンドレットが混同されていないことです。プロキシ情報に関する wgetのドキュメント (私が望んでいること) から読み取ると、次のようになります。

Wget が認識するプロキシの場所を指定する標準的な方法は、次の環境変数を使用することです。

  • http_proxy
  • https_proxy

これはまさにあなたがここでやろうとしたことであり、操作は成功しました (エラーはありません) が、期待どおりには機能しませんでした。

set http_proxy="ipadress:8080"

問題は、PowerShell でそれを実行するとsetSet-Variable. を参照してくださいGet-Alias set

PS C:\Users\matt> Get-Variable http*

Name                           Value                                                                                        
----                           -----                                                                                        
http_proxy=ipadress:8080     

wgetのエイリアスであるため、 にも問題がありInvoke-WebRequestます。これは、少なくとも PowerShell バージョン 3.0 を持っている場合にのみ問題になります。実際の例では、コマンドレット構文 ( -Proxy ...) を使用しています。

どちらの場合も (setそして動作しない場合もwget)、コマンドはあいまいで、PowerShell はそれを何かに一致させようとしなければなりませんでした....

つまり、ここで見ているのはabout_Command_Precedenceが登場することです

パスを指定しない場合、Windows PowerShell はコマンドの実行時に次の優先順位を使用します。

  1. エイリアス
  2. 関数
  3. コマンドレット
  4. ネイティブ Windows コマンド

ネイティブ Windows コマンドはリストの最後です。実際には、PowerShell でこれを行っている場合は、PowerShell コマンドレットを使用して環境変数を設定することもできます (使用を主張する場合wget)。私が確信していない唯一のことは、ここで最初に使用する方法は、2番目の方法が永続的であるセッションを永続化するべきではないということです。確かに最初のもので十分ですが、これらの設定をセッション間でコンピューターに保持したい場合は、2 番目のものを使用してください。

  1. $env:http_proxy = "ipaddress:8080"
  2. [Environment]::SetEnvironmentVariable("http_proxy", "ipaddress:8080", "Machine")

詳細については、TechNet を参照してください。「住所」のスペルにも注意してください


cmd ユーティリティを使用する場合は、必ず .exe を追加してください。リソースへのフル パスを指定しない場合は、そのディレクトリがパス環境変数の一部であることを確認してください。

于 2016-03-14T19:47:33.600 に答える
0

これは、認証が必要なプロキシでは機能しない Invoke-WebRequest のショートカットである wget の powershell コマンドレットの問題でした。プロキシで動作しないコマンドレットはこれだけではありません。最も簡単な方法は、 cntlmを使用すること でした

プロキシをセットアップしてプロキシとして使用すると、機能しています。

于 2016-04-01T11:00:59.870 に答える