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 の終了時に実行されるスクリプトは存在しません。ただし、 CmdLetでサブスクライブできるイベントを提供するSystem.Management.Automation.PsEngineEventクラスを見ることができます。Register-EngineEvent

したがって、PowerShell コマンド ラインを実行して実行します。

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

次に、PowerShell コマンド ラインを閉じます (終了するか、右上隅をクリックします)。何かが聞こえます。PowerShell プロセスが (たとえば、タスク マネージャーを使用して) 強制終了された場合、イベントは発生しないことに注意してください。

于 2014-05-23T16:29:58.213 に答える