如何将空参数传递给 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 命令的主要内容,如果未能解决你的问题,请参考以下文章

将空列表作为参数传递给 JPA 查询会引发错误

使用 @Query JPA 注释将空参数传递给本机查询

Excel Power Query:将参数传递给 oDataFeed URL 会引发错误

尝试使用 WebClient 将空正文传递给 POST 端点

为啥threading.thread将空字典传递给python中的函数线程

如何确保将空文本框文本作为 DBNull 输入到数据库中?