我有一个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
使用全局代理设置? 还是设置不正确? 或者需要我安装一些Windowsfunction,它正在工作?
以后我使用wget
来testing任何程序的任何Web请求应该工作的连接。
很确定你的问题在于你没有设置环境变量,并在cmd exe和PowerShell cmdlet之间混淆。 当我们从(我所希望的)读取有关代理信息的wget的文档时 :
指定代理位置的标准方法是使用以下环境变量:Wget识别的:
- HTTP_PROXY
- https_proxy
这正是你试图在这里做的,这是一个成功的操作(没有错误),但没有按预期工作。
set http_proxy="ipadress:8080"
问题是,如果你在PowerShell中运行set
,那么Set-Variable
就是一个别名。 请参阅Get-Alias set
。
PS C:\Users\matt> Get-Variable http* Name Value ---- ----- http_proxy=ipadress:8080
你也有一个问题,因为这是一个Invoke-WebRequest
的别名。 这只会是一个问题,如果你至少有PowerShell版本3.0,你似乎有。 在您的工作示例中,您使用的是cmdlet语法( -Proxy ...
)。
在这两种情况下( set
和非工作wget
)的命令是模棱两可的,PowerShell必须尝试匹配它的东西….
所以我们在这里看到的是about_Command_Precedence发挥作用
如果不指定路径,则Windows PowerShell在运行命令时使用以下优先顺序:
- 别号
- 功能
- 小命令
- 本机Windows命令
本地Windows命令是最后一个名单 ! 真的,如果你在PowerShell中这样做,你可以使用PowerShell cmdlet来设置你的环境变量(如果你坚持使用wget
)。 唯一不确定的是你应该使用第一个方法的方法不应该持续第二个方法是永久的会话。 当然,第一个就足够了,但是如果你想在会话之间保持这些设置,那就用第二个。
$env:http_proxy = "ipaddress:8080"
[Environment]::SetEnvironmentVariable("http_proxy", "ipaddress:8080", "Machine")
您可以从TechNet上阅读更多内容 。 另外看你的拼写“地址”
如果打算使用cmd实用程序,请确保附加.exe文件,如果不指定资源的完整路径,请确保其目录是路径环境变量的一部分。
这是PowerShell命令行程序的问题wget什么是Invoke-WebRequest的快捷方式无法与需要验证的代理一起使用。 这不是唯一的命令行,这是不是与代理的工作。 最简单的方法是使用cntlm
设置代理并使用它作为代理,它正在工作。