2009-06-18 72 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"。也許這可以解決問題。