【发布时间】:2013-01-30 12:58:08
【问题描述】:
我正在使用 PowerShell.Exiting 引擎事件来保存我的命令历史记录,并在我关闭 PowerShell 会话时进行其他一些整理,从而将其注册到我的配置文件中:
# Set up automatic functionality on engine exit.
Register-EngineEvent PowerShell.Exiting -SupportEvent -Action `
{
#stuff
...
}
当我在控制台窗口中使用 PowerShell 时,这非常有效,但是当我在 ISE 中运行 PowerShell 时,PowerShell.Exiting 事件似乎永远不会触发,因为我没有放在那里,无论是通常的东西还是测试代码,永远运行。
这是一个已知问题吗?如果是,是否有已知的解决方法或替代方法?
【问题讨论】:
-
澄清一下:您是否在 ISE 配置文件中添加了代码?请记住,ISE 有一个单独的配置文件(“Microsoft.PowerShellISE_profile.ps1”)
-
你是如何关闭 ISE 的?您需要在控制台输入 exit 或使用 Alt+F4。当我使用正确的退出方法时,以下内容对我有用。 Register-EngineEvent PowerShell.Exiting -SupportEvent -Action { Start-Process "Notepad.exe" }
-
是的 - 好吧,我在 CurrentUserAllHosts 配置文件 profile.ps1 中有它。里面还有很多其他的东西,我可以确定它周围的代码都在执行。 get-job 也显示它已注册。
-
我将您的代码与一个简单的
Set-Content -Value "Hi" -Path C:\test.txt操作放在我的 PowerShellISE 配置文件中,当我正常关闭 ISE(PS3.0) 时它执行良好。 -
嗯,很有趣。个人资料可能有问题吗?尝试运行 PowerShell_ise.exe -noprofile 然后试试这个。