如果我想运行一个Powershell脚本(v. 7.1.5),分离,就像我可以关闭cmd窗口,注销,回来,登录,它仍然像在Linux中运行一样,不使用任务调度程序是可能的吗?
我在SO上看到了很多关于这个的问题,但似乎没有什么像&或者在Linux中没有。我在Windows Server 2016上,如果这很重要的话。我看到过这个(和许多)
Powershell与bash & (&)的等效,用于分叉/运行后台进程
如果我想运行这个,
foreach($n in (0..100)) {
write-host "Hello World $n"
start-sleep -seconds 2
}
我可以看到工作和它产生的receive-job [job_number]
。如果我关闭会话窗口,它就会死亡。我想如果我用:
start-job -name BackgroundJob -FilePath C:temptest.ps1
它会留下来,我也试过.test.ps1 &
脚本总是在我关闭cmd窗口时死亡。
- 我如何保持一切运行?
- 我可以做一个计划任务,每分钟运行脚本,而不是运行它,如果它已经在运行,但这会使服务器检查陷入困境吗?
- 我也可以在启动时隐藏窗口,但这似乎并不是真正的同样的事情(是吗?)
- Is nohup and &在Linux中,通过简单地运行一些东西并隐藏窗口来愚弄我(如果我退出怎么办?
可以在提升的提示符下使用register- schedulejob。然后您可以注销并重新登录,当作业完成时,您可以使用常规作业命令来处理它。您可以在MicrosoftWindowsPowershell schedulejobs下的任务调度程序中找到作业。调度作业的输出可以是序列化对象,就像作业的输出一样。
$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