about_PSSessions

簡単な説明

PowerShell セッション (PSSessions) について説明し、リモート コンピューターへの永続的な接続を確立する方法について説明します。

長い説明

リモート コンピューターで PowerShell コマンドを実行するには、コマンドレットの ComputerName パラメーターを使用するか、PowerShell セッション (PSSession) を作成し、PSSession でコマンドを実行します。

PSSession を作成すると、PowerShell によってリモート コンピューターへの永続的な接続が確立されます。 PSSession を使用して、リモート コンピューターで一連の関連コマンドを実行します。 同じ PSSession で実行されるコマンドは、変数、エイリアス、関数の値などのデータを共有できます。

ローカル コンピューターに PSSession を作成し、そのコンピューターでコマンドを実行することもできます。 ローカルの PSSession では、PowerShell リモート処理インフラストラクチャを使用して PSSession を作成および維持します。

Windows PowerShell 3.0 から、Windows の PSSession は、作成されるセッションとは独立しています。 アクティブな PSSession は、リモート コンピューター (または接続のリモート側または "サーバー側" にあるコンピューター) に保持されます。 その結果、Windows では、リモート Windows コンピューター上の PSSession から切断し、後で同じコンピューターまたは別の Windows コンピューターから再接続できます。

このトピックでは、PSSession を作成、使用、取得、および削除する方法について説明します。 詳細については、「詳細」を 参照about_PSSession_Details

注: PSSessions では、PowerShell リモート処理インフラストラクチャが使用されます。 PSSessions を使用するには、リモート処理用にローカル コンピューターとリモート コンピューターを構成する必要があります。 詳細については、「about_Remote_Requirements」を参照してください。

Windows Vista 以降のバージョンの Windows では、ローカル コンピューターに PSSession を作成するには、[管理者として実行] オプションを使用して PowerShell を起動する必要があります。

セッションとは

セッションは、PowerShell が実行される環境です。

PowerShell を起動するたび、セッションが作成され、セッションでコマンドを実行できます。 モジュールやスナップインなどの項目をセッションに追加し、変数、関数、エイリアスなどの項目を作成することもできます。 これらの項目はセッションにのみ存在し、セッションが終了すると削除されます。

ローカル コンピューターまたはリモート コンピューターで、"PowerShell セッション" または "PSSessions" と呼ばれるユーザー管理セッションを作成することもできます。 既定のセッションと同様に、PSSession でコマンドを実行し、項目を追加および作成できます。 ただし、自動的に開始するセッションとは異なり、作成する PSSession を制御できます。 それらを取得、作成、構成、削除し、切断して再接続し、同じ PSSession で複数のコマンドを実行できます。 PSSession は、削除するか、またはタイム アウトするまで使用できます。

通常、PSSession を作成して、リモート コンピューターで一連の関連コマンドを実行します。 リモート コンピューターに PSSession を作成すると、PowerShell はセッションをサポートするためにリモート コンピューターへの永続的な接続を確立します。

または コマンドレットの ComputerName Invoke-Command Enter-PSSession パラメーターを使用してリモート コマンドを実行する場合、または対話型セッションを開始する場合、PowerShell はリモート コンピューター上に一時セッションを作成し、コマンドが完了するとすぐに、または対話型セッションが終了するとすぐにセッションを閉じます。 これらの一時セッションを制御することはできません。また、1 つ以上のコマンドまたは 1 つの対話型セッションに使用することはできません。

PowerShell では、"現在のセッション" は作業しているセッションです。 "現在のセッション" は、一時セッションや PSSession など、任意のセッションを参照できます。

PSSession を使用する理由

リモート コンピューターへの永続的な接続が必要な場合は、PSSession を使用します。 PSSession を使用すると、変数の値、関数の内容、別名の定義など、データを共有する一連のコマンドを実行できます。

PSSession を作成せずにリモート コマンドを実行できます。 リモート対応 コマンドレットの ComputerName パラメーターを使用して、1 つ以上のコンピューターで 1 つのコマンドまたは一連の関連のないコマンドを実行します。

または の ComputerName Invoke-Command Enter-PSSessionパラメーターを使用すると、PowerShell はリモート コンピューターへの一時的な接続を確立し、コマンドが完了するとすぐに接続を閉じます。 作成したデータ要素は、接続を閉じたときに失われます。

や などの ComputerName パラメーターを持つ他 Get-Eventlog Get-WmiObjectのコマンドレットでは、さまざまなリモート処理テクノロジを使用してデータを収集します。 [なし] を選択すると、PSSession のような永続的な接続が作成されます。

PSSession を作成する方法

PSSession を作成するには、 コマンドレットを使用 New-PSSession します。 リモート コンピューターに PSSession を作成するには、 コマンドレット の ComputerName パラメーターを使用 New-PSSession します。

たとえば、次のコマンドを実行すると、Server01 コンピューターに新しい PSSession が作成されます。

New-PSSession -ComputerName Server01

コマンドを送信すると、 New-PSSession PSSession が作成され、PSSession を表す オブジェクトが返されます。 PSSession を作成するときにオブジェクトを変数に保存するか、 コマンドを使用して後で PSSession Get-PSSession を取得できます。

たとえば、次のコマンドは、Server01 コンピューターに新しい PSSession を作成し、結果の オブジェクトを $ps します。

$ps = New-PSSession -ComputerName Server01

複数のコンピューターで PSSessions を作成する方法

複数のコンピューターに PSSessions を作成するには、 コマンドレット の ComputerName パラメーターを使用 New-PSSession します。 リモート コンピューターの名前をコンマ区切りリストに入力します。

たとえば、Server01、Server02、Server03 コンピューターに PSSessions を作成するには、次のコマンドを入力します。

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession では、リモート コンピューターごとに 1 つの PSSession が作成されます。

PSSessions を取得する方法

現在のセッションで作成された PSSession Get-PSSession を取得するには、ComputerName パラメーターを指定せずに コマンドレット を使用 します。 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

PSSessions を変数に保存できます。 次のコマンドは PSSession を取得 $し、ps123 変数に保存します。

$ps123 = Get-PSSession

PSSession コマンドレットを使用する場合は、その ID、名前、またはインスタンス ID (GUID) で PSSession を参照できます。 次のコマンドは、その ID で PSSession を取得し、 $ps01 変数に保存します。

$ps01 = Get-PSSession -Id 1

Windows PowerShell 3.0 から、PSSession はリモート コンピューターに保持されます。 特定のリモート コンピューターで作成した PSSession を取得するには、 コマンドレットの ComputerName パラメーターを使用 Get-PSSession します。 次のコマンドは、Server01 リモート コンピューターで作成した PSSession を取得します。 これには、現在のセッションで作成された PSSession と、ローカル コンピューターまたは他のコンピューター上の他のセッションで作成された PSSession が含まれます。

Get-PSSession -ComputerName Server01

2.0 Windows PowerShellでは、Get-PSSession現在のセッションで作成された PSSession のみを取得します。 セッションが接続され、ローカル コンピューターでコマンドが実行されている場合でも、他のセッションまたは他のコンピューターで作成された PSSession は取得されません。

PSSession でコマンドを実行する方法

1 つ以上の PSSession でコマンドを実行するには、 コマンドレットを使用 Invoke-Command します。 Session パラメーターを使用して PSSessions を指定し、 ScriptBlock パラメーターを使用 してコマンドを指定します。

たとえば、 Get-ChildItem $ps 123 変数に保存されている 3 つの PSSessions のそれぞれで ("dir") コマンドを実行するには、次のコマンドを入力します。

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

PSSessions を削除する方法

PSSession の使用が完了したら、 Remove-PSSession コマンドレットを使用して PSSession を削除し、使用しているリソースを解放します。

Remove-PSSession -Session $ps

または

Remove-PSSession -Id 1

リモート コンピューターから PSSession を削除するには、 コマンドレット の ComputerName パラメーターを使用 Remove-PSSession します。

Remove-PSSession -ComputerName Server01 -Id 1

PSSession を削除しない場合、PSSession は、タイム アウトするまで使用できます。

また、 コマンドレットの IdleTimeout New-PSSessionOption パラメーターを使用して、アイドル状態の PSSession の有効期限を設定することもできます。 詳細については、「 New-PSSessionOption」を参照してください

PSSession コマンドレット

PSSession コマンドレットの一覧については、次のコマンドを入力します。

Get-Help *-PSSession
  • Connect-PSSession: PSSession を現在のセッションに接続します
  • Disconnect-PSSession: 現在のセッションから PSSession を切断します
  • Enter-PSSession: 対話型セッションを開始します
  • Exit-PSSession: 対話型セッションを終了します
  • Get-PSSession: 現在のセッションの PSSession を取得します
  • New-PSSession: ローカルコンピューターまたはリモート コンピューターに新しい PSSession を作成します
  • Receive-PSSession: 切断されたセッションで実行されたコマンドの結果を取得します
  • Remove-PSSession: 現在のセッションの PSSession を削除します

注意

切断されたセッションは、接続されていないセッションでのみWindows。 、Connect-PSSessionDisconnect-PSSessionおよび コマンドレットReceive-PSSessionは、次のコマンドでのみWindows。 切断されたセッションの詳細については、次のページを about_Remote_Disconnected_Session

詳細情報

PSSessions の詳細については、「psSessions」を about_PSSession_Details

関連項目