Как получить данные с работы до ее окончания? - PullRequest
0 голосов
/ 23 февраля 2019

Я делаю проект, в котором мне нужно запускать задания для параллельных процессов.Я использую Start-Job для их запуска, и я могу получить данные по окончании работы с помощью Receive-Job.Проблема здесь заключается в том, что процесс заключается в копировании файлов из каталогов, и этот процесс может занять много времени, поэтому мне нужно проверить, идет ли обработка нормально или где-то сложено, например, процент (%) скопированных файлов.

Как проверить значение переменной до окончания работы?

1 Ответ

0 голосов
/ 23 февраля 2019

Вы можете позвонить Receive-Job в любое время.Работа не должна быть закончена для этого.Полученный вывод удаляется из задания, поэтому вам необходимо сохранить его в переменной, если он понадобится вам позже.

Демонстрация:

PS C:\> <b>$job = Start-Job -ScriptBlock {1..10 | %{$_; Start-Sleep -Seconds 1}}</b>
PS C:\> <b>Start-Sleep -Seconds 3</b>
PS C:\> <b>Receive-Job -Job $job</b>
1
2
3
PS C:\> <b>Start-Sleep -Seconds 3</b>
PS C:\> <b>Receive-Job -Job $job</b>
4
5
6
PS C:\> <b>$job.State</b>
Running
...