如何在我的进程被杀死时运行PowerShell功能"通过"停止过程"还是任务经理?

时间:2015-11-09 04:29:36

标签: powershell

我想编写一个在本地计算机上永远运行的守护程序PowerShell脚本。如果它是通过stop-process或任务管理器杀死的,我想先杀死一个休息端点。是否可以处理" kill"信号φ

[编辑]

感谢JPBlanc的建议,我提出了以下建议:

Name Manager

如果我强制杀死后台作业创建的进程,我成功获得"其他进程结束"打印到控制台。但是,如果我杀了主进程,我就不会得到一个out.txt文件,就像我的目标一样。我做错了吗?

1 个答案:

答案 0 :(得分:0)

在Windows系统上,你必须处理不同的情况并不容易:

首先:如果PowerShell进程以自然方式,用户退出或脚本退出或甚至右上角的十字架退出,您可以使用PowerShell Engine Events

$a = [System.Management.Automation.PSEngineEvent]::Exiting
Register-EngineEvent -SourceIdentifier $a -Action {[console]::Beep(500,500)}

第二:如果进程被外部进程(任务管理器)杀死,我知道的唯一方法是从外部管理PowerShell进程。您可以使用WMI事件或这样做:

$a = get-process PowerShell
$a.waitforexit()
"PowerShell has stopped running."