New-PSSession
ローカル コンピューターまたはリモート コンピューターへの固定接続を作成します。
構文
New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]
New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]
説明
New-PSSession コマンドレットは、ローカル コンピューターまたはリモート コンピューター上に Windows PowerShell セッション (PSSession) を作成します。PSSession を作成すると、Windows PowerShell はリモート コンピューターに対する固定接続を確立します。
PSSession を使用して、関数や変数の値などのデータを共有する複数のコマンドを実行できます。PSSession でコマンドを実行するには、Invoke-Command コマンドレットを使用します。PSSession を使用してリモート コンピューターと直接対話するには、Enter-PSSession コマンドレットを使用します。詳細については、「about_PSSessions」を参照してください。
Enter-PSSession または Invoke-Command の ComputerName パラメーターを使用することによって、PSSession を作成せずに、リモート コンピューター上でコマンドを実行できます。ComputerName パラメーターを使用すると、Windows PowerShell は、対話型のセッションや単一のコマンドに使用した後で閉じられる一時接続を作成します。
パラメーター
-AllowRedirection
この接続を代替 URI (Uniform Resource Identifier) にリダイレクトできます。
ConnectionURI パラメーターを使用すると、リモートの配信先は別の URI にリダイレクトするための命令を返すことができます。既定では、Windows PowerShell は接続をリダイレクトしませんが、ユーザーは AllowRedirection パラメーターを使用して接続のリダイレクトを許可できます。
また、$PSSessionOption preference 変数の MaximumConnectionRedirectionCount property プロパティ、または SessionOption パラメーターの値の MaximumConnectionRedirectionCount プロパティを設定することにより、接続をリダイレクトする回数を制限することもできます。
既定値は 5 です。詳細については、SessionOption パラメーターの説明と、New-PSSessionOption を参照してください。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-ApplicationName <string>
接続 URI のアプリケーション名セグメントを指定します。ConnectionURI パラメーターをコマンド内で使用しない場合は、このパラメーターを使用してアプリケーション名を指定します。
既定値は、ローカル コンピューターの $PSSessionApplicationName ユーザー設定変数の値です。この設定変数を定義しない場合、既定値は WSMAN になります。 この値はほとんどのユーザーに適しています。詳細については、「about_Preference_Variables」を参照してください。
WinRM サービスは、アプリケーション名を使用して接続要求を処理するリスナーを選択します。このパラメーターの値は、リモート コンピューターにあるリスナーの URLPrefix プロパティの値と一致する必要があります。
必須 |
false |
位置 |
named |
既定値 |
WSMAN |
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Authentication <AuthenticationMechanism>
ユーザーの資格情報の認証に使用するメカニズムを指定します。有効な値は、"Default"、"Basic"、"Credssp"、"Digest"、"Kerberos"、"Negotiate"、および "NegotiateWithImplicitCredential" です。既定値は "Default" です。
CredSSP 認証は、Windows Vista、Windows Server 2008、およびそれ以降のバージョンの Windows でのみ使用できます。
このパラメーターの値の詳細については、MSDN (Microsoft Developer Network) ライブラリの System.Management.Automation.Runspaces.AuthenticationMechanism 列挙体の説明 (https://go.microsoft.com/fwlink/?LinkID=144382) を参照してください。
注意: ユーザーの資格情報が認証対象のリモート コンピューターに渡される、資格情報のセキュリティ サービス プロバイダー (CredSSP) 認証は、リモート ネットワーク共有にアクセスする場合など、複数のリソースの認証を必要とするコマンドを対象としています。このメカニズムを使用すると、リモート操作のセキュリティ リスクが高まります。リモート コンピューターのセキュリティが低下している場合は、そのリモート コンピューターに渡される資格情報を使用してネットワーク セッションを制御できます。
必須 |
false |
位置 |
named |
既定値 |
Default |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-CertificateThumbprint <string>
この処理を実行するアクセス許可を持つユーザー アカウントのデジタル公開キー証明書 (X509) を指定します。証明書の拇印を入力します。
証明書は、クライアント証明書ベースの認証で使用されます。これらはローカル ユーザー アカウントにのみマッピングできます。ドメイン アカウントでは機能しません。
証明書の拇印を取得するには、Windows PowerShell Cert: ドライブで Get-Item または Get-ChildItem コマンドを使用します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-ComputerName <string[]>
指定されたコンピューターへの固定接続 (PSSession) を作成します。複数のコンピューター名を入力した場合、New-PSSession によって各コンピューターに 1 つずつ複数の PSSession が作成されます。既定値はローカル コンピューターです。
1 つまたは複数のリモート コンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名を入力します。ローカル コンピューターを指定するには、コンピューター名、「localhost」、またはドット (.) を入力します。コンピューターがユーザーとは異なるドメインにある場合、完全修飾ドメイン名が必要です。New-PSSession に対して (引用符で囲まれた) コンピューター名をパイプ処理することもできます。
ComputerName パラメーターの値に IP アドレスを使用するには、コマンドに Credential パラメーターを含める必要があります。また、コンピューターが HTTPS トランスポート用に構成されているか、リモート コンピューターの IP アドレスがローカル コンピューター上の WinRM TrustedHosts リストに含まれている必要があります。コンピューター名を TrustedHosts リストに追加する方法については、「about_Remote_Troubleshooting」の「How to Add a Computer to the Trusted Host List (コンピューターを信頼されたホストの一覧に追加する方法)」を参照してください。
注: Windows Vista 以降のバージョンの Windows で、ローカル コンピューターを ComputerName パラメーターの値に含めるには、Windows PowerShell を起動する際に [管理者として実行] を指定する必要があります。
必須 |
false |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByValue, ByPropertyName) |
ワイルドカード文字を許可する |
false |
-ConfigurationName <string>
新しい PSSession に使用するセッション構成を指定します。
構成名またはセッション構成の完全修飾リソース URI (Uniform Resource Identifier) を入力します。構成名のみを指定すると、スキーマ URI "https://schemas.microsoft.com/powershell" が先頭に付加されます。
セッションのセッション構成は、リモート コンピューター上にあります。指定したセッション構成がリモート コンピューター上に存在しない場合、コマンドは失敗します。
既定値は、ローカル コンピューターの $PSSessionConfigurationName ユーザー設定変数の値です。この設定変数を設定しない場合、既定値は Microsoft.PowerShell になります。詳細については、「about_Preference_Variables」を参照してください。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-ConnectionURI <Uri[]>
接続エンドポイントを定義する URI (Uniform Resource Identifier) を指定します。URI は完全修飾名でなければなりません。
この文字列の形式は次のとおりです。
<Transport>://<ComputerName>:<Port>/<ApplicationName>
既定値は次のとおりです。
https://localhost:80/WSMAN
URI のトランスポート セグメントの有効な値は HTTP および HTTPS です。ConnectionURI を指定しない場合、UseSSL、ComputerName、Port、および ApplicationName パラメーターを使用して URI 値を指定できます。
対象のコンピューターが接続を別の URI にリダイレクトする場合、コマンドで AllowRedirection パラメーターを使用しない限り、Windows PowerShell によってリダイレクトが防止されます。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Credential <PSCredential>
この処理を実行するアクセス許可を持つユーザー アカウントを指定します。既定値は現在のユーザーです。
"User01"、"Domain01\User01"、"User@Domain.com" のようなユーザー名を入力するか、Get-Credential コマンドレットで返されるような PSCredential オブジェクトを入力します。
ユーザー名を入力すると、パスワードの入力を促すメッセージが表示されます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Name <string[]>
PSSession のフレンドリ名を指定します。
Get-PSSession や Enter-PSSession などの他のコマンドレットを使用する際には、この名前を使用して PSSession を参照できます。この名前は、コンピューターまたは現在のセッションで一意である必要はありません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Port <int>
このコマンドで使用するリモート コンピューター上のネットワーク ポートを指定します。既定値はポート 80 (HTTP ポート) です。
代替ポートを使用する前に、リモート コンピューター上でそのポートをリッスンするための WinRM リスナーを構成する必要があります。リスナーを構成するには、次のコマンドを使用します。
1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="<port-number>"}
必要がない限り、Port パラメーターを使用しないでください。コマンドに設定されたポート設定は、すべてのコンピューターおよびコマンドが実行されるセッションに適用されます。代替ポート設定によって、すべてのコンピューターでのコマンドの実行が妨げられている可能性があります。
必須 |
false |
位置 |
named |
既定値 |
80 |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Session <PSSession[]>
指定された PSSession を新しい PSSession のモデルとして使用します。このパラメーターによって、指定された PSSession と同じプロパティを持つ新しい PSSession が作成されます。
PSSessions を格納する変数を入力するか、New-PSSession コマンドや Get-PSSession コマンドなど、PSSessions を作成または取得するコマンドを入力します。
結果の PSSession は、元のセッションと同じコンピューター名、アプリケーション名、接続 URI、ポート、構成名、スロットル制限および SSL (Secure Sockets Layer) 値を保持していますが、表示名、ID、およびインスタンス ID (GUID) は異なります。
必須 |
false |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByValue, ByPropertyName) |
ワイルドカード文字を許可する |
false |
-SessionOption <PSSessionOption>
セッションの詳細オプションを設定します。New-PSSessionOption コマンドレットを使用して作成する SessionOption オブジェクトを入力します。
$PSSessionOption 設定変数の値が設定されている場合、オプションの既定値はこの値によって決まります。それ以外の場合、セッションではシステムの既定値が使用されます。
既定値を含め、セッション オプションの詳細については、New-PSSessionOption を参照してください。$PSSessionOption 設定変数の詳細については、「about_Preference_Variables」を参照してください。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-ThrottleLimit <int>
このコマンドを実行するために確立できる最大同時接続数を指定します。このパラメーターを省略した場合、または値 0 (ゼロ) を入力した場合は、既定値の 32 が使用されます。
スロットル制限は現在のコマンドのみに適用され、セッションまたはコンピューターには適用されません。
必須 |
false |
位置 |
named |
既定値 |
32 |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-UseSSL
Secure Sockets Layer (SSL) プロトコルを使用してリモート コンピューターとの接続を確立します。既定では、SSL は使用されません。
WS-Management では、ネットワーク上で送信されるすべての Windows PowerShell コンテンツが暗号化されます。UseSSL は、HTTP 接続ではなく HTTPS 接続を使用してデータを送信する追加の保護機能です。
このパラメーターを使用するが、コマンドに使用されるポートで SSL が利用できない場合、コマンドは失敗します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.String、System.URI、System.Management.Automation.Runspaces.PSSession パイプを使用して ComputerName (文字列)、ConnectionURI (URI)、またはセッション (PSSession) オブジェクトを New-PSSession に渡すことができます。 |
出力 |
System.Management.Automation.Runspaces.PSSession |
注
このコマンドレットは、Windows PowerShell リモート処理インフラストラクチャを使用します。このコマンドレットを使用するには、ローカル コンピューターおよび任意のリモート コンピューターが Windows PowerShell リモート処理用に構成されている必要があります。詳細については、「about_Remote_Requirements」を参照してください。
Windows Vista 以降のバージョンの Windows で、ローカル コンピューター上に PSSession を作成するには、Windows PowerShell を起動する際に [管理者として実行] を指定する必要があります。
PSSession を終了する際には、Remove-PSSession コマンドレットを使用して、PSSession を削除し、そのリソースを解放します。
例 1
C:\PS>$s = new-pssession
説明
-----------
このコマンドは、ローカル コンピューター上に新しい PSSession を作成し、その PSSession を $s 変数に保存します。
これで、この PSSession を使用して、ローカル コンピューターでコマンドを実行できるようになります。
例 2
C:\PS>$Server01 = new-pssession -ComputerName Server01
説明
-----------
このコマンドは、Server01 コンピューター上に新しい PSSession を作成し、その PSSession を $Server01 変数に保存します。
複数の PSSession を作成する際には、これらのセッションを、有用な名前を持つ変数に割り当てます。これは、後続のコマンドで PSSession を管理するのに役立ちます。
例 3
C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3
説明
-----------
このコマンドは、3 つの新しい PSSession を作成します。セッションは、ComputerName パラメーターによって指定された各コンピューターに 1 つずつ作成されます。
また、代入演算子 (=) を使用して、新しい PSSession を変数の配列 $s1、$s2、$s3 に割り当てます。Server01 の PSSession は $s1 に、Server02 の PSSession は $s2 に、Server03 の PSSession は $s3 に割り当てられます。
複数のオブジェクトを変数の配列に割り当てた場合、Windows PowerShell は各オブジェクトを配列のそれぞれの変数に割り当てます。オブジェクトの数が変数の数よりも多い場合、残りのすべてのオブジェクトは最後の変数に割り当てられます。変数の数がオブジェクトの数よりも多い場合には、残りの変数は空 (Null) になります。
例 4
C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12
説明
-----------
このコマンドは、サーバー ポート 8081 に接続して SSL プロトコルを使用する Server01 コンピューター上に新しい PSSession を作成します。新しい PSSession は、"E12" という代替セッション構成を使用します。
ポートを設定する前に、リモート コンピューター上でポート 8081 をリッスンするための WinRM リスナーを構成する必要があります。詳細については、Port パラメーターの説明を参照してください。
例 5
C:\PS>new-pssession -session $s -credential domain01\user01
説明
-----------
このコマンドによって、既存の PSSession と同じプロパティを持つ新しい PSSession が作成されます。このコマンド形式は、既存の PSSession のリソースを使い果たしたためにリソース消費の一部をオフロードするための新しい PSSession が必要な場合に使用できます。
このコマンドは、New-PSSession の Session パラメーターを使用して、$s 変数に保存されている PSSession を指定します。また、Domain1\Admin01 ユーザーの資格情報を使用して、コマンドを完了します。
例 6
C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01
説明
-----------
この例は、異なるドメインのコンピューター上に、グローバル スコープを使用して PSSession を作成する方法を示しています。
既定では、コマンド ラインで作成された PSSession はローカル スコープを使用して作成され、スクリプトで作成された PSSession にはスクリプト スコープが使用されます。
グローバル スコープを使用して PSSession を作成するには、新しい PSSession を作成し、その PSSession をグローバル スコープにキャストされる変数に保存します。この場合、$s 変数はグローバル スコープにキャストされます。
このコマンドは、ComputerName パラメーターを使用してリモート コンピューターを指定します。コンピューターがユーザー アカウントとは異なるドメインにあるため、コンピューターの完全な名前がユーザーの資格情報と共に指定されています。
例 7
C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50
説明
-----------
このコマンドは、Servers.txt ファイルに示されている 200 台の各コンピューターで PSSession を作成し、結果の PSSession を $rs 変数に保存します。PSSession のスロットル制限は 50 です。
このコマンド形式は、コンピューター名がデータベース、スプレッドシート、テキスト ファイル、またはテキストに変換可能な他の形式で保存されている場合に使用できます。
例 8
C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01
説明
-----------
このコマンドは、Server01 コンピューター上に PSSession を作成し、その PSSession を $s 変数に保存します。URI パラメーターを使用して、トランスポート プロトコル、リモート コンピューター、ポート、および代替セッション構成を指定します。また、Credential パラメーターを使用して、リモート コンピューターでセッションを作成する権限を持つユーザー アカウントを指定します。
例 9
C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16
C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob
説明
-----------
これらのコマンドは、一連の PSSession を作成して、各 PSSession でバックグラウンド ジョブを実行します。
最初のコマンドは、Servers.csv ファイルに示されている各コンピューターで、新しい PSSession を作成します。また、New-PSSession コマンドレットを使用して PSSession を作成します。ComputerName パラメーターの値は、Import-Csv コマンドレットを使用して Servers.csv ファイルをインポートし、その内容を読み込むコマンドです。
このコマンドは、Credential パラメーターを使用してドメイン管理者の権限を持つ PSSession を作成し、ThrottleLimit パラメーターを使用してコマンドの同時接続数を 16 に制限します。このコマンドは PSSession を $s 変数に保存します。
2 番目のコマンドは、Invoke-Command の AsJob パラメーターを使用して、$s の各 PSSession で "Get-Process PowerShell" コマンドを実行するバックグラウンド ジョブを開始します。
バックグラウンド ジョブの詳細については、「about_Jobs」と「about_Remote_Jobs」を参照してください。
例 10
C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management
説明
-----------
このコマンドは、コンピューター名ではなく URI で指定されたコンピューターに接続する新しい PSSession を作成します。
例 11
C:\PS>$so = New-WSManSessionOption -SkipCACheck
PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01
説明
-----------
この例は、SessionOption パラメーターの作成方法と使用方法を示しています。
最初のコマンドは、New-WSManSessionOption コマンドレットを使用してセッションのオプションを作成します。このコマンドは、結果の SessionOption オブジェクトを $so パラメーターに保存します。
2 番目のコマンドは、新しいセッションでそのオプションを使用します。このコマンドは、New-PSSession コマンドレットを使用して新しいセッションを作成します。SessionOption パラメーターの値は、$so 変数の SessionOption オブジェクトです。
関連項目
概念
about_PSSessions
about_Remote
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession
Invoke-Command