如何防止在PowerShell中将参数格式化为命令?

时间:2015-09-22 13:41:32

标签: powershell

我想用powershell调用批处理文件,如下所示:

$databaseUrl = "jdbc:sqlserver://$($databaseConfig.Server):$($databaseConfig.Port);databaseName=$($databaseConfig.Name)"

./database/liquibase/liquibase.bat --url=$databaseUrl

我的问题是=被替换为空格,只留下--url作为第一个参数。我试着把它放在引号中:

.\database\liquibase\liquibase.bat "--url=$databaseUrl"

......结果相同。我读到我可以使用反引号来转义字符:

.\database\liquibase\liquibase.bat "--url`=$databaseUrl"

......但等号仍然消失。我还尝试使用--%来阻止任何格式化:

.\database\liquibase\liquibase.bat --% "--url=$databaseUrl"

但随后变量$databaseUrl被逐字解释。

有关如何传递参数的任何帮助,未格式化,但扩展了变量将非常感激。

1 个答案:

答案 0 :(得分:0)

可能很棘手,但是当转义运算符--%允许环境变量扩展时,你可以试试这个:

$env:databaseUrl ="jdbc:sqlserver://$($databaseConfig.Server):$($databaseConfig.Port)"
$env:db="$($databaseConfig.Name)"
.\database\liquibase\liquibase.bat --% "--url=%databaseUrl%;databasename=%db%"