Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在powershell脚本中参数化下载url_Powershell_Jenkins_Nexus - Fatal编程技术网

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

无法在powershell脚本中参数化下载url,powershell,jenkins,nexus,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

我正在尝试从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中有两个参数:jenkin的BUILD_编号和ProjectName。这两个参数在jenkins作业中设置为参数。
ProjectName
是nexus服务器上要下载的工件的名称

命令执行时没有错误。但是文件
c:\webcontent.zip
在尝试解压缩时显示为无效。因此,我认为URL($Nexusurl)在执行PS时构造不正确

echo$Nexusurl

http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar//
显示URL缺少参数。
$Nexusurl

http://ec2-54-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:8081/nexus/content/repositories/releases/org/bar//

我在做什么?URL中没有替换参数。我尝试了很多组合,但至今都不成功

再推一下,我想我就到了。最终的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扩展名一起使用,再推一次,我想我已经做到了。最终的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扩展名的参数,我建议使用格式化字符串来定义
$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}
中进行细分。

我建议使用格式化字符串来定义
$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}
所在的第二个参数中进行细分