1

当用户中断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
}
4

1 回答 1

1

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

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

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

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

于 2014-05-23T16:29:58.213 回答