PowerShell - выводить возвращаемые значения в многострочное текстовое поле - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть графический интерфейс PowerShell, над которым я работаю. Он вызывает командный файл, который использует psexec для удаления нескольких старых установок Java с аргументом $ pc. Когда он называется, мой графический интерфейс блокируется, однако я вижу, что он работает в ISE. Есть ли способ, которым я могу переслать вывод командного файла в многострочное текстовое поле в графическом интерфейсе, чтобы вы могли видеть, что он все еще обрабатывает?

ТОМ: У меня пока нет вывода его в графический интерфейс, это мой вопрос. Часть моего сценария, которая вызывает это:

if ($unjava=1){
   cmd /c "d:\tool\scripts\fixit\WAITjremover.bat $pc"
}

После того, как сценарий достигнет этой точки, я даже не могу переместить окна графического интерфейса, то есть замороженные, до тех пор, пока не увижу, что сценарий завершен в окне вывода на Powershell ISE

1 Ответ

0 голосов
/ 07 февраля 2012

Я собираюсь предположить, что причина зависания пользовательского интерфейса в том, что вы запускаете вышеуказанную строку в том же потоке, что и пользовательский интерфейс. Пользовательский интерфейс не сможет перерисовать, потому что он не получает циклы процессора - все циклы для потока переходят к вызову cmd. Вам нужно будет отделить фоновое выполнение от чертежа, чтобы они не мешали друг другу.

Вы можете попробовать запустить cmd внутри задания -

$j = start-job { param($unjava,$pc); if ($unjava=1) { cmd /c "d:\tool\scripts\fixit\WAITjremover.bat $pc" } } -argumentlist $unjava,$pc
wait-job $j

Я не уверен в этом, возможно, что ожидание завершит все выполнение пользовательского интерфейса, пока оно ожидает завершения задания, и в этом случае все это ничего не значит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...