トピック about_PSSessions 簡易説明 Windows PowerShell セッション (PSSession) について説明し、リモート コンピューターへ の固定接続を確立する方法を紹介します。 詳細説明 リモート コンピューター上で Windows PowerShell コマンドを実行するには、コマンドレットの ComputerName パラメーターを使用するか、Windows PowerShell セッション (PSSession) を作成してその PSSession でコマンドを実行します。 PSSession を作成すると、Windows PowerShell はリモート コンピューターへの固定接続を確立しま す。リモート コンピューターで一連の関連コマンドを実行するには、PSSession を使用します。同じ PSSession で実行されるコマンド間では、変数の値、エイリアス、関数などのデータを共有できます。 ローカル コンピューターで PSSession を作成し、その PSSession でコマンドを実行することも できます。ローカル PSSession は、Windows PowerShell リモート処理インフラストラクチャを使用して PSSession を作成および維持します。 ここでは、PSSession を作成、使用、取得、および削除する方法について説明します。高度な情報 については、「about_PSSession_Details」を参照してください。 注: PSSession は、Windows PowerShell リモート処理インフラストラクチャを使用します。 PSSession を使用するには、ローカル コンピューターとリモート コンピューターがリモート 処理用に構成されている必要があります。詳細については、「about_Remote_Requirements」 を参照してください。 Windows Vista 以降のバージョンの Windows で、ローカル コンピューター上に PSSession を作成するには、Windows PowerShell を起動する際に [管理者として実行] を指定する必要 があります。 セッションとは セッションとは、Windows PowerShell が実行される環境のことです。 Windows PowerShell を起動するたびに、セッションが自動的に作成されます。ユーザーは、そのセッ ションでコマンドを実行できます。モジュールやスナップインなどの項目をセッションに追加すること も、変数、関数、エイリアスなどの項目を作成することもできます。これらの項目はセッションにのみ 存在し、セッションが終了すると削除されます。 "Windows PowerShell セッション" または "PSSession" と呼ばれる追加のセッションを、ローカル コンピューターまたはリモート コンピューター上に作成することもできます。既定のセッションと 同様に、PSSession でもコマンドを実行し、項目の追加と作成を行うことができます。 ただし、自動的に開始されるセッションとは異なり、作成した PSSession はユーザー自身で制御で きます。PSSession は取得、作成、構成、および削除が可能です。また、複数のコマンドを同じ PSSession で実行できます。PSSession は、セッションから削除するまで、開かれたまま使用可能 な状態で残ります。 リモート コンピューターで一連の関連コマンドを実行するには、通常は PSSession を作成しま す。リモート コンピューター上に PSSession を作成すると、Windows PowerShell はリモート コンピューターに対する固定接続を確立し、セッションをサポートします。 Invoke-Command コマンドレットまたは Enter-PSSession コマンドレットの computerName パラ メーターを使用してリモート コマンドを実行するか、対話型のセッションを開始した場合、Windows PowerShell はリモート コンピューター上に一時セッションを作成し、コマンドが完了するか対話 型のセッションが終了すると、そのセッションを閉じます。このような一時セッションをユーザー が制御することはできません。また、このような一時セッションは、複数のコマンドや複数の対話 セッションには使用できません。 Windows PowerShell における "現在のセッション" は、使用中のセッションのことです。"現在 のセッション" という言葉は、一時セッションや PSSession を含め、あらゆる種類のセッションに ついて使用されることがあります。 PSSession を使用する理由 PSSession は、リモート コンピューターへの固定接続が必要な場合に使用します。PSSession で は、変数の値、関数の内容、エイリアスの定義などのデータを共有する、一連のコマンドを実行できます。 PSSession を作成せずにリモート コマンドを実行することもできます。リモート処理に対応したコ マンドレットの ComputerName パラメーターを使用すると、1 台または多数のコンピューター上で、 単一のコマンドまたは一連の関連のないコマンドを実行できます。 Invoke-Expression または Enter-PSSession の ComputerName パラメーターを使用した場合、 Windows PowerShell はリモート コンピューターへの一時接続を確立し、コマンドが完了するとその 接続を閉じます。接続が閉じられると、作成したすべてのデータ要素は削除されます。 Get-Eventlog や Get-WmiObject など、ComputerName パラメーターを持つその他のコマンドレットは、 さまざまなリモート処理テクノロジを使用してデータを収集します。いずれも、PSSession のような 固定接続は作成しません。 PSSession の作成方法 PSSession を作成するには、New-PSSession コマンドレットを使用します。リモート コンピュータ ー上に PSSession を作成するには、New-PSSession コマンドレットの ComputerName パラメータ ーを使用します。 たとえば、次のコマンドを実行すると、Server01 コンピューター上に新しい PSSession が作成され ます。 new-pssession -computername Server01 コマンドを送信すると、New-PSSession によって PSSession が作成され、PSSession を表すオブジェ クトが返されます。PSSession の作成時にオブジェクトを変数に保存することも、Get-PSSession コ マンドを使用して後で PSSession を取得することもできます。 たとえば、次のコマンドを実行すると、Server01 コンピューター上に新しい PSSession が作成 され、作成されたオブジェクトが $ps 変数に保存されます。 $ps = new-pssession -computername Server01 複数のコンピューター上に PSSession を作成する方法 複数のコンピューター上に PSSession を作成するには、New-PSSession コマンドレットの ComputerName パラメーターを使用します。一連のリモート コンピューターの名前をコンマ区切り で入力します。 たとえば、Server01、Server02、Server03 の各コンピューター上に PSSession を作成するには、次のよ うに入力します。 new-PSSession -computername Server01, Server02, Server03 New-PSSession により、各リモート コンピューター上に PSSession が 1 つ作成されます。 PSSession を取得する方法 現在のセッションで作成された PSSession を取得するには、Get-PSSession コマンドレットを使 用します。Get-PSSession は、New-PSSession が返すオブジェクトと同じ種類のオブジェクトを 返します。 次のコマンドを実行すると、現在のセッションで作成されたすべての PSSession を取得できます。 get-PSSession 既定では、PSSession の ID と既定の表示名が表示されます。セッションの作成時には、別の 表示名を付けることができます。 Id Name ComputerName State ConfigurationName --- ---- ------------ ----- --------------------- 1 Session1 Server01 Opened Microsoft.PowerShell 2 Session2 Server02 Opened Microsoft.PowerShell 3 Session3 Server03 Opened Microsoft.PowerShell PSSession を変数に保存することもできます。次のコマンドを実行すると、PSSession を取得し、 $ps123 変数に保存できます。 $ps123 = get-PSSession PSSession コマンドレットを使用する際には、ID、名前、またはインスタンス ID (GUID) を使 用して PSSession を参照できます。次のコマンドを実行すると、ID を使用して PSSession を取 得し、$ps01 変数に保存できます。 $ps01 = get-PSSession -id 1 Get-PSSession で取得されるのは、現在のセッションで作成された PSSession だけです。他の セッションまたは他のコンピューターで作成された PSSession は、そのセッションがローカル コンピューターに接続され、ローカル コンピューター上でコマンドが実行されている場合でも 取得されません。 PSSession でコマンドを実行する方法 1 つまたは複数の PSSession でコマンドを実行するには、Invoke-Command コマンドレットを使用し ます。Session パラメーターを使用して PSSession を指定し、ScriptBlock パラメーターを使 用してコマンドを指定します。 たとえば、$ps123 変数に保存されている 3 つの PSSession それぞれで Get-ChildItem ("dir") コマンドを実行するには、次のように入力します。 invoke-command -session $ps123 -scriptblock {get-childitem} PSSession を削除する方法 PSSession を終了する際には、Remove-PSSession コマンドレットを使用して PSSession を削除し、 使用されていたリソースを解放します。 remove-PSSession -session $ps - または - remove-PSSession -id 1 PSSession を削除しない場合、その PSSession は、現在のセッションを閉じるか Windows PowerShell を終了するまで、開かれたまま使用可能な状態で残ります。 New-PSSession の TimeOut パラメーターを使用して、アイドル状態の PSSession の有効期限を設定 することもできます。詳細については、「new-PSSession」を参照してください。 PSSession コマンドレット コマンドレット 説明 ----------------- ------------------------------------------------------ New-PSSession ローカル コンピューターまたはリモート コンピューター上 に新しい PSSession を作成します。 Get-PSSession 現在のセッションの PSSession を取得します。 Remove-PSSession 現在のセッションの PSSession を削除します。 Enter-PSSession 対話型のセッションを開始します。 Exit-PSSession 対話型のセッションを終了します。 PSSession コマンドレットの一覧を参照するには、次のコマンドを入力してください。 get-help *-PSSession 詳細情報 PSSession の詳細については、「about_PSSession_Details」を参照してください。 関連項目 about_Remote about_Remote_Requirements New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession Invoke-Command