当我关闭会话或注销计算机时,计划任务是在后台保留 运行 Powershell 脚本的唯一方法吗?

Is a scheduled task the only way to keep running a Powershell script in the background, when I close my session or log out of the computer?

如果我想运行一个Powershell脚本(v.7.1.5),分离,因为我可以关闭cmd window,注销,回来,登录,然后它仍然像 Linux 中那样 运行ning,不使用任务调度程序是否可能?

我在 SO 上看到了很多关于此的问题,但在 Linux 中似乎没有什么像 & 或 nohup 这样的。如果重要的话,我在 Windows Server 2016 上。我已经看到了这个(以及 许多 其他人):

Powershell equivalent of bash ampersand (&) for forking/running background processes

如果我想运行这个,

   foreach($n in (0..100)) {
        write-host "Hello World $n" 
        start-sleep -seconds 2
    }

我可以通过 receive-job [job_number] 看到作业及其生成的内容。如果我关闭会话 window,它就会死掉。我想如果我使用:

start-job -name BackgroundJob -FilePath C:\temp\test.ps1

它会留下来,我也试过了.\test.ps1 &

当我关闭 cmd window.

时,脚本总是死掉

您可以在提升的提示下使用 register-scheduledjob。然后您可以注销并重新登录,当作业完成时,您可以使用常规作业命令行开关来处理它。您可以在 \Microsoft\Windows\Powershell\ScheduledJobs 下的任务计划程序中找到作业。计划作业的输出可以是序列化对象,就像作业的输出一样。

$trigger = New-JobTrigger -Once -At 1:57pm
Register-ScheduledJob test {sleep 1; 'done'} -trigger $trigger


get-scheduledjob

Id         Name            JobTriggers     Command                Enabled
--         ----            -----------     -------                -------
3          test            1               sleep 1; 'done'        True


get-job

Id     Name PSJobTypeName   State         HasMoreData Location  Command
--     ---- -------------   -----         ----------- --------  -------
1      test PSScheduledJob  Completed     True        localhost sleep 1; 'done'


get-job | receive-job -keep

done