如何将空参数传递给 msdeploy powershell deploy 命令
Posted
技术标签:
【中文标题】如何将空参数传递给 msdeploy powershell deploy 命令【英文标题】:How to pass empty argument to msdeploy powershell deploy command 【发布时间】:2021-05-03 15:49:25 【问题描述】:在下面的命令中,我想跳过 cmdParamString 参数,因为其中一个应用程序部署不需要它,而其他应用程序部署需要它,所以无法更改这个常见的部署命令,我该如何实现?
def deployCommand = "\"$msDeploy\\MSDeploy.exe\" -verb:sync -source:package=\"$packageLocation\" -dest:$destParamsString $cmdParamString"
输出 C:\bin\jenkins\workspace\Deploy Test>"C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe" -verb:sync -source:package="C:/bin/jenkins/ArtifactorySharedDownloads/cabb6d400bb5f176700c6bb21f0a5a6580c6c97f /package.zip" -dest:ContentPath="C:\WWW\Service",ComputerName="http:local.test/MSDeployAgentService",Username="xyz",Password="abc" -setParam:"NLog 数据库连接字符串"="server=No DB setting,null;database=null;Integrated Security=SSPI" -setParam:"NLog Log Level"="null" -setParam:"ISL Database connection string"="server=No DB setting,null ;database=null;Integrated Security=SSPI"
15:46:00 错误:无法识别的参数“NLog 数据库连接字符串”。
我试过了
if(application.name == "abc")
cmdParamString = '--%'
错误:无法识别的参数“--”。
【问题讨论】:
deplyCommand
跑得怎么样了?
@cfrick bat(deployCommand) 被调用,还使用了 deploy.proj 文件,我在其中定义了这些项目
所以这是一个詹金斯问题?
是的 groovy 文件有 deploycommand 并且 delpoy.proj 有 Target 项目及其参数
@cfrick 因为这些都是空的,-setParam:"NLog 数据库连接字符串"="server=No DB setting,null;database=null;Integrated Security=SSPI" -setParam:"NLog Log Level"="null" -setParam:"ISL Database connection string"="server=No DB setting,null;database=null;Integrated Security=SSPI" deploycommand 一直失败
【参考方案1】:
对此的解决方案是传递一个如下所示的空参数并且它起作用了:
def cmdParamString = [ all database connection details are filled here]
if (application == 'abc')
cmdParamString = [:]
这已忽略应用程序 abc 的 deployCOMmand 中的 cmdParamString
【讨论】:
以上是关于如何将空参数传递给 msdeploy powershell deploy 命令的主要内容,如果未能解决你的问题,请参考以下文章
Excel Power Query:将参数传递给 oDataFeed URL 会引发错误
尝试使用 WebClient 将空正文传递给 POST 端点