2015-01-13 4 views
0

wscript.shell 및 ActiveX가 포함 된 PowerShell 스크립트를 호출하는 메뉴로 작업하고 있습니다. 나는 wshshell.Run에 세 개의 변수를 전달하고있다 :PowerShell 스크립트를 실행하려고하면 "시스템에서 지정한 파일을 찾을 수 없습니다."

스크립트가 역할을 가상 머신의 이름 인 PS1 파일의 이름입니다
  • scriptID,
  • vmName, 및
  • checkstate을, 이것은 메뉴 항목과 관련된 체크 상자의 상태입니다. 여기

내 현재의 비 작동 코드입니다. "지정한 파일을 찾을 수 없습니다"이것은 항상라는 오류가 발생

WshShell = new ActiveXObject("Wscript.Shell"); 
WshShell.Run("powershell.exe -file " & scriptID & " " & vmName & " " & checkstate, 7, true); 

나는 herehere을 언급 한 구문을 사용해 보았습니다. 두 가지 모두 유망 해 보였지만 위와 같은 오류가납니다.

WshShell.Run("powershell.exe -file test.ps1", 7, true) 
작동

하지만

WshShell.Run("powershell.exe -file " & "test.ps1", 7, true) 

실패

을 :

나는 변수를 복용하고 바로 실행 테스트.

+1

나는 이미 '+'대 답을 '&'생각. PowerShell 스크립트를 호출 할 때는 항상 스크립트의 전체 경로를 사용하십시오. -file "c : \ tmp \ test.ps1"은 간헐적 인 문제로 많은 문제를 줄일 수 있습니다. –

답변

0

JavaScript의 문자열 연결 연산자가 +이 아니고 &이 아니기 때문에 코드가 작동하지 않습니다.

변경이이에

WshShell.Run("powershell.exe -file " & scriptID & " " & vmName & " " & checkstate, 7, true); 

:

WshShell.Run("powershell.exe -file " + scriptID + " " + vmName + " " + checkstate, 7, true); 
+0

그랬습니다. VB에서 많은 테스트를 한 후에도 문제가 될 것이라고 생각조차하지 못했습니다. 감사! – afterbyrner

0

test.ps1이있는 디렉토리에 Wshell.WorkingDirectory을 설정해보십시오.

예 :

wsh = new ActiveXObject("Wscript.Shell"); 
wsh.workingDirectory = "C:\my\dir\to\psscript"; 
wsh.run("powershell.exe -file test.ps1", 7, true); 

확인 MSDN.

+0

WorkingDirectory 속성은 VBscript에만 적용됩니다. Javascript의 경우 CurrentDirectory 속성을 사용하십시오. – Kidquick

관련 문제