Скажем, я запускаю сценарий 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 закрываются до того, как задание может быть завершено, подумайте о включении в сценарий ожидания задания.