1

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 スクリプトを使用してこの行を実行するにはどうすればよいですか?

4

1 に答える 1

0

サーバー名として何を使用していますか? エラー メッセージ: に注意してください。このメッセージでは、ホスト名がではなく (スペースに注意してください)Unknown MySQL server host ' XXX'として引用されています。' XXX''XXX'

Powershell の落とし穴の 1 つは、二重引用符"文字列は評価されますが、単一引用符文字列は評価され'ないことです。そのため、ホスト名に特殊文字が含まれていると、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
于 2012-10-10T08:08:29.643 に答える