用于下载文件的Powershell脚本,无法设置安全连接

时间:2008-09-28 23:10:04

标签: powershell

我正在制作一个自动脚本,用于从发布最新编译代码的站点读取列表。这是我已经想到的部分。该脚本的下一部分是从具有Untrusted Cert的服务器中获取已编译的代码。

这就是我要抓取文件的方式:

$web = new-object System.Net.WebClient
$web.DownloadFile("https://uri/file.msi", "installer.msi")

然后我收到以下错误:

  

使用“2”参数调用“DownloadFile”的异常:“基础   连接已关闭:无法建立信任关系   SSL / TLS安全通道。“

我知道我错过了一些东西,但我找不到正确的方法来搜索它。

4 个答案:

答案 0 :(得分:4)

Brad是正确的,但请注意,PowerShell V1并不真正支持代理,在这种特定情况下您需要这些代理。我认为这应该get you around这种限制(实际上你所描述的场景恰好是所使用的例子之一)。

答案 1 :(得分:3)

您需要为ServicePointManager.ServerCertificateValidationCallback编写回调处理程序。

答案 2 :(得分:1)

如果您使用Powershell并遇到此错误。使用命令:

[Net.ServicePointManager] :: SecurityProtocol = [System.Net.SecurityProtocolType] :: Tls12

在下载软件包之前。强制PS使用TLS 1.2。

失败的原因可能是您试图从中下载的网站已禁用PS默认使用的TLS 1.0支持。

答案 3 :(得分:0)

ServerCertificateValidationCallback的最简单的PowerShell实现是始终返回true的脚本块。这在PowerShell 5.1版本中对我有效;尚未在其他版本上测试过。

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

请参见Bhargav Shukla的blog