2016-05-06 1 views
0

Nexusサーバから成果物をダウンロードしようとしています。だから私は以下のpsスクリプトを偽造した。powershellスクリプトのダウンロードURLをパラメータ化できません

$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つのパラメータがあります。ジェンキンのBUILD_NUMBERとProjectName。これらの2は、jenkinsジョブのパラメータとして設定されます。 ProjectNameは、ダウンロードするネクサスサーバ上のアーティファクトの名前です。

コマンドはエラーなしで実行されます。しかし、ファイルc:\webcontent.zipは、解凍しようとしている間、無効として表示されています。だから、私は、URL($ Nexusurl)は、PSを実行中に間違って構築されると思います。この

echo $Nexusurl

のようなエコーを追加すると、URLのパラメータが欠落していることを明らかにしました。彼らは、私はパラメータがURLに置換されていないことを間違って何をやっている$Nexusurl

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

に置換されていません。私はたくさんの組み合わせを試みましたが、これまでに失敗しました!

答えて

0

もう1回押すと私はそこにいると思います。最終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ファイル拡張子とパラメータを使用しています

2

Iのような$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}である二番目の引数。

関連する問題