Назад | Перейти на главную страницу

Когда я запускаю «задание» PowerShell из cmd, где я могу получить результаты задания?

Скажем, я запускаю сценарий PowerShell следующим образом:

C:\utils\powershell\MDB_BE>powershell -File .\MonitorFileSize.ps1

WARNING: column "Command" does not fit into the display and was removed.

Id              Name            State      HasMoreData     Location
--              ----            -----      -----------     --------
1               Job1            Running    True            localhost

... и этот сценарий PowerShell запускает задание ...

Когда я открываю другое окно PowerShell, я замечаю, что задание не отображается при запуске Receive-Job 1Итак, куда делось задание, и как я могу оставить его работающим, найти его снова, когда выйду из процесса Powershell?

Get-Job возвращает только объекты задания из текущего сеанса. Задание выполняется как поток в Powershell.exe, поэтому при выходе из Powershell задание прерывается.

Вот хорошая ссылка о вакансиях Powershell:

http://startlearningpowershell.com/?Name=PowerShell%20and%20Background%20Jobs

В самом первом разделе говорится следующее:

Они не являются запланированными задачами и не будут выполняться, если PowerShell в данный момент не запущен.

Изменить: технически некоторые задания Powershell порождают совершенно новые экземпляры процесса Powershell, а некоторые нет.

Изменить 2: Чтобы более точно ответить на ваш вопрос: когда вы запускаете Powershell из cmd.exe, cmd.exe порождает экземпляр Powershell.exe с cmd.exe в качестве его родителя. Если задание в этом сценарии Powershell затем запустило задание PS, для которого требовался другой процесс Powershell.exe, другой процесс будет создан как дочерний для первого Powershell.exe. Если задание PS в сценарии не завершается и ваши Powershells закрываются до того, как задание может быть завершено, подумайте о включении в сценарий ожидания задания.