gpt4 book ai didi

powershell - PowerShell ISE和PowerShell.Exiting事件

转载 作者:行者123 更新时间:2023-12-03 00:39:45 26 4
gpt4 key购买 nike

我正在使用PowerShell.Exiting引擎事件来保存命令历史记录,并在关闭PowerShell session 时进行其他一些整理,将其注册到我的配置文件中,从而:

# Set up automatic functionality on engine exit.
Register-EngineEvent PowerShell.Exiting -SupportEvent -Action `
{
#stuff
...
}

当我在控制台窗口中使用PowerShell时,此方法非常有效,但是当我在ISE中运行PowerShell时,似乎PowerShell.Exiting事件永远不会触发,因为我没有在其中放入任何东西,无论是常用的东西还是测试代码,曾经运行。

这是一个已知问题吗?如果是,是否存在已知的解决方法或替代方法?

最佳答案

好吧,这很奇怪。

在完全删除Register-EngineEvent调用之外的配置文件后,发现它仍然不起作用之后,我也开始削减其内容,并将配置文件的其余部分恢复为原始状态。这是我的发现:

如果您有write-host或PowerShell主机的其他输出,则在Register-EngineEvent PowerShell.Exited的脚本块中,退出ISE时它不会运行(即使退出控制台时它也可以正常工作)。

实际上,您没有针对PowerShell.Exited事件注册的脚本块似乎都在运行,即使其中的脚本块不包含任何输出到主机的语句。 (这就是为什么当我在上面测试其他人的工作示例时,除非我在不运行添加了现有事件处理程序的配置文件的情况下启动PowerShell,否则它们对我不起作用。)

删除所有导致您使用Register-EngineEvent PowerShell.Exited的脚本块导致主机输出的语句,或者将输出重定向到其他位置,它们全部开始工作。

(由于我还没有时间去调试器追赶它,所以要加入适量的盐,但是我有一个偷偷的嫌疑,ISE正在关闭引擎之前关闭它的标签...)

关于powershell - PowerShell ISE和PowerShell.Exiting事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14604596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com