清理用户中断会话



当用户中断powershell脚本时,是否有一种方法可以捕获?

我需要退出一个PSSession。

我使用try finally进行测试,但当脚本被中断时,finally不执行Ctrl+c

try
{
    $s = New-PSSession -ComputerName MYCOMPUTER -Credential (Get-Credential -Credential admin )
    Invoke-Command -ScriptBlock { Get-EventLog -LogName Application } -Session $s
}
catch [Exception]
{
}
finally
{
    echo "Ending the session"
    Remove-PSSession $s
}

据我所知,当PowerShell结束时不存在运行的脚本。但是你可以看看System.Management.Automation.PsEngineEvent类,它提供了你可以用Register-EngineEvent CmdLet订阅的事件。

所以运行PowerShell命令行并执行:

Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Action {[console]::Beep()}

然后关闭PowerShell命令行(退出或点击右上角),你会听到一些东西。注意,如果PowerShell进程被杀死(例如使用任务管理器),事件不会被触发。

相关内容

  • 没有找到相关文章

最新更新