2014-04-28 5 views
1

나는 내 뇌와 내 PC를 망가 뜨리며 누군가 나를 도와 줄 수 있기를 바란다.인수를 사용하여 PHP에서 powershell 스크립트를 실행

필자는 PHP 사이트에서 실행 및 실행 가능한 powershell 스크립트를 실행해야합니다. 내가 전체 명령을 에코 할 때, 그것은 완벽한 외모와 복사 할 수 있으며,

param(
[string]$CMD, 
[string]$action, 
[string]$paras 
) 

& $CMD $action $paras 

현재 :

는이 .ps1를 호출하는 PHP는

define('updaterPath','C:\\artemis\\DbUpdateUtility1.0.12.2'); 
define('outputLocation',updaterPath.'\\Output'); 
$CMD = updaterPath . '\\ArtemisXmlUtil.exe'; 
$action = 'import'; 
$args= ' -f' . outputLocation; 
$psScriptPath = '.\\get-process.ps1'; 
$query = shell_exec("powershell -command $psScriptPath -cmd '$CMD' -action '$action' -paras '$args' < NUL"); 

내 .ps1입니다 스크립트가

입니다 powershell에 붙여 넣기를 성공적으로 수행하지만 실제로 PHP에서 실행하려고하면 $ CMD 변수로만 실행되고 $ action 및 $ paras는 무시됩니다.

변수를 모두 1 개의 문자열로 concactenating했지만 실행 파일을 볼 수 없기 때문에 실패했습니다.

C:\artemis\DbUpdateUtility1.0.12.2\ArtemisXmlUtil.exe import -fC:\artemis\DbUpdateUtility1.0.12.2\Output 

답변

0

좋아, 내 자신이 하나를 알아 낸 : 같은

전체 명령은 볼 shouls.

문제는 명령이 실행되는 방법입니다. "&"강제 powershell을 사용하여 스크립트에 전달되는 매개 변수를 무시하십시오. 명령이 실행 파일이므로 올바른 방법은 전체 명령을 문자열로 작성한 다음 ps1 파일로 한꺼번에 전달한 다음 ps1 파일을 변경하여 invoke-expression 명령 릿을 사용하는 것입니다.

param(
[string]$CMD 
) 

Invoke-expression $CMD 
관련 문제