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を参照してください

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

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

セッションとは

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

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

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

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

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

PowerShell では、"現在のセッション" は作業中のセッションです。 "現在のセッション" は、一時的なセッションや PSSession を含む任意のセッションを参照できます。

PSSession を使用する理由

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

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

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

ComputerName パラメーターを持つその他のコマンドレット (たとえばGet-EventlogGet-WmiObject、さまざまなリモート処理テクノロジを使用してデータを収集します)。 PSSession のような永続的な接続は作成しません。

PSSession を作成する方法

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

たとえば、次のコマンドは、Server01 コンピューターに新しい PSSession を作成します。

New-PSSession -ComputerName Server01

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

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

$ps = New-PSSession -ComputerName Server01

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

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

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

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession は、各リモート コンピューターに 1 つの PSSession を作成します。

PSSessions を取得する方法

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

PSSessions を変数に保存することもできます。 次のコマンドは、PSSessions を取得し、$ps 123 変数に保存します。

$ps123 = Get-PSSession

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

$ps01 = Get-PSSession -Id 1

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

Get-PSSession -ComputerName Server01

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

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

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

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

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 を削除します

Note

切断されたセッションは、Windows でのみサポートされます。 、Connect-PSSessionDisconnect-PSSessionおよびReceive-PSSessionコマンドレットは、Windows でのみ使用できます。 切断されたセッションの詳細については、about_Remote_Disconnected_Sessionを参照してください

詳細情報

PSSessions の詳細については、about_PSSession_Detailsを参照してください

関連項目