При запуске блока сценариев PowerShell из обработчика события (например, щелчка) вывод блока сценария просто отбрасывается. Что вам нужно сделать, это захватить вывод в глобальной переменной следующим образом:
$Button4.Add_Click({$global:result = & 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms})
Это присваивает вывод глобальной переменной $global:result
, которую затем можно использовать в других задачах.
Да, я пытаюсь открыть новое окно powershell
Вы действительно хотите открыть окно или просто хотите запустить фоновую (асинхронную) работу? Если вам просто нужна фоновая работа, тогда вам стоит взглянуть на Start-Job
. Одна из проблем, связанных с использованием Start-Process
, заключается в том, что вы не получите результаты обратно, но вы можете это сделать с помощью заданий PowerShell. Если вы используете Start-Job
, код будет выглядеть так:
$Button4.Add_Click({$global:lvmjob = Start-Job { & 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms}})
Затем в другом месте вашего кода вы можете получить результаты работы, выполнив
$data = receive-job -Job $global:lvmjob