PowerShell看门狗杀死进程树

时间:2019-11-12 18:36:01

标签: powershell watchdog activebatch

假设您有一个生成子流程树的流程- 我正在尝试创建一个看门狗进程,以在树的头被终止(头指这两行的调用者)的情况下杀死整个进程树。

Start-Process -FilePath '..\SpawnProcessTree.bat' -PassThru
Start-Process powershell -ArgumentList '..\WatchDogKillProcessTree.ps1', $pid -Wait

以上代码段在整个脚本中止的情况下都可以正常工作,但是如果脚本未中止则将无限期挂起。

WatchDogKillProcessTree.ps1中的代码如下:

$waitproc = Get-Process -Id $ps_pid
$waitproc.WaitForExit()
Kill-Tree $ps_pid

Terminate process tree in PowerShell given a process ID取来杀树的地方

显而易见的答案是换行:

$watchdog = Start-Process powershell -ArgumentList '..\WatchDogKillProcessTree.ps1', $pid -PassThru
Start-Process -FilePath '..\SpawnProcessTree.bat' -Wait
$watchdog.Kill()

遵循此https://superuser.com/questions/1302681/powershell-finally-block-not-executed-in-windows-task-scheduler

但是当我这样做时,看门狗不会在中止时终止进程树。有人会想到为什么重新排列这些行无法按预期进行吗?请让我知道是否需要任何其他信息。

0 个答案:

没有答案