node.js дочерний процесс не работает в оконной службе

#javascript #windows #powershell

#javascript #Windows #powershell

Вопрос:

Я использовал модуль дочернего процесса node.js . И я зарегистрировал двоичный EXE-файл узла в службе Windows. Powershell и folderbrowserdialog используются в качестве дочернего процесса. Однако, похоже, он заканчивается одновременно с запуском дочернего процесса.

Ниже приведен мой код

 const spawn = require('cross-spawn')
const child = spawn("cmd.exe",["/c","powershell.exe","ps\ps.ps1"])
console.log('path')
child.stdout.on("data",function(data){
  path = data.toString()
});
child.on("exit",function(){
  res.send(path)
});
child.stdin.end();
 

Этот код не работает только при запуске в качестве службы окон.
res.send(путь) всегда пуст («»)

мой ps-код.

 Function Get-Folder($initialDirectory="")
{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")|Out-Null
    $foldername = New-Object System.Windows.Forms.FolderBrowserDialog
    $foldername.rootfolder = "MyComputer"
    $foldername.Description = "slect folder"
    $foldername.SelectedPath = $initialDirectory
    $caller = [System.Windows.Forms.NativeWindow]::new()
    $caller.AssignHandle([System.Diagnostics.Process]::GetCurrentProcess().MainWindowHandle)
    if($foldername.ShowDialog($caller) -eq [Windows.Forms.DialogResult]::"OK")
    {
        $folder  = $foldername.SelectedPath
    }else{
        $folder = "D:\"
        
    }
    return $folder
}
Get-Folder