简介
因此,我尝试从一个目录中读取一个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'"发布于 2013-05-11 03:34:16
所以,我放弃了让电话接线员工作的尝试。基本上,我最终确定的是命令:
Invoke-Expression -command "cmd /C '7z x `"$fileDest`" -o`"$copyLocation`" -y -r'"发布于 2014-01-30 04:51:21
将-o包含在报价中
$tz = "c:\program files\7-zip\7z.exe"
set-alias sz $tz
$source="c:\users\user\test\*.tar
$dest="c:\users\user\test2be"
sz x "$source" "-o$dest" -y发布于 2013-05-11 00:44:03
在注释后编辑:
您应该尝试的另一件事是使用一对双引号将所有7z参数括起来
初始答案
尝试使用$($copylocation.FullName)获取目标目录的完整路径
当您使用作为DirectoryInfo的$copylocation时,Powershell使用对象的ToString方法,该方法恰好只给出目录名,而不给出完整路径
https://stackoverflow.com/questions/16486972
复制相似问题