前提・実現したいこと
Windows PowerShell にて、AサーバからBサーバへセッションを張りリモートで処理を行っています。
処理の最後にTry-Catch-FinallyのFinallyでセッションの切断と削除を行っています。
この切断や削除でエラーが発生した場合、セッションはどうなってしまうのでしょう?
そのまま残ってしまうのか?自動的に削除されるのか?
該当のソースコード
Try{
セッションの接続処理
}
catch{
エラー処理
}
Finally{
if(${ObjSes} -NE $null){ # セッションオブジェクトあり
# セッション切断
try{
Disconnect-PSSession -Session ${ObjSes} Confirm:$false | Out-Null
Remove-PSSession -Session ${ObjSes} -Confirm:$false | Out-Null
}
catch [Exception]{
# 異常終了処理
}
else{
# 正常終了処理
}
}
}
試したこと
ISE画面1で、AサーバからBサーバへセッションを張り、セッションの切断、削除を行わずに終了する。
AサーバのISE画面1でGet-PSSessionでセッションの状態を確認する。
AサーバのISE画面2でも同様に確認する。
この時、セッションを張ったAサーバのISE画面1からは当然、Bサーバへ張ったセッションの状態が解り、ISE画面2からもISE画面1のセッション状態が解ります。
ISE画面1を閉じてしまうとISE画面2からはISE画面1で張ったセッション情報が取得できなくなりました。
これは、セッションを張ったコンソール画面を閉じた時点で、セッションが削除されてしまったということでしょうか?
ネットで検索した情報的には、Remove-PSSessionで削除するまで残っている。
またはDisconnect-PSSessionで切断した状態のままなら2時間で自動的に削除されると記述しているものが見つかりましたが、これは実行したコンソール画面が閉じられずそのままになっている場合の話しなのでしょうか?
補足情報(FW/ツールのバージョンなど)
FW 4.5
PowerShell 4.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。