2012-10-10 25 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

相關問題