2014-04-12 25 views
0

如果我运行一个DOS命令:如何执行与变量参数

<somecommand> -e "SHOW DATABASES" -u<user> -p<password> 

它运行。但如果我尝试:

<somecommand> -e "SHOW DATABASES" -u$sqlUser -p$sqlPassword 

它失败,因为变量没有被展开。

在PowerShell中完成此任务的最简单方法是什么?

回答

0

假设somecommand是exe文件(或你的状态DOC命令),试试这样:

<somecommand> -e "SHOW DATABASES" "-u$sqlUser" "-p$sqlPassword" 
+0

我想我尝试过其他的东西4095 ....但是,这确实工作! 感谢您的回复! –

+0

PowerShell在这种情况下会使用参数解析模式,这意味着它会尝试让您指定字符串参数而不必使用引号(这会很快变老)。它很聪明地看到-u $ sqlUser,它会在这种情况下扩展变量,但是-u $ sqlUser它看作是一个字符串。您可以强制PowerShell通过在其周围放置双引号(以及相邻的文本)来扩展变量。 –

+0

是的,当然,这也会工作'-u“$ sqlUser”'。当传递给一个exe文件时,不管它的''-u $ sqlUser''或者以前的方式,都不关心AFAICT。 –