2012-10-10 24 views
1

我试图运行脚本从MySQL输出一些记录,但是当我尝试运行脚本时显示MySQL帮助文件,我认为参数没有传递给程序正确。PowerShell - 使用参数执行MySQL

这里是脚本

$path_to_MySQL = "C:\xampp\mysql\bin\mysql.exe" 

$param1 = "-h XXX" 
$param2 = "-D XXX" 
$param3 = "-u XXX" 
$param4 = "-pXXX" 
$param5 = "-e ""SELECT 'Test';""" 

$params = @($param1, $param2, $param3, $param4, $param5) 

write-host $path_to_MySQL $params 

&$path_to_MySQL $params 

现在这个输出到显示,

C:\xampp\mysql\bin\mysql.exe -h XXX -D XXX -u XXX -pXXX -e "SELECT 'Test';" 
ERROR 2005 (HY000): Unknown MySQL server host ' XXX' 

第一行是因为write-host线。

但是,当我从这里复制输出并直接在控制台中运行它时,它会正常运行。 (即我有正确的主机详细信息)

如何使用PowerShell脚本运行此行?

回答

0

你在使用什么服务器名称?请注意错误消息:Unknown MySQL server host ' XXX',其中引用主机名称为' XXX'(注意空间)而不是'XXX'

Powershell中的一个问题是双引号"字符串被评估,而单引号'字符串不是。所以如果你的主机名包含特殊字符,Powershell可能会把你搞乱。也就是说,

$foo="foo" 

# This will print 
# foo walked in bar 
"$foo walked in bar" 

# This will print: 
# $foo walked in bar 
'$foo walked in bar' 

尝试一种解决方法,像这样,

$param1 = '-h XXX' 
$param2 = '-D XXX' 
$param3 = '-u XXX' 

而且

&$path_to_MySQL $param1 $param2 $param3 
+0

我做了正确的主机名。但我扩展了你的建议,并且让它有效。它不喜欢我将“-h XXX”组合成同一个参数。当我把它分隔为'&$ path_to_MySQL“-h”$ param1“-D”$ param2“-y”$ param3“它工作正常。 – ChrisAU

相关问题