はじめに
そのため、ディレクトリから zip ファイルを読み込んで、それを tmp の場所に解凍しようとしています。問題は、powershell が引用符を誤って解釈し、$copyLocation 変数の値を書き出していないように見えることです。代わりに、ファイルを [currentDirectory]\$copyLocation にコピーしています。皆さんが助けてくれることを願っています。私は Powershell を初めて使用します。これは、ビルドの自動化を引き継ぐために作成する必要があるスクリプトの一部にすぎません。前もって感謝します。
ところで、hosts は反復処理中の XmlElement です。そのため、この zip ファイルを、xml 構成ファイルで指定された多数のホスト上の場所にデプロイしています。
function copyWebappToDestination($copyWebappFrom,$to,$hosts){
foreach( $it in $hosts ){
Write-Host "Deploying webapp" $webapps.webappName "to" $it.hostIp "at" $it.to
setUpDirectories
foreach($file in $filelocation){
if($file.name.ToString() -eq "Web.Main.zip"){
$filename = $file.name.ToString()
$hostIp = $it.hostIp
$fileDest = $file.FullName
#unzip the files
& '7z' x ""$fileDest"" -o""$copyLocation"" -y -r
break
}
}
}
編集
最も奇妙な部分は、コマンドを書き出したことです
& '7z' x "C:\MoveToProduction\SM\PROD\Web.Main.zip" -o"C:\MoveToProduction\SM\PROD\tmp" -y -r"
それを Powershell コンソールから実行したところ、問題なく動作しました。スクリプトのコンテキスト内からは機能しません。
最終編集
そのため、呼び出し演算子を機能させることをあきらめました。基本的に、私が落ち着いたのは次のコマンドでした:
Invoke-Expression -command "cmd /C '7z x `"$fileDest`" -o`"$copyLocation`" -y -r'"