2012-04-16 11 views

Odpowiedz

43

Można tylko ikra procesu potomnego „powershell.exe” i słuchać poleceń wyjścia stdout i stderr do błędów:

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

Idealny. Dziękuję bardzo za pomoc. Właśnie tego szukałem. Pracował bez zarzutu. –

+3

Wiem, że jest stary, ale czy powershell może być uruchamiany z uprawnieniami administratora? – Vandervidi

+0

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

10

Oprócz przyjętej odpowiedź, nie jest node.js biblioteki o nazwie Edge.js, która umożliwia wykonywanie różnych langugages z poziomu węzła. W tym C#, J #, .Net, SQL, Python, PowerShell i inne języki CLR.

Pamiętaj, że Edge.js wymaga programu PowerShell 3.0 & działa tylko w systemie Windows (wiele innych funkcji działa również na komputerach Mac i Linux).

6

Ta opcja działa dla mnie, gdy skrypt już nie istnieje, ale chcesz generować niektóre polecenia dynamicznie, wysyłać je i pracować z wynikami z powrotem na węźle.

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

Lub możesz po prostu użyć Node-PowerShell.

Node-PowerShell wykorzystuje dwa najprostsze, skuteczne i łatwe narzędzia, które istnieją w dzisiejszym świecie technologii. Z jednej strony, NodeJS, który dokonał rewolucji w świecie javascript, az drugiej strony, PowerShell, który niedawno pojawił się z początkową wersją open-source, międzyplatformową, i łącząc je ze sobą, daje ci moc do stworzyć dowolne rozwiązanie, o które Cię poproszono, bez względu na to, czy jesteś programistą, informatykiem, czy facetem DevOps.

+2

Witamy w Stack Overflow! Link do rozwiązania jest mile widziany, ale upewnij się, że twoja odpowiedź jest przydatna bez niego: [dodaj kontekst związany z linkiem] (// meta.stackexchange.com/a/8259), aby inni użytkownicy mieli pojęcie, co to jest i dlaczego tak jest, a następnie zacytuj najbardziej odpowiednią część strony, do której prowadzi link, jeśli strona docelowa jest niedostępna. [Odpowiedzi, które są niewiele więcej niż link, mogą zostać usunięte.] (// stackoverflow.com/help/deleted-answers) – FelixSFD

Powiązane problemy