使用基本身份验证的Powershell下载文件

时间:2018-07-03 06:54:56

标签: powershell

我正在尝试使用PowerShell从我的JFrog存储库下载文件,但无法正常工作。

这是我得到的错误:

Exception calling "DownloadFile" with "2" argument(s): "The underlying connection was closed: An unexpected error
occurred on a send."
At     C:\Users\jelte\Documents\myproject\downloadExecutables1.ps1:16 char:1
+ $req.DownloadFile('https://myrepo.jfrog.io/myproject/libs-release-loca ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], 

MethodInvocationException

我使用的代码:

$usernameVar = "JFROG_USERNAME"
$username = (get-item env:$usernameVar).Value

$passwordVar = "JFROG_PASSWORD"
$password = (get-item env:$passwordVar).Value

$auth = 'Basic ' + [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+":"+$password))
$req = New-Object System.Net.WebClient
$req.Headers.Add('Authorization', $auth)
$installersFolder = $PSScriptRoot + '\prerequisites\executables'
If(!(test-path $installersFolder))
{
      New-Item -ItemType Directory -Force -Path $installersFolder
}

$req.DownloadFile('https://myrepo.jfrog.io/myproject/libs-release-local/binary/com/targetexecutable/9.3.240/executable-9.3.240.exe', $installersFolder + '\executable-9.3.240.exe')

我尝试过的事情:

  1. 从不安全的服务器上下载文件是可行的。我怀疑基本身份验证有问题。
  2. 我检查了用户名和密码是否填写,我还检查了base64哈希是否正确。
  3. 将PowerShell置于跟踪模式,这样我可以得到更多清晰的错误,没有运气。 (为什么这些错误如此不清楚?)
  4. 使用Invoke-Webrequest,此方法有效,但速度非常慢。
  5. 使用cURL检查是否还有其他内容,

1 个答案:

答案 0 :(得分:0)

尝试将这些行添加到脚本的开头。

$AllProtocols = [System.Net.SecurityProtocolType]'Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols 

我经历了类似的事情,但没有非常有用的错误消息,并且问题显然只是我需要将powershell所使用的安全协议设置为Tls 1.2。