【发布时间】:2022-01-26 13:14:06
【问题描述】:
我希望我的 powershell 脚本在通过关闭窗口按钮 (X) 关闭脚本时调用特定函数。
这可能吗?
我将分享我的尝试:
Register-EngineEvent PowerShell.Exiting -Action {FunctionName}
但它根本不起作用。 (当我从“X”关闭窗口时不调用该函数)
【问题讨论】:
标签: powershell
我希望我的 powershell 脚本在通过关闭窗口按钮 (X) 关闭脚本时调用特定函数。
这可能吗?
我将分享我的尝试:
Register-EngineEvent PowerShell.Exiting -Action {FunctionName}
但它根本不起作用。 (当我从“X”关闭窗口时不调用该函数)
【问题讨论】:
标签: powershell
不幸的是,由于一个长期存在的错误 - 请参阅GitHub issue #8000 - PowerShell.Exiting 事件不会触发当会话退出时通过关闭控制台窗口从 PowerShell 7.1 开始(而不是 PowerShell 本身退出会话,例如通过 exit)。
两旁:
即使事件确实触发了,-Action { FunctionName } 也只有在函数定义在 global 范围内(或在调用之前在 -Action 脚本块本身内)时才有效,因为脚本块在动态模块中运行。
脚本块在除Microsoft.PowerShell.Utility 之外的所有 PowerShell 模块已被卸载时执行,这严重限制了您可以执行的操作。
更多信息请参见this answer。
【讨论】: