Запустите параллельное задание и непрерывно передавайте его выходные данные в сценарии PowerShell. - PullRequest
1 голос
/ 13 июня 2019

У меня есть скрипт PowerShell (работающий через WinRM), который непрерывно выводит некоторую информацию вызывающей стороне.В какой-то момент он запускает исполняемый файл (продолжительностью несколько минут):

Write-Output "Starting..."
cmd /c """$exePath"""
Write-Output "Finished"

Я хотел бы параллельно с exe выполнять другую работу, которая также непрерывно выводит некоторую информацию вызывающей стороне скрипта:

While (exe not finished) {
    Write-Output "Some info"
    Start-Sleep -Seconds 1
}

Вызывающий должен получать каждую строку

Starting
Some info
Some info
Some info
Finished

, как только они выполняются, потому что он должен непрерывно отображать их в графическом интерфейсе.

Как мне добитьсятот?Я не могу непрерывно вызывать Receive-Job, потому что скрипт занят исполняемым файлом.

1 Ответ

1 голос
/ 13 июня 2019

Вы можете сделать что-то вроде этого:

$job = Start-Job -ScriptBlock {start-sleep 20 # Your scriptblock here}
while ($job.state -eq 'running'){
    Write-Output "Job still running"
    Start-Sleep 1
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...