Powershell配置文件“退出”事件?

lf3rwulv  于 2023-01-17  发布在  Shell
关注(0)|答案(2)|浏览(124)

我正在寻找一种方法来自动做一些清理任务时,PowerShell会话退出。因此,例如,在我的配置文件中,我启动了一个进程,需要在后台运行相当多的任务,我想自动关闭该进程时,我关闭了控制台。
在关闭会话时,PowerShell是否会像prompt在显示提示符时那样自动调用某些函数?

vptzau2j

vptzau2j1#

Register-EngineEvent cmdlet可用于将事件处理程序附加到Exiting事件:

Register-EngineEvent PowerShell.Exiting -Action { ... }

但是请注意,如果关闭控制台窗口,则不会激发此事件。

doinxwow

doinxwow2#

这是一个如何处理退出事件的例子。在这个例子中,保存命令的历史记录到一个文件中,并且可能保存在一个$Profile中。
要在PowerShell会话结束时自动将前面的命令导出到文件中,您可以将脚本绑定到PoSh会话终止事件(!!会话必须使用exit命令结束,而不是简单地关闭PowerShell窗口):

$HistFile = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistFile } | out-null
if (Test-path $HistFile) { Import-Clixml $HistFile | Add-History }

引自https://woshub.com/powershell-commands-history/

相关问题