我正在尝试运行一个脚本来从MySQL输出一些记录,但是当我尝试运行脚本它显示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 :(得分: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