在 PowerShell 5.1 中,我使用以下命令创建了一个后台作业
Start-Job { while($true) { Get-Random; Start-Sleep 5 } } -Name Sleeper
Run Code Online (Sandbox Code Playgroud)
作业创建得很好,它也返回结果Receive-Job。我用Stop-Jobcmdlet停止了它。
我想在同一个 PS 会话中再次重新启动它。
我执行Get-Jobcmdlet,我看到那里的作业处于停止状态。
如何在不重新创建的情况下重新启动它?
我无法在 about_Jobs 中获取此信息。
脚本块只是一个示例脚本。我更想知道是否有办法重新启动已经存在的工作。
您不能重新运行已完成的作业。您可以做的一件事是根据已完成的工作的命令开始一项新工作:
$j1 = Start-Job -ScriptBlock { ... }
...
$j2 = Start-Job -ScriptBlock ([scriptblock]::Create($j1.Command))
Run Code Online (Sandbox Code Playgroud)
如果你需要一些可以随意重新运行的东西,你可能想要一个计划任务或一个计划作业:
$trigger = New-JobTrigger -Daily -At '2:00 PM'
$options = New-ScheduledJobOption -StartIfOnBattery -StartIfIdle
Register-ScheduledJob -Name 'myjob' -ScriptBlock { ... } -Trigger $trigger -ScheduledJobOption $options
Run Code Online (Sandbox Code Playgroud)
并(重新)调用它,例如像这样:
(Get-ScheduledJob -Name 'myjob').StartJob()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |