无法在powershell脚本中参数化下载URL

时间:2016-05-06 22:19:36

标签: powershell jenkins nexus

我正在尝试从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中替换。到目前为止,我尝试过很多组合但不成功!

2 个答案:

答案 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扩展名的参数