【PowerShell】Hyper-V 系コマンドレットを手元の Windows 7 から実行するには ~ Import-PSSession

Windows Developer Day 2012 のセッション資料締切も目前なのに、すっかり PowerShell づいています。 前回、前々回とリモーティングの話を書いてきました。 【Management】PowerShell V3.0 で向上したリモーティング機能 その1 【Management】PowerShell V3.0 で向上したリモーティング機能 その2 リモートにあるサーバーを、手元のクライアントから操作する…などというのが主な使い方になりますが、今後は PowerShell ワークフローをキックしたり、結果を取得したりといった方法にも活用することになります。 で、リモーティングに関してもう数点ご紹介しておきたい機能があります。 そのうちの1つが、Import-PSSession というコマンドレットです。 ご存知ない方も多いのではないかと。このコマンドレットは、PowerShell 2.0 でサポートされました。 PowerShell では Invoke-Command というコマンドレットにより、リモートコンピューターにコマンドを投げることができます。 ただ、コンソールで対話しているときに Invoke-Command を頻繁に入力するのって疲れるんです。面倒なのです。キーッってなるのです。 PS C:\> Invoke-Command -ComputerName Server1 -ScriptBlock {Get-VM} Enter-PSSession で PSSession に入り込んでもいいのですが、プロンプトが長くなるので、これも キーッ となるのです。 PS> Enter-PSSession -ComputerName Server1 [Server1]: PS > Get-VM じゃ、手元のマシンに Module…


【Management】PowerShell V3.0 で向上したリモーティング機能 その2

  【PowerShell 3.0 で改善されたセッションの永続化機能】 ※ここからはローカルとリモートの両方が PowerShell 3.0 を使用してることを前提としています。 前回は、PowerShell 2.0 でのリモーティング機能についてご紹介しました。 【Management】PowerShell V3.0 で向上したリモーティング機能 その1 今回は、PowerShell 3.0 によって何が改善されるのかについて解説します。この改善は、ワークフローにとって非常に重要であり、この機能なしにワークフローはありえないと言えるでしょう。 PowerShell 2.0 と PowerShell 3.0 とではセッション情報の持ち方が変わりました。 2.0 では New-PSSession を実行したクライアント側にセッション情報が保持されます。そのため、別のクライアントから当該 PSSession を使用することができません。 一方 PowerShell 3.0 では、セッションの永続性を確保するためにリモートコンピューター側に PSSession を保持します。そのため、PSSession が生きていれば、別のコンピューターから接続して処理を継続したり、ジョブの状態を確認することができるようになりました。 それに伴い、新しいコマンドレットが追加されています。 Connect-PSSession 事前に New-PSSession でセッションを作成しておくことで、いつでも本コマンドレットで再接続することができます。ただし、別のコンピューターから接続されているセッションに接続することはできません。(-Force オプションが見当たりませんでした) Disconnect-PSSession 当該コマンドレットを使用すると、接続中のセッションから切断し、セッションの Status を Disconnect にします。Disconnect のセッションには、別のコンピューターから接続することができます。 Receive-PSSession Disconnect した PSSession からコマンドやジョブの実行結果だけを受け取るためのコマンドレットです。が…私の使い方が悪いのか、現時点ではうまく使えません…。…