当我从cmd启动powershell“job”时,我可以在哪里接收Job的结果?

假设我运行这样的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进程时再次find它?

Get-Job仅从当前会话中返回作业对象。 作业作为Powershell.exe下的线程运行,所以如果退出Powershell,作业将中止。

这里有一个很好的链接,谈论PowerShell作业:

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

在第一部分,它说:

他们不是计划任务,并且如果PowerShell当前没有运行,将不会运行。

编辑:从技术上讲,一些Powershell作业产生了Powershell过程的全新实例,有些则不。

编辑2:所以更准确地回答你的问题:当你从cmd.exe启动Powershell时,cmd.exe会产生一个以cmd.exe为父节点的Powershell.exe实例。 如果该Powershell脚本中的作业随后启动了需要另一个Powershell.exe进程的PS作业,则另一个作为第一个Powershell.exe的subprocess创build。 如果脚本中的PS作业没有完成,并且Powershell在作业完成之前closures,请考虑在脚本中使用Wait-Job。