次の方法で共有


New-PSSession

ローカル コンピューターまたはリモート コンピューターへの永続的な接続を作成します。

構文

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-Port <Int32>]
   [-UseSSL]
   [-ConfigurationName <String>]
   [-ApplicationName <String>]
   [-ThrottleLimit <Int32>]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-ThrottleLimit <Int32>]
   [-ConnectionUri] <Uri[]>
   [-AllowRedirection]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]

説明

New-PSSession コマンドレットは、ローカル コンピューターまたはリモート コンピューターにWindows PowerShell セッション (PSSession) を作成します。 PSSession を作成すると、Windows PowerShellリモート コンピューターへの永続的な接続が確立されます。

PSSession を使用して、関数や変数の値など、データを共有する複数のコマンドを実行します。 PSSession でコマンドを実行するには、Invoke-Command コマンドレットを使用します。 PSSession を使用してリモート コンピューターと直接対話するには、Enter-PSSession コマンドレットを使用します。 詳細については、「about_PSSessions (https://go.microsoft.com/fwlink/?LinkID=135181)」を参照してください。

Enter-PSSession または Invoke-CommandComputerName パラメーターを使用すると、PSSession を作成せずにリモート コンピューターでコマンドを実行できます。 ComputerName パラメーターを使用すると、Windows PowerShell は、コマンドで使用する一時的な接続を作成して閉じます。

例 1: ローカル コンピューターでセッションをCreateする

PS C:\> $s = New-PSSession

このコマンドは、ローカル コンピューターに新しい PSSession を作成し、 PSSession を $s 変数に保存します。

この PSSession を使用して、ローカル コンピューターでコマンドを実行できるようになりました。

例 2: リモート コンピューターでセッションをCreateする

PS C:\> $Server01 = New-PSSession -ComputerName Server01

このコマンドは、Server01 コンピューターに新しい PSSession を作成し、それを $Server 01 変数に保存します。

複数の PSSession オブジェクトを作成する場合は、有用な名前を持つ変数に割り当てます。 これは、後続のコマンドで PSSession オブジェクトを管理するのに役立ちます。

例 3: 複数のコンピューターでセッションをCreateする

PS C:\> $s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03

このコマンドは、ComputerName パラメーターで指定された各コンピューターに 1 つずつ、3 つの PSSession オブジェクトを作成します。

コマンドは代入演算子 (=) を使用して、新しい PSSession オブジェクトを変数 ($s 1、$s 2、$s 3) に割り当てます。 Server01 PSSession を $s 1 に割り当て、Server02 PSSession を $s 2 に、Server03 PSSession を $s 3 に割り当てます。

複数のオブジェクトを一連の変数に割り当てると、Windows PowerShellは各オブジェクトを系列内の変数にそれぞれ割り当てます。 変数よりオブジェクトが多い場合、残りのすべてのオブジェクトが最後の変数に代入されます。 オブジェクトより変数が多い場合、残りの変数は空 (null) になります。

例 4: 指定したポートを使用してセッションをCreateする

PS C:\> New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

このコマンドは、サーバー ポート 8081 に接続し、SSL プロトコルを使用する新しい PSSession を Server01 コンピューターに作成します。 新しい PSSession では、E12 と呼ばれる別のセッション構成が使用されます。

ポートを設定する前に、ポート 8081 でリッスンするように、リモートのコンピューター上で WinRM リスナーを構成する必要があります。 詳細については、 Port パラメーターの説明を参照してください。

例 5: 既存のセッションに基づいてセッションをCreateする

PS C:\> New-PSSession -Session $s -Credential Domain01\User01

このコマンドは、既存 の PSSession と同じプロパティを持つ PSSession を作成します。 このコマンド形式は、既存の PSSession のリソースが使い果たされ、需要の一部をオフロードするために新しい PSSession が必要な場合に使用できます。

コマンドは New-PSSessionSession パラメーターを使用して、$s変数に保存された PSSession を指定します。 Domain1\Admin01 ユーザーの資格情報を使用して、コマンドを完成させます。

例 6: 別のドメイン内のグローバル スコープを持つセッションをCreateする

PS C:\> $global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01

この例では、別のドメイン内のコンピューターにグローバル スコープを持つ PSSession を作成する方法を示します。

既定では、コマンド ラインで作成された PSSession オブジェクトはローカル スコープで作成され、スクリプトで作成された PSSession オブジェクトにはスクリプト スコープがあります。

グローバル スコープで PSSession を作成するには、新しい PSSession を作成し、グローバル スコープにキャストされる変数に PSSession を格納します。 この場合、$s 変数がグローバル スコープにキャストされます。

このコマンドは、ComputerName パラメーターを使用してリモート コンピューターを指定します。 コンピューターはユーザー アカウントとは異なるドメインにあるため、コンピューターの完全な名前はユーザーの資格情報と共に指定されます。

例 7: 多くのコンピューターのセッションをCreateする

PS C:\> $rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50

このコマンドは、Servers.txt ファイルにリストされている 200 台のコンピューターごとに PSSession を作成し、結果の PSSession を $rs 変数に格納します。 PSSession オブジェクトのスロットル制限は 50 です。

このコマンドの形式は、コンピューターの名前がデータベース、スプレッドシート、テキスト ファイル、またはその他のテキストに変換できる形式に格納されている場合、使用することができます。

例 8: URI を使用してセッションをCreateする

PS C:\> $s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01

このコマンドは、Server01 コンピューターに PSSession を作成し、それを $s 変数に格納します。 URI パラメーターを使用して、トランスポート プロトコル、リモート コンピューター、ポート、および代替セッション構成を指定します。 また、 Credential パラメーターを使用して、リモート コンピューターでセッションを作成するアクセス許可を持つユーザー アカウントを指定します。

例 9: 一連のセッションでバックグラウンド ジョブを実行する

PS C:\> $s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
PS C:\> Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob

これらのコマンドは、 PSSession オブジェクトのセットを作成し、各 PSSession オブジェクトでバックグラウンド ジョブを実行します。

最初のコマンドは、Servers.txt ファイルに一覧表示されている各コンピューターに新しい PSSession を作成します。 New-PSSession コマンドレットを使用して PSSession を作成します。 ComputerName パラメーターの値は、Get-Content コマンドレットを使用して、Servers.txt ファイルのコンピューター名の一覧を取得するコマンドです。

コマンドは Credential パラメーターを使用して、ドメイン管理者のアクセス許可を持つ PSSession オブジェクトを作成し、 ThrottleLimit パラメーターを使用してコマンドを 16 の同時接続に制限します。 このコマンドは、 PSSession オブジェクトを $s 変数に保存します。

2 番目のコマンドでは、Invoke-Command コマンドレットの AsJob パラメーターを使用して、$sの各 PSSession オブジェクトでコマンドを実行Get-Process PowerShellするバックグラウンド ジョブを開始します。

バックグラウンド ジョブのWindows PowerShellの詳細については、「about_Jobsabout_Remote_Jobs」を参照してください。

例 10: URI を使用してコンピューターのセッションをCreateする

PS C:\> New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

このコマンドは、コンピューター名ではなく URI で指定されたコンピューターに接続する PSSession オブジェクトを作成します。

例 11: セッション オプションをCreateする

PS C:\> $so = New-PSSessionOption -SkipCACheck
PS C:\> New-PSSession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -Credential Server01\Admin01

この例では、セッション オプション オブジェクトを作成し、 SessionOption パラメーターを使用する方法を示します。

最初のコマンドでは、New-PSSessionOption コマンドレットを使用してセッション オプションを作成します。 結果の SessionOption オブジェクトが $so 変数に保存されます。

2 番目のコマンドは、新しいセッションでこのオプションを使用します。 このコマンドは、New-PSSession コマンドレットを使用して新しいセッションを作成します。 SessionOption パラメーターの値は、$so 変数内の SessionOption オブジェクトです。

パラメーター

-AllowRedirection

このコマンドレットによって、代替の Uniform Resource Identifier (URI) へのこの接続のリダイレクトが許可されることを示します。

ConnectionURI パラメーターを使用すると、リモートの送信先は別の URI にリダイレクトするように指示を返すことができます。 既定では、Windows PowerShellは接続をリダイレクトしませんが、このパラメーターを使用して接続をリダイレクトできます。

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

接続 URI のアプリケーション名セグメントを指定します。 このパラメーターは、このコマンドの ConnectionURI パラメーターを使用しないときに、アプリケーション名を指定するために使用します。

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

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

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

  • Default
  • Basic
  • Credssp
  • ダイジェスト
  • Kerberos
  • ネゴシエート
  • NegotiateWithImplicitCredential

既定値は Default です。

このパラメーターの値の詳細については、MSDN ライブラリの 「AuthenticationMechanism 列挙」を 参照してください。

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

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

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

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

証明書を取得するには、Windows PowerShell Cert: ドライブで Get-Item または Get-ChildItem を使用します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

コンピューターの名前の配列を指定します。 このコマンドレットは、指定されたコンピューターへの永続的な接続 (PSSession) を作成します。 複数のコンピューター名を入力すると、 New-PSSession によって複数 の PSSession オブジェクトが作成され、コンピューターごとに 1 つずつ作成されます。 既定値はローカル コンピューターです。

1 台または複数のリモート コンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名を入力します。 ローカル コンピューターを指定するには、コンピューター名、localhost、またはドット (.) を入力します。 コンピューターがユーザーとは異なるドメインにある場合は、完全修飾ドメイン名が必要です。 コンピューター名を引用符で囲んで New-PSSession にパイプすることもできます。

ComputerName パラメーターの値に IP アドレスを使用するには、コマンドに Credential パラメーターを含める必要があります。 また、HTTPS トランスポート用にコンピューターを構成するか、リモート コンピューターの IP アドレスをローカル コンピューター上の WinRM TrustedHosts 一覧に含める必要があります。 TrustedHosts リストにコンピューター名を追加する手順については、about_Remote_Troubleshooting (https://go.microsoft.com/fwlink/?LinkID=135188) の「How to Add a Computer to the Trusted Host List」を参照してください。

ComputerName パラメーターの値にローカル コンピューターを含めるには、[管理者として実行] オプションを使用してWindows PowerShellを開始します。

Type:String[]
Aliases:Cn
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

新しい PSSession に使用されるセッション構成を指定します。

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

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

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConnectionUri

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

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

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

https://localhost:5985/WSMAN

ConnectionURI を指定しなかった場合は、UseSSLComputerNamePort、および ApplicationName パラメーターを使用して、ConnectionURI 値を指定できます。

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

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

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

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

User01、Domain01\User01、または などのユーザー名を入力するか User@Domain.com、 PSCredential オブジェクト (Get-Credential コマンドレットによって返されるオブジェクトなど) を入力します。

ユーザー名を入力すると、このコマンドレットによってパスワードの入力が求められます。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableNetworkAccess

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

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

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

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

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

コンピューターを悪意のあるアクセスから保護するために、 EnableNetworkAccess パラメーターを使用して作成された対話型トークンを持つ切断されたループバック セッションは、セッションが作成されたコンピューターからのみ再接続できます。 CredSSP 認証を使用するセッションが切断された場合には、他のコンピューターから再接続することができます。 詳細については、「Disconnect-PSSession」を参照してください。

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

PSSession のフレンドリ名を指定します。

Get-PSSession や Enter-PSSession などの他のコマンドレットを使用する場合は、名前を使用して PSSession を参照できます。 名前は、コンピューターや現在のセッションで一意である必要ありません。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 パラメーターを使用しないでください。 コマンドのポート設定は、コマンドが実行されるすべてのコンピューターまたはセッションに適用されます。 代替ポートの設定によっては、コマンドがすべてのコンピューターで実行されない場合があります。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

このコマンドレットが新しい PSSession のモデルとして使用する PSSession オブジェクトの配列を指定します。 このパラメーターは、指定された PSSession オブジェクトと同じプロパティを持つ新しい PSSession オブジェクトを 作成します。

PSSession オブジェクトを含む変数、または PSSession オブジェクトを作成または取得するコマンド (New-PSSession、Get-PSSession コマンドなど) を入力します。

結果として得られる PSSession オブジェクトのコンピューター名、アプリケーション名、接続 URI、ポート、構成名、スロットル制限、Secure Sockets Layer (SSL) の値は元のオブジェクトと同じですが、表示名、ID、およびインスタンス ID (GUID) は異なります。

Type:PSSession[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

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

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

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

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

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

このコマンドを実行するために確立できる最大コンカレント接続数を指定します。 このパラメーターを省略した場合、または値 0 (ゼロ) を入力した場合は、既定値の 32 が使用されます。

スロットル制限は現在のコマンドのみに適用され、セッションまたはコンピューターには適用されません。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

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

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

System.String, System.URI, System.Management.Automation.Runspaces.PSSession

文字列、URI、またはセッション オブジェクトをこのコマンドレットにパイプできます。

出力

PSSession

メモ

  • このコマンドレットは、Windows PowerShell リモート処理インフラストラクチャを使用します。 このコマンドレットを使用するには、ローカル コンピューターと任意のリモート コンピューターを Windows PowerShell リモート処理用に構成する必要があります。 詳細については、「about_Remote_Requirements」を参照してください。

  • ローカル コンピューターで PSSession を作成するには、[管理者として実行] オプションを使用してWindows PowerShellを開始します。

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