Question:
I’m attempting to get the owner of a file in Node.js on Windows. In the absence of a win32api, I thought I’d use a PowerShell command:
1 2 |
powershell -Command "(get-acl test.txt).owner" |
This works perfectly from the command-line and from a batch file, but just hangs with Node.js exec()
:
1 2 3 4 5 6 |
var exec = require('child_process').exec; exec('powershell -Command "(get-acl test.txt).owner"', function(err,sysout,syserr) { console.dir(sysout); }); |
The PowerShell process just appears to start and never terminate.
Does anybody have:
- an idea on why the command won’t return in Node.js, or preferably
- a sane way for me to get a file owner with Node.js on Windows?
Answer:
When you are calling Powershell like that you need to the close the input stream. You may want to try using spawn and use stdin.end()
.
Other option is to call cmd /c dir /q <file>
but that output is verbose.