#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