如何在PowerShell中捕获控制台关闭事件?
我尝试添加一个控制台控件处理程序,它适用于CMD,但在PowerShell中没有,在PowerShell中有不同的方法吗?
示例:
namespace Test_ConCtrl {
class Program {
public enum CtrlTypes : uint { CTRL_C = 0, ... }
public delegate Boolean ConsoleCtrl_Delegate(CtrlTypes CtrlType);
[DllImport("kernel32.dll")]
static extern bool SetConsoleCtrlHandler(
ConsoleCtrl_Delegate HandlerRoutine, bool Add);
public static Boolean My_CtrlHandler(CtrlTypes inConType) {
switch(inConType) { ... }
}
static void Add_Handler() {
ConsoleCtrl_Delegate myHandler = My_CtrlHandler;
SetConsoleCtrlHandler(myHandler, true);
}
...
答案 0 :(得分:7)
在PowerShell中使用引擎事件 PowerShell.Exiting 并指定处理它的脚本块。
以下是示例:
Register-EngineEvent PowerShell.Exiting -Action { "Exiting $(Get-Date)" >> C:\TEMP\log.txt }