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

使用powershell从artifactory repo下载多个文件,powershell,artifactory,powershell-4.0,Powershell,Artifactory,Powershell 4.0,我试图编写一个powershell脚本,从我的artifactory repo下载多个文件。通过传递文件名,我可以使用如下某种逻辑 $files = @("test1.zip", "test.zip") foreach($file in $files) { Invoke-WebRequest -Uri "$artifactory_url/$file" -OutFile "D:\download\$file" } 但是,有没有办法下载所有的文件而不传递名字?我尝试过使用(*zip)之类的通配

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

$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(如本文所述)时运气不佳

我可以使用下面的命令调出repo中的文件列表

((Invoke-WebRequest $url).links | Where href -match "zip$").href
如何使用此命令下载文件?有没有更好的方法从artifactory repo或http端点下载多个文件?我必须在多台服务器上执行此操作。所以,我没有考虑jfrogcli的用法。
提前感谢

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

如果您使用的是Artifactory键,那么可以使用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
 }

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

如果您使用的是Artifactory键,那么可以使用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
 }

您是否尝试过
$file=((调用WebRequest$url)。链接…
,然后
foreach($files中的文件)
?我希望您需要下载这些工件,然后分别下载它们。@gmsUlman是的,我尝试过使用下面的代码调用WebRequest“$url”|选择-exp链接|其中{$.href-like“*.zip”}选择-exp href | foreach{start bitstransfer$\uc:/users/my_home}但是,它对我不起作用。您不能使用jfrog cli的任何原因?如果您确实使用powershell,您应该首先执行AQL搜索以检索文件列表,然后像现在一样枚举它。您是否尝试过
$file=((调用WebRequest$url).links…
,然后
foreach($files中的文件)
?我希望您需要下载这些工件,然后单独下载。@gmsUlman是的,我尝试使用下面的代码调用webrequest“$url”| select-exp links |其中{$|像“*.zip”}select-exp href | foreach{start bitstrasfer$| C:/users/my|home}但是,它对我不起作用。你为什么不能使用jfrog cli?如果你确实被powershell困住了,你应该首先执行AQL搜索来检索文件列表,然后像现在一样枚举它