2012-04-16 28 views

Respuesta

43

Usted sólo puede generar un proceso hijo "powershell.exe" y escuchar a la salida estándar para la salida de comandos y stderr de errores:

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

Perfecto. Muchas gracias por la ayuda. Esto es exactamente lo que estaba buscando. Funcionó sin problemas. –

+3

Sé que esto es viejo, pero ¿se puede ejecutar el powershell con permisos de administrador? – Vandervidi

+0

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

10

Además de la respuesta aceptada, hay una biblioteca llamada Node.JS Edge.js que permite que se ejecuten varios languges desde dentro del nodo. Incluyendo C#, J #, .Net, SQL, Python, PowerShell y otros lenguajes de CLR.

Tenga en cuenta que Edge.js requiere PowerShell 3.0 & solo funciona en Windows (muchas de las otras funciones también funcionan en Mac y Linux).

6

Esta opción funciona para mí, cuando la secuencia de comandos todavía no está allí, pero desea generar algunos comandos dinámicamente, enviarlos y trabajar con los resultados en el nodo.

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

O simplemente puede usar Node-PowerShell.

Node-PowerShell aprovechando dos de las herramientas más simples, efectivas y fáciles que existen en el mundo de la tecnología actual. Por un lado, NodeJS, que hizo una revolución en el mundo de javascript, y por otro lado, PowerShell, que recientemente lanzó una versión inicial de código abierto y multiplataforma, y ​​al conectarlas juntas, le da el poder de cree cualquier solución que le pidieron, sin importar si es un programador, un informático o un tipo de DevOps.

+2

¡Bienvenido a Stack Overflow! Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: [agregue contexto alrededor del enlace] (// meta.stackexchange.com/a/8259) para que los demás usuarios tengan una idea de lo que es y por qué está allí, luego cita la parte más relevante de la página a la que estás vinculando en caso de que la página objetivo no esté disponible. [Las respuestas que son poco más que un enlace se pueden eliminar.] (// stackoverflow.com/help/deleted-answers) – FelixSFD

Cuestiones relacionadas