Quando inicio um “job” do powersh a partir do cmd, onde posso receber Job os resultados do trabalho?

1

Digamos que eu execute um script do PowerShell assim:

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

... e esse script do PowerShell dá início a um trabalho ...

Quando abro outra janela do PowerShell, percebo que a tarefa não está listada quando executo Receive-Job 1 , então, para onde foi o trabalho e como posso deixá-lo em execução, localize-o novamente ao sair do processo Powershell? / p>     

por leeand00 13.08.2012 / 18:12

1 resposta

3

Get-Job apenas retorna objetos de trabalho da sessão atual. O trabalho é executado como um thread no Powershell.exe, portanto, se você sair do Powershell, o trabalho será cancelado.

Aqui está um bom link falando sobre empregos em Powershell:

link

Na primeira seção, diz isso:

They are not scheduled tasks, and will not run if PowerShell is not currently running.

Editar: Tecnicamente, alguns trabalhos do Powershell geram instâncias inteiramente novas do processo Powershell, e outros não.

Editar 2: Então, para responder com mais precisão à sua pergunta: Quando você inicia o Powershell a partir do cmd.exe, o cmd.exe gera uma instância do Powershell.exe com cmd.exe como pai. Se o trabalho nesse script Powershell iniciasse um trabalho PS que exigisse outro processo Powershell.exe, outro seria criado como filho do primeiro Powershell.exe. Se o trabalho PS no script não estiver terminando e os Powershells estiverem fechando antes que o trabalho possa ser concluído, considere a possibilidade de executar um Wait-Job no seu script.

    
por 13.08.2012 / 19:33