Powershell:如何停止开始工作?

时间:2019-06-30 16:55:23

标签: powershell

我在Powershell中有以下工作:

$DoIt = '...'
....
 If ([IntPtr]::size -eq 8) {
        start-job { 
        param($a) IEX $a 
        } -RunAs32 -Argument $DoIt | wait-job | Receive-Job
        Get-Job | Stop-Job
        Exit
        Write-Host "exit powershell" -NoNewLine -ForegroundColor Green
}   
else {
    IEX $DoIt
}

简单地说,如何执行start-job函数后如何停止或关闭Powershell。我该怎么办?尝试了一些方法来发现它不起作用。

2 个答案:

答案 0 :(得分:2)

删除工作。这是一个例子。如果作业完成,则无需运行停止作业。尽管invoke-expression几乎总是错误的答案,但是您必须注意用户对其的输入。我在osx中​​。

PS /Users/js> $job = start-job { param($a) sleep $a } -Args 3600
PS /Users/js> get-job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
11     Job11           BackgroundJob   Running       True            localhost             param($a) sleep $a

PS /Users/js> stop-job $job
PS /Users/js> remove-job $job  # or just remove-job -force
PS /Users/js> get-job  # none

答案 1 :(得分:0)

  

执行开始作业功能后如何停止或关闭Powershell。

  • 如果在用Start-Job启动的后台作业完成之前 退出会话,您将停止(中止)隐式,因为 PowerShell在创建后台作业时自动清除正在创建的后台作业

    • 因此,如果要启动后台运行以使启动它们的会话退出时保持运行,则必须使用其他机制,例如Start-Process -WindowStyle Hidden ...(Windows -仅)。
  • 等待完成后台作业,请使用Wait-Job或-结合检索其输出-Receive-Job -Wait

    • 请注意,这仅在启动后台作业和等待其完成之间执行其他操作时才有用-否则,您可以直接运行操作,而无需后台作业。