我正在寻找一种方法来自动做一些清理任务时,PowerShell会话退出。因此,例如,在我的配置文件中,我启动了一个进程,需要在后台运行相当多的任务,我想自动关闭该进程时,我关闭了控制台。在关闭会话时,PowerShell是否会像prompt在显示提示符时那样自动调用某些函数?
prompt
vptzau2j1#
Register-EngineEvent cmdlet可用于将事件处理程序附加到Exiting事件:
Register-EngineEvent
Exiting
Register-EngineEvent PowerShell.Exiting -Action { ... }
但是请注意,如果关闭控制台窗口,则不会激发此事件。
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/
2条答案
按热度按时间vptzau2j1#
Register-EngineEvent
cmdlet可用于将事件处理程序附加到Exiting
事件:但是请注意,如果关闭控制台窗口,则不会激发此事件。
doinxwow2#
这是一个如何处理退出事件的例子。在这个例子中,保存命令的历史记录到一个文件中,并且可能保存在一个$Profile中。
要在PowerShell会话结束时自动将前面的命令导出到文件中,您可以将脚本绑定到PoSh会话终止事件(!!会话必须使用exit命令结束,而不是简单地关闭PowerShell窗口):
引自https://woshub.com/powershell-commands-history/