2009-06-18 70 views
2

我们遇到了Powershell和SQLCMD的问题,当-v参数变量中有sapces时,powershell不会运行该命令。Powershell SQLCMD

例如

sqlcmd ... -v VAR="Some space" 

有没有人遇到过这种情况,或知道如何解决这个问题?

谢谢,

+0

你试过%20而不是空格吗? – 2009-06-18 20:34:28

+2

如果您使用的是SQL 2008,我强烈建议使用Invoke-SqlCmd(以及其他cmdlet和提供程序)。 – 2009-08-29 16:05:21

+0

相关:http://stackoverflow.com/questions/9714054/how-to-execute-sqlcmd-from-powershell – 2013-01-31 12:34:39

回答

5

上述语法适用于PS命令行,但在脚本中失败。

我们在如何完成这项工作上挣扎了很长时间。我们的一个非常聪明的QA家伙终于想出了以下情况:

$variableWithSpaces="one two three" 
$mySqlCmd = "sqlcmd -E -S $dbServer -i $script -v var=```"$variableWithSpaces```" " 
Invoke-Expression $mySqlCmd 

插件丑陋,​​但它的工作原理。

+0

尝试了4个多小时,甚至建设的echoargs看起来不错,但仍然失败的命令。这终于做到了。 PSH岩石。 – ryascl 2014-09-15 05:03:14

2

Powershell的实际上将参数传递给该程序作为"VAR=Some space"。也许sqlcmd绊倒了这一点。通过使用

 
VAR=`"Some space`" 

而是它将通过为VAR="Some space"。也许这可以解决问题。