清除用户中断会话

时间:2014-05-23 13:42:40

标签: powershell keyboardinterrupt

当用户中断powershell脚本时,是否有办法捕获。

我需要退出PSSession。

我最后使用try进行测试但是当脚本中断时不执行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
}

1 个答案:

答案 0 :(得分:1)

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

因此,运行PowerShell命令行并执行:

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

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