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 cmdlet 之间混淆了。正如我们从(我希望是)关于代理信息的 wget 文档中读到的:

Wget 识别的指定代理位置的标准方法是使用以下环境变量:

  • http_proxy
  • https_proxy

这正是您在这里尝试做的,这是一个成功的操作(没有错误),但没有按预期工作。

set http_proxy="ipadress:8080"

问题是,如果您在 PowerShellset中运行它,则Set-Variable. 见Get-Alias set

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

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

您也有一个问题,wget因为它是Invoke-WebRequest. 如果您至少拥有看起来拥有的 PowerShell 3.0 版,那只会是一个问题。在您的工作示例中,您使用的是 cmdlet 语法 ( -Proxy ...)。

在这两种情况下(set和不工作的情况下wget),命令都是模棱两可的,PowerShell 不得不尝试将它与某些东西相匹配......

所以我们在这里看到的是about_Command_Precedence开始发挥作用

如果不指定路径,Windows PowerShell 在运行命令时使用以下优先顺序:

  1. 别名
  2. 功能
  3. cmdlet
  4. 本机 Windows 命令

本机 Windows 命令排在最后!确实,如果您在 PowerShell 中执行此操作,您还不如使用 PowerShell cmdlet 来设置环境变量(如果您坚持使用wget)。我唯一不确定的是您应该使用哪种方法,第一种方法不应该保留第二种方法永久存在的会话。当然,第一个就足够了,但如果您想在会话之间将这些设置保留在计算机上,请使用第二个。

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

您可以从 TechNet 阅读更多相关信息。还要注意“地址”的拼写


如果您要使用 cmd 实用程序,请确保附加 .exe,如果您没有指定资源的完整路径,请确保其目录是路径环境变量的一部分。

于 2016-03-14T19:47:33.600 回答
0

PowerShell commandlet 的问题是 wget 什么是 Invoke-WebRequest 的快捷方式不能与需要身份验证的代理一起使用。它不是唯一不能与代理一起使用的命令行开关。最简单的方法是使用 cntlm

设置代理并将其用作代理,它正在工作。

于 2016-04-01T11:00:59.870 回答