Estoy intentando obtener el propietario de un archivo en Node.js en Windows. En ausencia de un win32api, pensé que haría uso de un sistema de PowerShell:Llamando a PowerShell desde NodeJS
powershell -Command "(get-acl test.txt).owner"
Esto funciona perfectamente desde la línea de comandos y desde un archivo por lotes, pero sólo se bloquea con Node.js exec()
:
var exec = require('child_process').exec;
exec('powershell -Command "(get-acl test.txt).owner"', function(err,sysout,syserr) {
console.dir(sysout);
});
Parece que el proceso de PowerShell se inicia y nunca finaliza.
¿Alguien tiene:
- una idea de por qué el comando no volverá en Node.js, o preferiblemente
- una manera sana para que consiga el propietario de un archivo con Node.js en Windows ?
Utilicé 'child = exec (...); child.stdin.end(); 'y funciona perfectamente. Gracias. – tjdett
Esta respuesta funcionó para mí también. Gracias. Una nota para la referencia de otros que experimentan esto o que se preguntan al respecto. Esto solo ocurre con Powershell 2 y versiones anteriores (2 se incluyen con Windows 7) sin la llamada a stdin.end(). Para Powershell 3 y posteriores (3 se incluyen con Windows 8 y 5 con 10), no es necesario y funciona como se esperaba. –