Start-Job
我有(继承)一个 PowerShell 脚本,该脚本通过使用cmdlet 和-FilePath
参数调用其他 PowerShell 脚本来调用它们。例如,我有一个什么都不做的脚本:
Start-Sleep -Seconds 86400
我可以通过工作调用:
PS> Start-Job -Name "Test Job" -FilePath ".\Wait-AllDay.ps1"
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Test Job BackgroundJob Running True localhost Start-Sleep...
PS> Get-Job -Id 2
State : Running
HasMoreData : True
StatusMessage :
Location : localhost
Command : Start-Sleep -Seconds (60*60*24)
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 0c0e2c32-cbc5-4d70-b7cb-28771626cf20
Id : 2
Name : Test Job
ChildJobs : {Job3}
PSBeginTime : 25/01/2016 15:06:22
PSEndTime :
PSJobTypeName : BackgroundJob
是否有任何简单可靠的方法来找出与这项工作相关的进程(我相信这将是一个额外的powershell.exe)?显然,这很容易通过一项工作进行测试,但在服务器上我可能会同时运行许多这些工作。
为什么我想做/知道这个?
我是一个新角色,在一个服务器上工作,该服务器有多个运行各种脚本的计划任务。其中一些调用我的前任选择使用 Start-Job 调用的其他脚本,可能是因为它们可以长时间运行(多个小时)并希望它们并行工作。有时它们似乎被卡住了,我想杀死它们,但不想冒险阻止仍然健康的东西。
沿着这条路走下去,可能对如何匹配作业和流程更加好奇,因为我很可能会在不久的将来开始重写其中的一些脚本。