使用powershell从artifactory repo下载多个文件

时间:2017-09-05 16:15:02

标签: powershell artifactory powershell-v4.0

我试图编写一个powershell脚本,从我的神器仓库下载多个文件。通过传递文件名,我可以使用如下的某种逻辑。

$files = @("test1.zip", "test.zip") 

foreach($file in $files)
{
Invoke-WebRequest -Uri "$artifactory_url/$file" -OutFile "D:\download\$file"
}

但是,有没有办法下载没有传递名字的所有文件?我尝试使用像(* zip)这样的通配符,但看起来像Invoke-webrequest不接受通配符。并发现Start-bittransfer cmdlet没有运气,以及文章https://blogs.technet.microsoft.com/heyscriptingguy/2012/08/17/use-powershell-3-0-to-easily-download-60-spanned-files中所述。

我能够使用以下命令

提取回购文件中的文件列表
((Invoke-WebRequest $url).links | Where href -match "zip$").href

如何使用此命令下载文件?有没有更好的方法从artifactory repo或http端点下载多个文件?我必须在多台服务器上执行此操作。所以,我没有考虑使用jfrog cli。 提前致谢

1 个答案:

答案 0 :(得分:2)

您可能缺少与请求一起发送的凭据。

如果您使用Artifactory Key,则可以使用WebClient对象,如下所示 -

 #example Artifactory url
 $artifactory_url = "https://artifactory.company.com/artifactory/"
 #example Artifactory Key
 $ArtifactoryKey = "AKCp2VpEfLuMVkxpmH9rSiZT3RPoWCucL8kEiq4SjbEuuuCFdNf5t5E6dom32TCE3efy2RCyg" 

 $wc = New-Object System.Net.WebClient
 $wc.Headers.Add("X-JFrog-Art-Api", $ArtifactoryKey)
 $files = @("test1.zip", "test.zip") 
 try {
   foreach($file in $files) {
     $wc.DownloadFile("$artifactory_url/$file", "D:\download\$file")
   }
 }
 catch {
    $Host.UI.WriteErrorLine("Error while Trying to download Artifacts.")
    $Host.UI.WriteErrorLine($_.Exception.Message)
    exit
 }