我正在尝试从nexus服务器下载工件。所以我伪造了下面的ps脚本。
$Webclient = New-Object System.Net.WebClient
$Nexusurl = "http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar" + "/" + ${BUILD_NUMBER} + "/" + ${ProjectName}.zip
$Webclient.DownloadFile($Nexusurl, 'c:\webcontent.zip')
我在PS中有2个参数作为参数。 jenkin的BUILD_NUMBER和ProjectName。这两个被设置为jenkins作业中的参数。 ProjectName
是要下载的nexus服务器上的工件的名称。
该命令执行时没有错误。但是文件c:\webcontent.zip
在尝试解压缩时显示为无效。所以,我认为URL($ Nexusurl)在执行PS时构造不正确。添加像这样的回声
echo $Nexusurl
显示该URL缺少参数。它们未在$Nexusurl
http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar//
我在做什么不正确的参数未在URL中替换。到目前为止,我尝试过很多组合但不成功!
答案 0 :(得分:2)
我建议使用格式化字符串来定义$Nexusurl
:
$Nexusurl = "http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar/{0}/{1}.zip" -f $ENV:BUILD_NUMBER, $ENV:ProjectName
这将在{0}
所在的第一个参数中为子,而{1}
为第二个参数。
答案 1 :(得分:0)
再推一次,我想我就在那里。最终的PS脚本如下所示:
$Webclient = New-Object System.Net.WebClient
$Nexusurl = "http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar" + "/" + $ENV:BUILD_NUMBER + "/" + $ENV:ProjectName
echo $Nexusurl
$Webclient.DownloadFile($Nexusurl, 'c:\webcontent.zip')
但仍然不确定为什么我可以在$ENV:ProjectName
之后放置.zip的扩展名。所以,目前,我正在使用带有.zip扩展名的参数