Powershell根本无法连接到互联网

sim*_*lds 4 powershell powershell-4.0

我到处寻找答案,但我想也许我的谷歌忍者技能缺乏.

我试图在Powershell中运行一个简单的命令,下载一个字符串(实际上,我想下载一个msi并运行它 - 但我已经将问题缩小到一个简单的例子).我正在运行的脚本是:

$client = New-Object System.Net.WebClient
$client.DownloadString("http://google.com") | Out-File google.html
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Exception calling "DownloadString" with "1" argument(s): "Unable to connect to the remote server"
At line:1 char:1
+ $client.DownloadString("http://google.com") | Out-File google.html
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException
Run Code Online (Sandbox Code Playgroud)

PSVersion = 4.0

我在同事的PC上运行了这个脚本(PSVersion = 3.0),它运行得很好.所以我知道代码有效.我还在C#控制台应用程序中重新创建了此代码,如下所示:

static void Main(string[] args)
{
    using(var client = new System.Net.WebClient())
    {
        var content = client.DownloadString("http://google.com");
        File.WriteAllText("D:\\google.html", content);
    }
}
Run Code Online (Sandbox Code Playgroud)

这适用于我的机器 - 所以我知道这不是.NET Framework的问题.奇怪的是,我可以exe从Powershell 打电话给它并且它有效.

我已经把它缩小到与Powershell有关的问题,但我不能为我的生活找到解决办法.我显然已经为我的机器做了一些事情,以便打破Powershell与互联网的连接,但可以与一个比我更了解幕后发生的事情的人做些什么.

请注意这与PS Remoting无关.我不认为,但我不是想使用PS Remoting.我不认为......

Raf*_*ski 7

您是否将PowerShell作为其他帐户运行(例如管理员)?也许该帐户的代理设置与您的普通帐户不同?也许在下载之前尝试设置$ client.Proxy = $ null,看看它是否有帮助.