2012-04-16 8 views

답변

43

당신은 자식 프로세스 "powershell.exe를"을 산란 및 오류에 대한 명령 출력 및 표준 오류에 대한 표준 출력을들을 수 있습니다 :

이 허용 대답에 추가
var spawn = require("child_process").spawn,child; 
child = spawn("powershell.exe",["c:\\temp\\helloworld.ps1"]); 
child.stdout.on("data",function(data){ 
    console.log("Powershell Data: " + data); 
}); 
child.stderr.on("data",function(data){ 
    console.log("Powershell Errors: " + data); 
}); 
child.on("exit",function(){ 
    console.log("Powershell Script finished"); 
}); 
child.stdin.end(); //end input 
+0

Perfect. 도움을 많이 주셔서 감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다. 완벽하게 일했다. –

+3

나이가 들었지만 powershell을 관리자 권한으로 실행할 수 있습니까? – Vandervidi

+0

http://serverfault.com/a/464024/202283 – digitalextremist

10

하는 Node.js를 도서관이라고 Edge.js을 사용하면 노드 내에서 다양한 언어를 실행할 수 있습니다. C#, J #, .NET, SQL, Python, PowerShell 및 기타 CLR 언어 포함.

Edge.js에는 PowerShell 3.0이 필요합니다. &은 Windows에서만 작동합니다 (다른 많은 기능은 Mac 및 Linux에서도 작동 함).

6

이 옵션은 스크립트가 아직 없지만 일부 명령을 동적으로 생성하여 보내고 결과를 노드에서 다시 사용하려는 경우 유용합니다.

var PSRunner = { 
    send: function(commands) { 
     var self = this; 
     var results = []; 
     var spawn = require("child_process").spawn; 
     var child = spawn("powershell.exe", ["-Command", "-"]); 

     child.stdout.on("data", function(data) { 
      self.out.push(data.toString()); 
     }); 
     child.stderr.on("data", function(data) { 
      self.err.push(data.toString()); 
     }); 

     commands.forEach(function(cmd){ 
      self.out = []; 
      self.err = []; 
      child.stdin.write(cmd+ '\n'); 
      results.push({command: cmd, output: self.out, errors: self.err}); 
     }); 
     child.stdin.end(); 
     return results; 
    }, 
}; 

module.exports = PSRunner; 
2

또는 Node-PowerShell 만 사용할 수 있습니다.

Node-PowerShell은 오늘날의 기술 세계에 존재하는 가장 간단하고 효과적이며 쉬운 두 가지 도구를 활용합니다. 한편, 자바 스크립트 세계에서 혁명을 일으킨 NodeJS와 다른 한편으로는 초기 오픈 소스, 크로스 플랫폼 버전으로 출시 된 PowerShell을 함께 연결하면 프로그래머, IT 또는 개발자가 누구든 상관없이 요청받은 모든 솔루션을 만들 수 있습니다.

+2

스택 오버플로에 오신 것을 환영합니다! 솔루션에 대한 링크는 환영하지만, 답변이 없으면 대답이 유용하다는 점을 명심하십시오. (링크 주변에 문맥을 추가하십시오.) // 동료들에게 그것이 무엇인지 알 수있게 해줄 것입니다. (// meta.stackexchange.com/a/8259) 왜 그곳에 있는지, 그 다음 목표 페이지를 사용할 수 없을 때 링크하려는 페이지의 가장 중요한 부분을 인용하십시오. [링크 이상의 답변은 삭제 될 수 있습니다.] (// stackoverflow.com/help/deleted-answers) – FelixSFD

관련 문제