如何在PowerShell中捕获控制台关闭事件

本文关键字:控制台 事件 PowerShell | 更新日期: 2023-09-27 18:25:44

如何在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);
        }
        ...

如何在PowerShell中捕获控制台关闭事件

在PowerShell中使用引擎事件PowerShell。退出并指定处理它的脚本块。

以下是示例:

Register-EngineEvent PowerShell.Exiting -Action { "Exiting $(Get-Date)" >> C:'TEMP'log.txt }