次の方法で共有


Enter-PSSession

リモート コンピューターとの対話型セッションを開始します。

構文

Enter-PSSession
     [-ComputerName] <String>
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-Port <Int32>]
     [-UseSSL]
     [-ApplicationName <String>]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [[-Session] <PSSession>]
     [<CommonParameters>]
Enter-PSSession
     [[-ConnectionUri] <Uri>]
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-AllowRedirection]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-InstanceId <Guid>]
     [<CommonParameters>]
Enter-PSSession
     [[-Id] <Int32>]
     [<CommonParameters>]
Enter-PSSession
     [-Name <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMId] <Guid>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMName] <String>
     -Credential <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-ContainerId] <String>
     [-ConfigurationName <String>]
     [-RunAsAdministrator]
     [<CommonParameters>]

説明

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

通常、ComputerName パラメーターを使用して、リモート コンピューターの名前を指定します。 ただし、対話型セッションに New-PSSession コマンドレットを使用して作成したセッションを使用することもできます。 ただし、Disconnect-PSSessionConnect-PSSession、または Receive-PSSession コマンドレットを使用して、対話型セッションから切断したり、対話型セッションに再接続したりすることはできません。

対話型セッションを終了し、リモート コンピューターから切断するには、Exit-PSSession コマンドレットを使用するか、「exit」と入力します。

大事な

Enter-PSSession は、現在の対話型セッションを新しい対話型リモート セッションに置き換えるために設計されています。 関数またはスクリプト内から呼び出したり、powershell.exe 実行可能ファイルにコマンドとして渡したりしないでください。

例 1: 対話型セッションを開始する

PS C:\> Enter-PSSession
[localhost]: PS C:\>

このコマンドは、ローカル コンピューターで対話型セッションを開始します。 コマンド プロンプトが変わり、別のセッションでコマンドを実行していることが示されます。

入力したコマンドは新しいセッションで実行され、結果はテキストとして既定のセッションに返されます。

例 2: 対話型セッションを操作する

最初のコマンドでは、Enter-PSSession コマンドレットを使用して、リモート コンピューターである Server01 との対話型セッションを開始します。 セッションが開始されると、コマンド プロンプトがコンピューター名を含むように変更されます。

2 番目のコマンドは PowerShell プロセスを取得し、出力を Process.txt ファイルにリダイレクトします。 コマンドはリモート コンピューターに送信され、ファイルはリモート コンピューターに保存されます。

3 番目のコマンドでは、exit キーワードを使用して対話型セッションを終了し、接続を閉じます。 4 番目のコマンドは、Process.txt ファイルがリモート コンピューター上にあることを確認します。 ローカル コンピューター上の Get-ChildItem ("dir") コマンドでファイルが見つかりません。

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process powershell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
PS C:\> dir C:\ps-test\Process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\Process.txt' because it does not exist.
At line:1 char:4
+ dir <<<<  C:\ps-test\Process.txt

このコマンドは、リモート コンピューターとの対話型セッションで作業する方法を示します。

例 3: Session パラメーターを使用する

PS> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>

これらのコマンドでは、Enter-PSSession パラメーターを使用して、既存の PowerShell セッション (PSSession) で対話型セッションを実行します。

例 4: 対話型セッションを開始し、ポートと資格情報のパラメーターを指定する

PS> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS>

このコマンドは、Server01 コンピューターとの対話型セッションを開始します。 Port パラメーターを使用してポートと Credential パラメーターを指定し、リモート コンピューターに接続するアクセス許可を持つユーザーのアカウントを指定します。

例 5: 対話型セッションを停止する

PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
PS>

この例では、対話型セッションを開始および停止する方法を示します。 最初のコマンドでは、Enter-PSSession コマンドレットを使用して、Server01 コンピューターとの対話型セッションを開始します。

2 番目のコマンドでは、Exit-PSSession コマンドレットを使用してセッションを終了します。 また、exit キーワードを使用して対話型セッションを終了することもできます。 Exit-PSSessionexit は同じ効果を持ちます。

パラメーター

-AllowRedirection

代替の Uniform Resource Identifier (URI) へのこの接続のリダイレクトを許可します。 既定では、リダイレクトは許可されません。

ConnectionURI パラメーターを使用すると、リモート宛先は別の URI にリダイレクトする命令を返すことができます。 既定では、PowerShell は接続をリダイレクトしませんが、このパラメーターを使用して接続のリダイレクトを許可できます。

MaximumConnectionRedirectionCount セッション オプションの値を変更して、接続をリダイレクトする回数を制限することもできます。 コマンドレットの New-PSSessionOption パラメーターを使用するか、 設定変数の MaximumConnectionRedirectionCount $PSSessionOption 設定します。 既定値は 5 です。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ApplicationName

接続 URI のアプリケーション名セグメントを指定します。 コマンドで ConnectionURI パラメーターを使用しない場合は、このパラメーターを使用してアプリケーション名を指定します。

既定値は、ローカル コンピューターの $PSSessionApplicationName 基本設定変数の値です。 この基本設定変数が定義されていない場合、既定値は WSMAN です。 この値は、ほとんどの用途に適しています。 詳細については、about_Preference_Variablesを参照してください。

WinRM サービスは、アプリケーション名を使用して、接続要求をサービスするリスナーを選択します。 このパラメーターの値は、リモート コンピューター上のリスナーの URLPrefix プロパティの値と一致する必要があります。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Authentication

ユーザーの資格情報を認証するために使用するメカニズムを指定します。 このパラメーターに使用できる値は次のとおりです。

  • デフォルト
  • 基本的な
  • Credssp
  • ダイジェスト
  • Kerberos
  • 交渉する
  • NegotiateWithImplicitCredential

既定値は Default です。

CredSSP 認証は、Windows Vista、Windows Server 2008、およびそれ以降のバージョンの Windows オペレーティング システムでのみ使用できます。

このパラメーターの値の詳細については、「AuthenticationMechanism Enum」を参照してください。

注意

ユーザーの資格情報が認証されるリモート コンピューターに渡される資格情報セキュリティ サポート プロバイダー (CredSSP) 認証は、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムにより、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターが侵害された場合、それに渡される資格情報を使用してネットワーク セッションを制御できます。

型:AuthenticationMechanism
指定可能な値:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-CertificateThumbprint

このアクションを実行するアクセス許可を持つユーザー アカウントのデジタル公開キー証明書 (X509) を指定します。 証明書の拇印を入力します。

証明書は、クライアント証明書ベースの認証で使用されます。 これらはローカル ユーザー アカウントにのみマップできます。ドメイン アカウントでは機能しません。

証明書を取得するには、PowerShell 証明書: ドライブの Get-Item または Get-ChildItem コマンドを使用します。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ComputerName

コンピューター名を指定します。 このコマンドレットは、指定されたリモート コンピューターとの対話型セッションを開始します。 コンピューター名を 1 つだけ入力します。 既定値はローカル コンピューターです。

NetBIOS 名、IP アドレス、またはコンピューターの完全修飾ドメイン名を入力します。 コンピューター名をパイプして Enter-PSSessionすることもできます。

ComputerName パラメーターの値に IP アドレスを使用するには、コマンドに Credential パラメーターを含める必要があります。 また、HTTPS トランスポート用にコンピューターを構成するか、リモート コンピューターの IP アドレスをローカル コンピューターの WinRM TrustedHosts リストに含める必要があります。 TrustedHosts の一覧にコンピューター名を追加する手順については、about_Remote_Troubleshootingの「信頼されたホストの一覧にコンピューターを追加する方法」を参照してください。

手記

Windows オペレーティング システムで、ローカル コンピューターを ComputerName パラメーターの値に含めるには、[管理者として実行] オプションを使用して PowerShell を起動する必要があります。

型:String
Aliases:Cn
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ConfigurationName

対話型セッションに使用されるセッション構成を指定します。

セッション構成の構成名または完全修飾リソース URI を入力します。 構成名のみを指定すると、次のスキーマ URI が先頭に付加されます: http://schemas.microsoft.com/powershell

セッションのセッション構成は、リモート コンピューターにあります。 指定したセッション構成がリモート コンピューターに存在しない場合、コマンドは失敗します。

既定値は、ローカル コンピューターの $PSSessionConfigurationName 基本設定変数の値です。 この基本設定変数が設定されていない場合、既定値は Microsoft.PowerShell です。 詳細については、about_Preference_Variablesを参照してください。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ConnectionUri

セッションの接続エンドポイントを定義する URI を指定します。 URI は完全修飾されている必要があります。 この文字列の形式は次のとおりです。

<Transport>://<ComputerName>:<Port>/<ApplicationName>

既定値は次のとおりです。

http://localhost:5985/WSMAN

ConnectionURIを指定しない場合は、UseSSLComputerNameポート、および ApplicationName パラメーターを使用して、ConnectionURI 値を指定できます。

URI のトランスポート セグメントの有効な値は、HTTP と HTTPS です。 トランスポート セグメントで接続 URI を指定してもポートを指定しない場合、セッションは標準ポート (HTTP の場合は 80、HTTPS の場合は 443) を使用して作成されます。 PowerShell リモート処理に既定のポートを使用するには、HTTP の場合はポート 5985、HTTPS には 5986 を指定します。

宛先コンピューターが接続を別の URI にリダイレクトする場合、コマンドで AllowRedirection パラメーターを使用しない限り、PowerShell はリダイレクトを禁止します。

型:Uri
Aliases:URI, CU
配置:1
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-ContainerId

コンテナーの ID を指定します。

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Credential

このアクションを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01Domain01\User01などのユーザー名を入力するか、 コマンドレットによって生成された Get-Credential オブジェクトを入力します。 ユーザー名を入力すると、パスワードの入力を求められます。

資格情報は PSCredential オブジェクトに格納され、パスワードは SecureStringとして格納されます。

手記

SecureString データ保護 の詳細については、「SecureString のセキュリティ 方法」を参照してください。.

型:PSCredential
配置:1
規定値:Current user
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-EnableNetworkAccess

このコマンドレットが、ループバック セッションに対話型セキュリティ トークンを追加することを示します。 対話型トークンを使用すると、他のコンピューターからデータを取得するコマンドをループバック セッションで実行できます。 たとえば、リモート コンピューターからローカル コンピューターに XML ファイルをコピーするコマンドをセッションで実行できます。

ループバック セッションは、同じコンピューターで開始および終了する PSSession です。 ループバック セッションを作成するには、ComputerName パラメーターを省略するか、その値を . (ドット)、localhost、またはローカル コンピューターの名前。

既定では、ループバック セッションはネットワーク トークンを使用して作成され、リモート コンピューターに対して認証するための十分なアクセス許可が提供されない可能性があります。

EnableNetworkAccess パラメーターは、ループバック セッションでのみ有効です。 リモート コンピューター セッションを作成するときに EnableNetworkAccess を使用すると、コマンドは成功しますが、パラメーターは無視されます。

セッション資格情報を他のコンピューターに委任する Authentication パラメーターの CredSSP 値を使用して、ループバック セッションでリモート アクセスを許可することもできます。

このパラメーターは、Windows PowerShell 3.0 で導入されました。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Id

既存のセッションの ID を指定します。 Enter-PSSession は、指定されたセッションを対話型セッションに使用します。

セッションの ID を検索するには、Get-PSSession コマンドレットを使用します。

型:Int32
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-InstanceId

既存のセッションのインスタンス ID を指定します。 Enter-PSSession は、指定されたセッションを対話型セッションに使用します。

インスタンス ID は GUID です。 セッションのインスタンス ID を検索するには、Get-PSSession コマンドレットを使用します。 セッション名前、または ID パラメーターを使用して、既存のセッションを指定することもできます。 または、ComputerName パラメーターを使用して、一時的なセッションを開始できます。

型:Guid
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Name

既存のセッションのフレンドリ名を指定します。 Enter-PSSession は、指定されたセッションを対話型セッションに使用します。

指定した名前が複数のセッションと一致する場合、コマンドは失敗します。 セッションInstanceId、または Id パラメーターを使用して、既存のセッションを指定することもできます。 または、ComputerName パラメーターを使用して、一時的なセッションを開始できます。

セッションのフレンドリ名を確立するには、 コマンドレットの New-PSSession パラメーターを使用します。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Port

このコマンドに使用するリモート コンピューター上のネットワーク ポートを指定します。 リモート コンピューターに接続するには、リモート コンピューターが接続で使用するポートをリッスンしている必要があります。 既定のポートは、HTTP の WinRM ポートである 5985 と、HTTPS の WinRM ポートである 5986 です。

代替ポートを使用する前に、そのポートでリッスンするようにリモート コンピューター上の WinRM リスナーを構成する必要があります。 リスナーを構成するには、次のコマンドを使用します。

  1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
  2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}

必要な場合を除き、Port パラメーターは使用しないでください。 コマンドのポート設定は、コマンドを実行するすべてのコンピューターまたはセッションに適用されます。 代替ポート設定により、コマンドがすべてのコンピューターで実行できなくなる可能性があります。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-RunAsAdministrator

PSSession が管理者として実行されることを示します。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Session

対話型セッションに使用する PowerShell セッション (PSSession) を指定します。 このパラメーターはセッション オブジェクトを受け取ります。 InstanceId、または ID パラメーターを使用して、PSSessionを指定することもできます。

セッション オブジェクトを含む変数、またはセッション オブジェクトを作成または取得するコマンド (New-PSSessionGet-PSSession コマンドなど) を入力します。 セッション オブジェクトをパイプして Enter-PSSessionすることもできます。 このパラメーターを使用して送信できる PSSession は 1 つだけです。 PSSession を複数含む変数入力すると、コマンドは失敗します。

Exit-PSSession または exit キーワードを使用すると、対話型セッションは終了しますが、作成した PSSession は開いたままで使用できます。

型:PSSession
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-SessionOption

セッションの詳細オプションを設定します。 コマンドレットを使用して作成するなど、New-PSSessionOption オブジェクトを入力するか、キーがセッション オプション名で値がセッション オプション値であるハッシュ テーブルを入力します。

オプションの既定値は、設定されている場合、$PSSessionOption 基本設定変数の値によって決まります。 それ以外の場合、既定値はセッション構成で設定されたオプションによって確立されます。

セッション オプションの値は、$PSSessionOption 基本設定変数およびセッション構成で設定されたセッションの既定値よりも優先されます。 ただし、セッション構成で設定された最大値、クォータ、または制限よりも優先されません。

デフォルト値を含むセッション・オプションの説明については、New-PSSessionOptionを参照してください。 $PSSessionOption 基本設定変数の詳細については、about_Preference_Variablesを参照してください。 セッション構成の詳細については、「about_Session_Configurations」を参照してください。

型:PSSessionOption
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-UseSSL

このコマンドレットが Secure Sockets Layer (SSL) プロトコルを使用してリモート コンピューターへの接続を確立することを示します。 既定では、SSL は使用されません。

WS-Management は、ネットワーク経由で送信されるすべての PowerShell コンテンツを暗号化します。 UseSSL パラメーターは、HTTP 接続ではなく HTTPS 接続経由でデータを送信する追加の保護です。

このパラメーターを使用しても、コマンドに使用されているポートで SSL を使用できない場合、コマンドは失敗します。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-VMId

仮想マシンの ID を指定します。

型:Guid
Aliases:VMGuid
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-VMName

仮想マシンの名前を指定します。

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

入力

String

コンピューター名を文字列としてこのコマンドレットにパイプできます。

PSSession

セッション オブジェクトをこのコマンドレットにパイプできます。

出力

None

このコマンドレットは出力を返しません。

メモ

Windows PowerShell には、Enter-PSSessionの次のエイリアスが含まれています。

  • etsn

リモート コンピューターに接続するには、リモート コンピューターの Administrators グループのメンバーである必要があります。 ローカル コンピューターで対話型セッションを開始するには、[管理者として実行] オプションを使用して PowerShell を起動する必要があります。

Enter-PSSessionを使用すると、リモート コンピューター上のユーザー プロファイルが対話型セッションに使用されます。 PowerShell モジュールを追加するコマンドやコマンド プロンプトを変更するコマンドなど、リモート ユーザー プロファイルのコマンドは、リモート プロンプトが表示される前に実行します。

Enter-PSSession は、ローカル コンピューターの UI カルチャ設定を対話型セッションに使用します。 ローカル UI カルチャを検索するには、$UICulture 自動変数を使用します。

Enter-PSSession には、Get-CommandOut-Default、および Exit-PSSession コマンドレットが必要です。 これらのコマンドレットがリモート コンピューターのセッション構成に含まれていない場合、Enter-PSSession コマンドは失敗します。

コマンドを解析してリモート コンピューターに送信する前に解釈する Invoke-Commandとは異なり、Enter-PSSession はコマンドを解釈せずにリモート コンピューターに直接送信します。

入力するセッションがコマンドの処理中にビジー状態の場合は、PowerShell が Enter-PSSession コマンドに応答するまでに遅延が発生する可能性があります。 セッションが使用可能になるとすぐに接続されます。 Enter-PSSession コマンドを取り消すには、Ctrl キー +Cします。