在 Octopus Deploy Powershell 脚本中调用带有变量评估的命令
Invoking a command with variable evaluation in Octopus Deploy Powershell script
我有一个在 Octopus Deploy 安装期间执行的简单 Powershell 脚本。这条线工作正常:
& $exe install --autostart
我运行一个由 $exe 变量标识的应用程序,命令行参数 "install --autostart"。
现在我需要使用从变量求得的值来扩展命令行参数:
& $exe install --autostart -servicename=$serviceName
"$serviceName" 是在脚本执行期间获取其值的变量。无论我做什么,它都会通过变量名而不是值传递给上面的行,例如它作为“$serviceName”传递。我试过单引号和双引号,没有任何帮助。只要它是一个命令调用(由行开头的“&”符号触发),该行的其余部分将逐字解释,没有变量替换。
我花了最后几个小时试图解决这个问题,这让我抓狂。如有任何提示,我们将不胜感激。
我刚刚在我这边做了一些测试,看起来如果你希望传递给命令的变量被评估为一个变量,它需要两边都有空格。因此,您可能希望将变量定义为 $serviceName = "-servicename=*name*"
,或者如果这不可能,则在 运行 命令
之前创建一个新变量
$tmpServicename = "-servicename=$($serviceName)"
& $exe install --autostart $tmpServiceName
我有一个在 Octopus Deploy 安装期间执行的简单 Powershell 脚本。这条线工作正常:
& $exe install --autostart
我运行一个由 $exe 变量标识的应用程序,命令行参数 "install --autostart"。
现在我需要使用从变量求得的值来扩展命令行参数:
& $exe install --autostart -servicename=$serviceName
"$serviceName" 是在脚本执行期间获取其值的变量。无论我做什么,它都会通过变量名而不是值传递给上面的行,例如它作为“$serviceName”传递。我试过单引号和双引号,没有任何帮助。只要它是一个命令调用(由行开头的“&”符号触发),该行的其余部分将逐字解释,没有变量替换。
我花了最后几个小时试图解决这个问题,这让我抓狂。如有任何提示,我们将不胜感激。
我刚刚在我这边做了一些测试,看起来如果你希望传递给命令的变量被评估为一个变量,它需要两边都有空格。因此,您可能希望将变量定义为 $serviceName = "-servicename=*name*"
,或者如果这不可能,则在 运行 命令
$tmpServicename = "-servicename=$($serviceName)"
& $exe install --autostart $tmpServiceName