2016-12-08 1 views
0

안녕하세요,루아로 powershell 명령을 실행하십시오

나는 함께 일하는 프로그램이 있는데, 여기에는 사용자 정의 작성 작업을 허용하는 온보드 루아 컴파일러가 있습니다.

도구 자체가 매우 제한적이므로 특히 네트워크를 통해 복잡한 반응이있는 경우에는 Powershell을 사용하고 싶습니다.

슬프게도 (적어도 내가하지는 않았지만) 슬프게도 os.execute() 또는 io.popen()과 같은 것들은 Windows의 표준 명령 줄을 사용합니다.

루아와 함께 Powershell을 사용하는 라이브러리 나 다른 방법을 알고 있습니까? 내가 파워 쉘 편집기 명령 줄 스크립트를 작성하고 os.execute이 스크립트를 실행했지만, 직접 명령을 작성하는 더 나은 것하는 TEXTFILE로 열립니다

은 이미 시도 무엇 루아에서는 다른 방법이 없다면 Powershell 스크립트를 직접 실행해도 괜찮습니다. (Windows 자체에서 마우스 오른쪽 버튼으로 "클릭/실행 Powershell"을 사용하여 스크립트를 실행할 수 있습니다.

+0

'os.execute [[powershell -file "c : \ path \ to \ your \ file.ps1"arg1 arg2]]', 스크립트 인수는 선택 사항입니다 –

답변

2
-- You can generate PowerShell script at run-time 
local script = [[ 
Write-Host "Hello, World!" 
]] 
-- Now create powershell process and feed your script to its stdin 
local pipe = io.popen("powershell -command -", "w") 
pipe:write(script) 
pipe:close() 
+0

실행 정책을 변경하지 않고 잘 작동합니다. – Etaila

+0

작은 스크립트의 경우 매우 유용한 트릭입니다. 나는이 방법으로 큰 스크립트를 만들고 실행하는 것을 싫어한다. –

1

os.execute("powershellscript.ps1")과 같은 명령을 사용하는 것과 같은 문제가 발생하여 해당 문자열이 cmd.exe이됩니다 일반적으로 Windows는 수정을 위해 .PS1 파일을 열어 놓았으므로 안전을 위해 신중히 결정한 것입니다. 대신 os.execute() 명령을 변경하여 PS : os.execute("powershell.exe -file powershellscript.ps1")을 명시 적으로 호출하십시오. 스크립트에 매개 변수를 전달해야하는 경우에는 동봉하십시오 명령 줄에서 PowerShell을 호출하는 방법에 대한 자세한 내용은 을 참조하십시오.

+0

좋지만 문제는 스크립트를 실행하는 응답을 얻습니다. 창이 비활성화됩니다. 이제는 그럴 수 있지만 그 루아 스크립트를 가지고있는 도구가 많은 PC에서 동시에 작동 할 것이므로 스크립트 내에서 수당을 포함 할 수 있습니까? 아니면 여유분을 어떻게 받아 들일 수 있습니까? – Etaila

+1

MSDN 링크에는 보조 문제를 해결하는 데 필요한 추가 정보가 있습니다 (스크립트를 실행할 수 없음). 당신이 찾고있는 것은 "실행 정책"입니다. 기본적으로 Powershell에서는 스크립트 실행이 비활성화되어 있습니다 (안전을 위해). 스크립트를 호출 할 때 기본 실행 정책을 덮어 쓰고 싶으면 명령 줄 스위치를 사용하십시오. MSDN 링크에서 자료를 읽으십시오. –

관련 문제