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

Sam*_*rch 4 c# powershell

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

        ...
Run Code Online (Sandbox Code Playgroud)

Rom*_*min 7

在PowerShell中使用引擎事件PowerShell.Exiting并指定处理它的脚本块.

这是一个例子:

Register-EngineEvent PowerShell.Exiting -Action { "Exiting $(Get-Date)" >> C:\TEMP\log.txt }
Run Code Online (Sandbox Code Playgroud)