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

서버 이름으로 무엇을 사용하고 있습니까? 오류 메시지에주의하십시오 : 'XXX' 대신 ' XXX' (공백에주의)으로 호스트 이름을 인용하는 Unknown MySQL server host ' XXX'에주의하십시오.

powershell에서 하나의 gotcha는 큰 따옴표 " 문자열이 평가되는 반면 작은 따옴표 ' 문자열은 평가되지 않습니다. 따라서 호스트 이름에 특수 문자가 포함되어 있으면 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

입니다. 그러나 당신이 제안한 것을 확장하고 그것을 작동 시켰습니다. 같은 param에 "-h XXX"를 결합했을 때 좋지 않았습니다. 내가 '& $ path_to_MySQL "-h"$ param1 "-D"$ param2 "-y"$ param3'으로 분리했을 때 잘 동작했습니다. – ChrisAU

관련 문제