Próbuję uzyskać właściciela pliku w Node.js w systemie Windows. W przypadku braku Win32API, pomyślałem, że użyć polecenia PowerShell:Wywołanie PowerShell z NodeJS
powershell -Command "(get-acl test.txt).owner"
Działa to doskonale z linii poleceń oraz z pliku wsadowego, ale po prostu wisi z node.js exec()
:
var exec = require('child_process').exec;
exec('powershell -Command "(get-acl test.txt).owner"', function(err,sysout,syserr) {
console.dir(sysout);
});
Proces PowerShell wydaje się zacząć i nigdy się nie kończy.
Czy ktoś ma:
- pomysł dlaczego polecenie nie powróci w node.js lub korzystnie
- rozsądna droga dla mnie, aby uzyskać właściciela pliku z node.js na Windows ?
Użyłem 'child = exec (...); child.stdin.end(); 'i działa idealnie. Dzięki. – tjdett
Ta odpowiedź również zadziałała. Dziękuję Ci. Jedna uwaga dla odniesienia dla osób doświadczających tego lub zastanawiających się nad tym. Dzieje się tak tylko w przypadku Powershell 2 i wcześniejszych (2 statki z Windows 7) bez wywołania stdin.end(). W przypadku Powershell 3 i nowszych (3 statki z Windows 8 i 5 z 10) nie jest to konieczne i działa zgodnie z oczekiwaniami. –