Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Windows PowerShell 3.0 では、PowerShell のセッションから一旦切断して、別のコンピューターから再度接続する...ということが可能になっています。
PowerShell Web Accessを使用すれば自宅からの再接続も可能となり、どこからでも仕事がしたいエンジニアにとっては垂涎の機能です。PSWAを経由すればスマートフォンからでも接続できます。すばらしいです。
ここで、こんな疑問が出てきます。
普通はサーバーに「ローカルログオン」して作業しているから、
そこに再接続できるとうれしいんですけど
はい、可能です。
それがループバックPSセッションです。
仕組みも使い方も、リモーティングと全く同じです。
PowerShell コンソールを開いたら、以下のようにしてローカルコンピューターに対して PS セッションを開設します。
PS C:\> $Session = New-PSSession
PS C:\> Enter-PSSession $Session
[LOCALHOST] PS C:\>
プロンプトが [LOCALHOST] となったことに注意してください。これで、ローカルコンピューターに PS セッションを経由して入り込んだことになります。
作業が完了したら PowerShell コンソールを閉じる前に以下のコマンドを入力します。
[LOCALHOST] PS C:\> Exit
PS C:\> Disconnect-PSSession $Session
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- --------
1 Session1 localhost Disconnected Microsoft.PowerShell None
そうすると、これまで行っていた環境は、Session1 という名前で、State=Disconnected(切断中)、Availability=None(誰も使っていない) となり、未使用のセッションとして保存されます。
あとは、別のマシンから以下のように入力して再接続することができます。
PS C:\> $MySession = Connect-PSSession –ComputerName <サーバー> –Name Session1
PS C:\> Enter-PSSession $MySession
[サーバー] PS C:\>
で、ですね。
おそらく、こう思うはずなのです。
めんどくせっ!
そうなんです。せめて、PowerShell コンソールを開いたら、自動的にループバックセッションが有効になるようにできれば...と思うわけです。
そこで、この処理をプロファイルに埋め込んでしまう方法を考えてみます。プロファイルに埋め込めば、起動時に自動的にセッションの作成や接続を行ってくれます。
PowerShell プロファイルの場所は、$PROFILE に格納されていますので、確認してください。おそらく、以下のパスだと思います。
C:\Users\<ユーザーID>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
フォルダが無い場合には自分で作り、その下に Microsoft.PowerShell_profile.ps1 ファイルを作成します。テキストファイルです。
メモ帳か PowerShell ISE で開いたら、以下のように入力してください。
$LoopbackPSSessioin = New-PSSession Enter-PSSession $LoopbackPSSessioin function quit () { Disconnect-PSSession $LoopbackPSSessioin exit } |
何やってるかわかりますか?
1行目と2行目は、コンソールの起動時に実行されます。つまり、ローカルに PSセッションを張って、そこに乗り込んでいるわけですね。コンソールを起動すると、自動的に以下のような表示になります。
[localhost] : PS C:\Users\administrator.TF\Documents>
そして閉じるときは....
[localhost] : PS C:\> Exit ← これは PS セッションから抜けるため
C:\PS > quit ← $LoopbackPSSession を残すためにこのコマンドで抜ける
と入力します。 Quit コマンドにより、Disconnect-PSSession $LoopbackPSSessioin が実行され、セッションが正常に切断されてコンソールが閉じます。
コンソールを右上の[×]で閉じてしまったり、Exit コマンドで閉じてしまった場合は残念ながら保存されません。
・・・・・・・・・・・・・・・・・・・
うーん、いまいちだなぁ...と金曜日の夜に物思いにふけるのでした...。