次の方法で共有


about_PSSession_Details

トピック
    about_PSSession_Details

簡易説明
    Windows PowerShell セッションについて、およびリモート コマンドを使用する際に Windows 
    PowerShell セッションが果たす役割について、詳しく説明します。

詳細説明
    セッションとは、Windows PowerShell が実行される環境のことです。セッションは Windows 
    PowerShell を起動すると自動的に作成されます。自分のコンピューターまたは他のコンピューター
    に、"Windows PowerShell セッション" または "PSSession" と呼ばれる追加のセッションを作成
    することもできます。

    Windows PowerShell によって自動的に作成されるセッションとは異なり、自分で作成した PSSession は
    自ら制御、管理する必要があります。

    PSSession は、リモート コンピューティングにおいて重要な役割を果たします。リモート コンピ
    ューターに接続される PSSession を作成すると、Windows PowerShell はリモート コンピューターに
    対する固定接続を確立し、PSSession をサポートします。この PSSession を使用して、データを
    共有する一連のコマンド、関数、およびスクリプトを実行できます。

    ここでは、Windows PowerShell でのセッションと PSSession について詳しく説明します。セッションで
    実行できるタスクの基本的な情報については、「about_PSSessions」を参照してください。

  セッションについて

    技術的に言えば、セッションは Windows PowerShell の実行環境です。各セッションには、
    System.Management.Automation エンジンのインスタンスと、Windows PowerShell が実行される
    ホスト プログラムが含まれます。ホストには、使い慣れた Windows PowerShell コンソールの
    ほか、コマンドを実行する Cmd.exe などのプログラムや、Windows PowerShell をホストするよ
    うに作成された Windows PowerShell Integrated Scripting Environment (ISE) などのプログ
    ラムがあります。Windows の側から見ると、セッションはターゲット コンピューター上の 
    Windows プロセスです。

    各セッションは、別々に構成されます。各セッションには、独自のプロパティ、実行ポリシー、
    およびプロファイルが含まれます。セッションの作成時に存在する環境は、コンピューターの環境
    を変更しても、セッションの有効期間中は保持されます。あらゆるセッションはグローバル 
    スコープで作成されます。スクリプトで作成するセッションも同様です。

    セッションで一度に実行できるコマンド (またはコマンド パイプライン) は 1 つだけです。2 つ目
    のコマンドを同期的に (一度に 1 つずつ) 実行した場合は、最初のコマンドが完了するのを最大 
    4 分間待機します。一方、非同期的に (同時に) 実行した場合は、失敗に終わります。

  PSSession について

    セッションは、Windows PowerShell を起動するたびに作成されます。また、Windows PowerShell 
    は、個々のコマンドを実行するために一時セッションを作成します。ただし、自分で制御および
    管理できるセッション ("Windows PowerShell セッション" または "PSSession") を作成するこ
    ともできます。
 
    PSSession は、リモート コマンドを実行するうえで重要です。Invoke-Command コマンドレット
    または Enter-PSSession コマンドレットの ComputerName パラメーターを使用した場合、Windows 
    PowerShell はコマンドを実行するための一時セッションを確立し、コマンドまたは対話型のセッションが
    完了するとそのセッションを閉じます。

    ただし、New-PSSession コマンドレットを使用して PSSession を作成した場合、Windows PowerShell は、
    複数のコマンドや対話型のセッションを実行できる永続的なセッションをリモート コンピューターで確立
    します。作成した PSSession は、削除するか作成元のセッションを閉じるまで、開かれたまま使用可能な
    状態で残ります。

    リモート コンピューター上に PSSession を作成した場合、リモート コンピューター上に PowerShell 
    プロセスが作成され、ローカル コンピューターからリモート コンピューター上のプロセスへの接続が確
    立されます。ローカル コンピューター上に PSSession を作成した場合、新しいプロセスと接続はいず
    れもローカル コンピューター上に作成されます。


  PSSession はいつ必要になるか

    Invoke-Command と Enter-PSSession には、ComputerName パラメーターと Session パラメーター
    の両方があります。そのどちらかを使用して、リモート コマンドを実行できます。

    1 台または多数のコンピューター上で単一のコマンドまたは一連の関連のないコマンドを実行するに
    は、ComputerName パラメーターを使用します。

    データを共有するコマンドを実行するには、リモート コンピューターへの固定接続が必要です。その
    場合は、PSSession を作成し、Session パラメーターを使用して PSSession でコマンドを実行します。

    Get-Process、Get-Service、Get-EventLog、Get-WmiObject など、リモート コンピューターから
    データを取得する他の多くのコマンドレットには、ComputerName パラメーターのみが用意されて
    います。これらのコマンドレットは、Windows PowerShell リモート処理以外のテクノロジを使用
    して、データをリモートで収集します。これらのコマンドレットには Session パラメーターはあ
    りませんが、Invoke-Command コマンドレットを使用すると、これらのコマンドを PSSession で
    実行できます。
 

  PSSession はどのようにして作成するか

    PSSession を作成するには、New-PSSession コマンドレットを使用します。New-PSSession を使
    用すると、PSSession をローカル コンピューターまたはリモート コンピューター上に作成できます。


  PSSession はどのコンピューター上にも作成できるか

    リモート コンピューターに接続される PSSession を作成するには、コンピューターが Windows 
    PowerShell のリモート処理用に構成されている必要があります。現在のユーザーは、リモート コ
    ンピューターの Administrators グループのメンバーであるか、Administrators グループのメ
    ンバーの資格情報を提供できる必要があります。詳細については、
    「about_Remote_Requirements」を参照してください。


  他のユーザーが作成した PSSession を自分のコンピューターで表示することはできるか

    できません。取得して管理できるのは、現在のセッションで作成した PSSession に限られます。他の
    ユーザーが作成した PSSession は、そのユーザーがローカル コンピューターでコマンドを実行した場
    合でも、表示できません。


  PSSession でバックグラウンド ジョブを実行できるか

    できます。バックグラウンド ジョブは、現在のセッションと対話することなくバックグラウンド
    で非同期的に実行されるコマンドです。ジョブを開始するコマンドを送信すると、コマンドから
    はジョブ オブジェクトが返されますが、ジョブは完了するまでバックグラウンドで実行され続け
    ます。

    バックグラウンド ジョブをローカル コンピューターで開始するには、Start-Job コマンドを使用し
    ます。バックグラウンド ジョブは、(ComputerName パラメーターを使用して) 一時接続で実行するこ
    とも、(Session パラメーターを使用して) PSSession で実行することもできます。

    バックグラウンド ジョブをリモート コンピューターで開始するには、Invoke-Command コマンド
    レットとその AsJob パラメーターを使用するか、Invoke-Command コマンドレットを使用して 
    Start-Job コマンドをリモート コンピューターで実行します。AsJob パラメーターを使用する場
    合は、ComputerName パラメーターまたは Session パラメーターを使用できます。

    Invoke-Command を使用して Start-Job コマンドを実行する場合は、コマンドを PSSession で実行
    する必要があります。ComputerName パラメーターを使用すると、ジョブ オブジェクトが返された
    ときに Windows PowerShell が接続を終了するため、ジョブが中断されます。

    詳細については、「about_Jobs」を参照してください。


  対話型のセッションを実行できるか

    できます。リモート コンピューターとの対話型のセッションを開始するには、Enter-PSSession 
    コマンドレットを使用します。対話型のセッション中は、リモート コンピューターで直接入力した場
    合と同様に、入力したコマンドがリモート コンピューターで実行されます。

    対話型のセッションは、(ComputerName パラメーターを使用して) 一時セッションで実行すること
    も、(Session パラメーターを使用して) PSSession で実行することもできます。PSSession を使用
    すると、以前のコマンドのデータ、および対話型のセッション中に生成されるすべてのデータが 
    PSSession に保持され、後のコマンドでも使用できるようになります。

    対話型のセッションを終了しても、PSSession は開かれたまま残り、引き続き使用することができ
    ます。

    詳細については、「Enter-PSSession」および「Exit-PSSession」を参照してください。
 

  PSSession は必ず削除する必要があるか

    はい。PSSession はプロセスです。プロセスとは、ユーザーが使用していない間でもメモリなどの
    リソースを消費する自己完結型の環境です。PSSession は、使用を終了したら削除してください。
    複数の PSSession を作成する場合は、使用していない PSSession を終了し、使用中の PSSession 
    だけを維持するようにしてください。

    PSSession を削除するには、Remove-PSSession コマンドレットを使用します。このコマンドレット
    は PSSession を削除し、PSSession によって使用されていたすべてのリソースを解放します。

    New-PSSession の TimeOut パラメーターを使用して、指定した時間の経過後にアイドル状態の 
    PSSession を閉じることもできます。詳細については、「New-PSSession」を参照してください。

    PSSession を削除せず、タイムアウトも設定しなかった場合は、PSSession を閉じるか、その作成元の
    セッションを閉じるか、または Windows PowerShell を終了するまで、PSSession は開かれたまま
    残り、引き続き使用することができます。ただし、リモート コンピューター上の PSSession は、
    リモート コンピューターが 4 分間応答しなくなると自動的に切断されます (リモート コンピュー
    ターは、3 分ごとにハートビート パルスを送信するように構成されています)。

    PSSession オブジェクトを変数に保存してから PSSession を削除するか、タイムアウトさせた場合、
    PSSession オブジェクトは変数内に保持されますが、PSSession はアクティブではなくなり、使用や復旧
    ができなくなります。
    

  セッションや PSSession はすべて同じように動作するか

    いいえ。開発者は、選択したプロバイダーとコマンドレットだけが含まれるカスタム セッションを作
    成できます。あるセッションで機能するコマンドが別のセッションで機能しない場合は、セッション
    が制限されている可能性があります。


関連項目
    about_Jobs
    about_PSSessions
    about_Remote 
    about_Remote_Requirements
    Invoke-Command
    New-PSSession 
    Get-PSSession 
    Remove-PSSession 
    Enter-PSSession 
    Exit-PSSession