我在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。我该怎么办?尝试了一些方法来发现它不起作用。
答案 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
。