別のセッションのコマンドを現在のセッションにインポートします。
構文
Import-PSSession [-Session] <PSSession> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Module <string[]>] [-Prefix <string>] [<CommonParameters>]
説明
Import-PSSession コマンドレットは、ローカルまたはリモート コンピューターの PSSession から現在のセッションにコマンド (コマンドレット、関数、エイリアスなど) をインポートします。Get-Command が PSSession で検出するコマンドは、すべてインポート可能です。
Import-PSSession コマンドを使用すると、Microsoft Exchange Server シェルなどのカスタマイズされたシェル、または Windows PowerShell モジュールおよびスナップインまたは現在のセッションにない他の要素を含むセッションからコマンドをインポートできます。
コマンドをインポートするには、まず New-PSSession コマンドレットを使用して PSSession を作成します。次に、Import-PSSession コマンドレットを使用してコマンドをインポートします。既定では、Import-PSSession は、現在のセッション内のコマンドと同じ名前のコマンドを除くすべてのコマンドをインポートします。すべてのコマンドをインポートするには、AllowClobber パラメーターを使用します。
インポートされたコマンドは、セッション内のコマンドと同様に使用できます。インポートされたコマンドを使用すると、コマンドのインポートされた部分が暗黙的にインポート元のセッションで実行されます。ただし、リモート操作は Windows PowerShell で全体的に処理されます。使用する際にそれらを意識する必要はありません。開いている他のセッション (PSSession) への接続を維持することのみ注意してください。セッションを閉じると、インポートされたコマンドは使用できなくなります。
インポートされたコマンドはローカル コマンドよりも実行に時間がかかる場合があるため、Import-PSSession は AsJob パラメーターをインポートされたすべてのコマンドに追加します。このパラメーターによって、コマンドを Windows PowerShell のバックグラウンド ジョブとして実行できます。詳細については、「about_Jobs」を参照してください。
Import-PSSession を使用すると、Windows PowerShell は、インポートされたコマンドをセッション内にのみ存在する一時モジュールに追加し、このモジュールを表すオブジェクトを返します。将来のセッションで使用できる永続的なモジュールを作成するには、Export-PSSession コマンドレットを使用します。
Import-PSSession コマンドレットは、Windows PowerShell の暗黙的なリモート処理機能を使用します。コマンドを現在のセッションにインポートすると暗黙的に、元のセッションで、または、元のコンピューターの同様のセッションで実行されます。
パラメーター
-AllowClobber
現在のセッションに同じ名前のコマンドがあるかどうかに関係なく、指定されたコマンドをインポートします。
現在のセッション内のコマンドと同じ名前のコマンドをインポートした場合、インポートされたコマンドによって元のコマンドが隠されるか、置き換えられます。詳細については、「about_Command_Precedence」を参照してください。
既定では、Import-PSSession は、現在のセッション内のコマンドと同じ名前のコマンドはインポートしません。
必須 |
false |
位置 |
named |
既定値 |
False |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-ArgumentList <Object[]>
指定した引数 (パラメーター値) を使用して得られるコマンドの変数をインポートします。
たとえば、$s の PSSession にある証明書 (Cert:) ドライブの Get-Item コマンドの変数をインポートするには、「import-pssession -session $s -command Get-Item -argumentlist cert:」と入力します。
必須 |
false |
位置 |
named |
既定値 |
All command in the PSSession, except for commands with the same names as commands in the current session. |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-CommandName <string[]>
指定した名前または名前のパターンを持つコマンドのみをインポートします。ワイルドカードを使用できます。"CommandName" またはそのエイリアスである "Name" を使用します。
既定では、Import-PSSession は、現在のセッション内のコマンドと同じ名前のコマンドを除くすべてのコマンドをセッションからインポートします。このため、インポートされたコマンドによってセッション内のコマンドが隠れたり、置き換えられたりすることはありません。すべてのコマンド (他のコマンドを隠したり、置き換えたりすることになるものも含む) をインポートするには、AllowClobber パラメーターを使用します。
CommandName パラメーターを使用する場合、FormatTypeName パラメーターを使用しない限り、コマンドの書式設定ファイルはインポートされません。同様に、FormatTypeName パラメーターを使用する場合、CommandName パラメーターを使用しない限り、コマンドはインポートされません。
必須 |
false |
位置 |
3 |
既定値 |
All commands in the PSSession, except for commands with the same names as commands in the current session. |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
true |
-CommandType <CommandTypes>
指定した種類のコマンド オブジェクトのみをインポートします。既定値は Cmdlet です。"CommandType" またはそのエイリアスである "Type" を使用します。
有効な値は次のとおりです。
-- Alias: リモート セッションの Windows PowerShell エイリアス。
-- All: リモート セッションのコマンドレットおよび関数。
-- Application: リモート セッションの Path 環境変数 ($env:path) に示されているパスにある Windows-PowerShell ファイル以外のすべてのファイル (.txt、.exe、.dll など)。
-- Cmdlet: リモート セッションのコマンドレット。既定値は "Cmdlet" です。
-- ExternalScript: リモート セッションの Path 環境変数 ($env:path) に示されているパスにある .ps1 ファイル。
-- Filter および Function: リモート セッションの Windows PowerShell 関数。
-- Script: リモート セッションのスクリプト ブロック。
必須 |
false |
位置 |
named |
既定値 |
All command in the PSSession, except for commands with the same names as commands in the current session. |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-FormatTypeName <string[]>
指定した Microsoft .NET Framework 型の書式設定命令をインポートします。型の名前を入力します。ワイルドカードを使用できます。
このパラメーターの値は、コマンドのインポート元のセッションで Get-FormatData コマンドによって返される型の名前である必要があります。リモート セッションのすべての書式設定データを取得するには、「*」と入力します。
コマンドに CommandName パラメーターと FormatTypeName パラメーターのどちらかが含まれていない場合、Import-PSSession は、
リモート セッションで Get-FormatData コマンドによって返されるすべての .NET Framework 型の書式設定命令をインポートします。
FormatTypeName パラメーターを使用する場合、CommandName パラメーターを使用しない限り、コマンドはインポートされません。
同様に、CommandName パラメーターを使用する場合、FormatTypeName パラメーターを使用しない限り、コマンドの書式設定ファイルはインポートされません。
必須 |
false |
位置 |
4 |
既定値 |
Types in the System.Management.Automation namespace |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
true |
-Module <string[]>
指定した Windows PowerShell スナップインおよびモジュールにコマンドのみをインポートします。スナップインとモジュールの名前を入力します。ワイルドカードは使用できません。
詳細については、「about_PSSnapins」および「Import-Module」を参照してください。
必須 |
false |
位置 |
named |
既定値 |
All command in the PSSession, except for commands with the same names as commands in the current session. |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Prefix <string>
インポートされたコマンドの名前の名詞に、指定されたプレフィックスを追加します。
同じセッションの異なるコマンドに同じ名前が付いている場合に発生する可能性がある名前の競合を回避するには、このパラメーターを使用します。
たとえば、プレフィックス "Remote" を指定して Get-Date コマンドレットをインポートした場合、このコマンドレットはセッションで Get-RemoteDate として認識され、元の Get-Date コマンドレットと混同されることはありません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Session <PSSession>
コマンドレットのインポート元となる PSSession を指定します。セッション オブジェクトを含んでいる変数を入力するか、New-PSSession コマンド、Get-PSSession コマンドなど、セッション オブジェクトを取得するコマンドを入力します。指定できるセッションは 1 つだけです。このパラメーターは必須です。
必須 |
true |
位置 |
1 |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
なし パイプを使用してこのコマンドレットにオブジェクトを渡すことはできません。 |
出力 |
System.Management.Automation.PSModuleInfo Import-PSSession は、New-Module と Get-Module が返すのと同じモジュール オブジェクトを返します。ただし、インポートされたモジュールは一時モジュールで、現在のセッションにのみ存在します。ディスク上に永続的なモジュールを作成するには、Export-PSSession コマンドレットを使用します。 |
注
Import-PSSession は Windows PowerShell リモート処理インフラストラクチャに依存します。このコマンドレットを使用するには、コンピューターが WS-Management リモート処理用に構成されている必要があります。詳細については、「about_Remote」および「about_Remote_Requirements」を参照してください。
Import-PSSession を使用して変数または Windows PowerShell プロバイダーをインポートすることはできません。
現在のセッション内のコマンドと同じ名前を持つコマンドをインポートすると、インポートしたコマンドによってセッション内のエイリアス、関数、およびコマンドレットが隠れた状態になったり、関数や変数が置き換えられたりする可能性があります。詳細については、「about_Command_Precedence」を参照してください。
Import-PSSession は、すべてのコマンドを関数に変換してからインポートします。その結果、インポートされたコマンドは、元のコマンドの種類を維持した場合と比べて若干異なる動作をします。たとえば、PSSession からコマンドレットをインポートした後に同じ名前を持つコマンドレットをモジュールまたはスナップインからインポートした場合、常に既定で実行されるのは PSSession からインポートしたコマンドレットになります。コマンドレットよりも関数の方が優先されるためです。反対に、エイリアスを同じ名前のエイリアスが含まれるセッションにインポートした場合、元のエイリアスが常に使用されます。関数よりもエイリアスの方が優先されるためです。詳細については、「about_Command_Precedence」を参照してください。
Import-PSSession は Write-Progress コマンドレットを使用してコマンドの進行状況を表示します。コマンドの実行中は進行状況バーが表示されます。
インポートするコマンドを検索する場合、Import-PSSession は Invoke-Command コマンドレットを使用して PSSession で Get-Command コマンドを実行します。コマンドの書式設定データを取得する場合は、Get-FormatData コマンドレットを使用します。Import-PSSession コマンドを実行すると、Invoke-Command、Get-Command、および Get-FormatData のエラー メッセージが表示される場合があります。また、Import-PSSession は、Get-Command、Get-FormatData、Select-Object、および Get-Help コマンドレットを含んでいない PSSession からコマンドをインポートできません。
インポートされたコマンドは、ユーザー インターフェイスを使用してメモ帳などのプログラムを起動できないなど、他のリモート コマンドと同じ制限があります。
Windows PowerShell プロファイルは PSSession で実行されないため、プロファイルによってセッションに追加されたコマンドは Import-PSSession では使用できません。プロファイルからコマンドをインポートするには、Invoke-Command コマンドを使用して、コマンドをインポートする前に手動で PSSession 内のプロファイルを実行します。
Import-PSSession によって作成される一時モジュールには、コマンドによって書式設定データがインポートされない場合でも、書式設定ファイルが含まれることがあります。コマンドで書式設定データがインポートされない場合、作成される書式設定ファイルに書式設定データは含まれません。
Import-PSSession を使用する場合は、現在のセッションの実行ポリシーが "Restricted" または "AllSigned" であってはなりません。Import-PSSession で作成されるモジュールには、これらのポリシーが禁止している署名なしのスクリプト ファイルが含まれるためです。ローカル コンピューターの実行ポリシーを変更することなく Import-PSSession を使用するには、Set-ExecutionPolicy の Scope パラメーターを使用して、単一のプロセスに制限の緩い実行ポリシーを設定します。
例 1
C:\PS>$s = new-pssession -computername Server01 C:\PS> import-pssession -session $s 説明 ----------- このコマンドは、現在のセッション内のコマンドと同じ名前のコマンドを除くすべてのコマンドを Server01 コンピューターの PSSession から現在のセッションにインポートします。 このコマンドは CommandName パラメーターを使用しないため、インポートされるコマンドに必要なすべての書式設定データもインポートします。
例 2
C:\PS>$s = new-pssession https://ps.testlabs.com/powershell C:\PS> import-pssession -session $s -commandname *-test -formatTypeName * C:\PS> new-test -name test1 C:\PS> get-test test1 | run-test 説明 ----------- これらのコマンドは、PSSession からローカル セッションに "-test" で終わる名前のコマンドをインポートし、インポートされたコマンドレットの使用方法を示します。 最初のコマンドは New-PSSession コマンドレットを使用して PSSession を作成します。PSSession は $s 変数に保存されます。 2 番目のコマンドは、Import-PSSession コマンドレットを使用して、$s の PSSession から現在のセッションにコマンドをインポートします。また、CommandName パラメーターを使用して Test という名詞を含むコマンドを指定し、FormatTypeName パラメーターを使用して Test コマンドの書式設定データをインポートします。 3 番目と 4 番目のコマンドは、現在のセッションにインポートされたコマンドを使用します。インポートされたコマンドは実際には現在のセッションに追加されているため、ローカル構文を使用してこれらのコマンドを実行します。インポートされたコマンドを実行するために Invoke-Command コマンドレットを使用する必要はありません。
例 3
C:\PS>$s1 = new-pssession -computername s1 C:\PS> $s2 = new-pssession -computername s2 C:\PS> import-pssession -session s1 -type cmdlet -name New-Test, Get-Test -FormatTypeName * C:\PS> import-pssession -session s2 -type cmdlet -name Set-Test -FormatTypeName * C:\PS> new-test Test1 | set-test -runtype full 説明 ----------- この例は、インポートされたコマンドレットをローカル コマンドレットと同様に使用できることを示しています。 これらのコマンドは、Server01 コンピューターの PSSession から New-Test コマンドレットと Get-Test コマンドレットをインポートし、Server02 コンピューターの PSSession から Set-Test コマンドレットをインポートします。 コマンドレットは異なる PSSession からインポートされていますが、エラーを発生することなく別のコマンドレットに対してオブジェクトをパイプ処理できます。
例 4
C:\PS>$s = new-pssession -computername Server01 C:\PS> import-pssession -session $s -commandname *-test* -formattypename * C:\PS> $batch = new-test -name Batch -asjob C:\PS> receive-job $batch 説明 ----------- この例は、インポートされたコマンドをバックグラウンド ジョブとして実行する方法を示しています。 インポートされたコマンドはローカル コマンドよりも実行に時間がかかる場合があるため、Import-PSSession は AsJob パラメーターをインポートされたすべてのコマンドに追加します。AsJob パラメーターを使用して、コマンドをバックグラウンド ジョブとして実行できます。 最初のコマンドは、Server01 コンピューターで PSSession を作成し、PSSession オブジェクトを $s 変数に保存します。 2 番目のコマンドは、Import-PSSession を使用して $s の PSSession から現在のセッションに Test コマンドレットをインポートします。 3 番目のコマンドは、インポートされた New-Test コマンドレットの AsJob パラメーターを使用して、New-Test コマンドをバックグラウンド ジョブとして実行します。このコマンドは、New-Test によって返されるジョブ オブジェクトを $batch 変数に保存します。 4 番目のコマンドは、Receive-Job コマンドレットを使用して、$batch 変数に保存されたジョブの結果を取得します。
例 5
C:\PS>$s = new-pssession -comp Server01 C:\PS> invoke-command -session $s {import-module TestManagement} C:\PS> import-pssession -session $s -module TestManagement 説明 ----------- この例は、リモート コンピューターの Windows PowerShell モジュールから現在のセッションにコマンドレットと関数をインポートする方法を示しています。 最初のコマンドは、Server01 コンピューターで PSSession を作成し、それを $s 変数に保存します。 2 番目のコマンドは、Invoke-Command コマンドレットを使用して、$s に保存された PSSession で Import-Module コマンドを実行します。 通常、モジュールは、Windows PowerShell プロファイルの Import-Module コマンドによってすべてのセッションに追加されますが、プロファイルは PSSessions で実行されません。 3 番目のコマンドは、Import-PSSession の Module パラメーターを使用して、モジュールのコマンドレットと関数を現在のセッションにインポートします。
例 6
C:\PS>import-pssession $s -CommandName Get-Date, SearchHelp -formatTypeName * -AllowClobber Name : tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf Path : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf\tmp_79468106-4e1d-4d90-af97-1154f9317239_ tcw1zunz.ttf.psm1 Description : Implicit remoting for http://server01.corp.fabrikam.com/wsman Guid : 79468106-4e1d-4d90-af97-1154f9317239 Version : 1.0 ModuleBase : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf ModuleType : Script PrivateData : {ImplicitRemoting} AccessMode : ReadWrite ExportedAliases : {} ExportedCmdlets : {} ExportedFunctions : {[Get-Date, Get-Date], [SearchHelp, SearchHelp]} ExportedVariables : {} NestedModules : {} 説明 ----------- この例では、Import-PSSession を使用してディスク上の一時ファイルにモジュールを作成しています。また、すべてのコマンドを関数に変換してから、現在のセッションにインポートしています。 このコマンドは、Import-PSSession コマンドレットを使用して、Get-Date コマンドレットと SearchHelp 関数を現在のセッションにインポートします。 Import-PSSession コマンドレットは、一時モジュールを表す PSModuleInfo オブジェクトを返します。Path プロパティの値は、Import-PSSession によって一時的な場所にスクリプト モジュール (.psm1) ファイルが作成されたことを示しています。ExportedFunctions プロパティは、Get-Date コマンドレットと SearchHelp 関数がいずれも関数としてインポートされたことを示しています。
例 7
C:\PS>import-pssession $s -CommandName Get-Date -formatTypeName * -AllowClobber C:\PS> get-command get-date CommandType Name Definition ----------- ---- ---------- Function Get-Date ... Cmdlet Get-Date Get-Date [[-Date] <DateTime>] [-Year <Int32>] [-Month <Int32>] C:\PS> Get-Date 09074 C:\PS> (get-command -type cmdlet -name get-date).pssnapin.name Microsoft.PowerShell.Utility C:\PS> Microsoft.PowerShell.Utility\get-date Sunday, March 15, 2009 2:08:26 PM 説明 ----------- この例は、インポートされたコマンドによって隠れた状態になっているコマンドの実行方法を示しています。 最初のコマンドは、$s 変数の PSSession から Get-Date コマンドレットをインポートします。現在のセッション内に Get-Date コマンドレットが存在するため、このコマンドには AllowClobber パラメーターが必須です。 2 番目のコマンドは、Get-Command コマンドレットを使用して、現在のセッションの Get-Date コマンドを取得します。出力には、セッションに元の Get-Date コマンドレットと Get-Date 関数が存在することが示されます。Get-Date 関数は、インポートされた Get-Date コマンドレットを $s の PSSession で実行します。 3 番目のコマンドは Get-Date コマンドを実行します。関数はコマンドレットよりも優先されるので、インポートされた Get-Date 関数が実行され、ユリウス歴の日付が返されます。 4 番目と 5 番目のコマンドは、インポートされたコマンドによって隠れた状態になっているコマンドを、修飾名を使用して実行する方法を示しています。 4 番目のコマンドは、元の Get-Date コマンドレットを現在のセッションに追加した Windows PowerShell スナップインの名前を取得します。 5 番目のコマンドは、スナップイン名で修飾した Get-Date コマンドレットの名前を使用して、Get-Date コマンドを実行します。 コマンドの優先順位と隠れているコマンドの詳細については、「about_Command_Precedence」を参照してください。
例 8
C:\PS>import-pssession -session $s -commandName *Item* -AllowClobber 説明 ----------- このコマンドは、名前に "Item" が含まれるコマンドを $s の PSSession からインポートします。コマンドには CommandName パラメーターが含まれていますが、FormatTypeData パラメーターは含まれていないため、コマンドだけがインポートされます。 現在のセッションにコマンドの書式設定データが既に存在しており、Import-PSSession を使用してリモート コンピューターでコマンドを実行する場合に、このコマンドを使用します。
例 9
C:\PS>$m = import-pssession -session $s -CommandName *bits* -formattypename *bits* C:\PS> get-command -module $m CommandType Name ----------- ---- Function Add-BitsFile Function Complete-BitsTransfer Function Get-BitsTransfer Function Remove-BitsTransfer Function Resume-BitsTransfer Function Set-BitsTransfer Function Start-BitsTransfer Function Suspend-BitsTransfer 説明 ----------- このコマンドは、Import-PSSession コマンドによってセッションにインポートされたコマンドを、Get-Command の Module パラメーターを使用して見つける方法を示しています。 最初のコマンドは、Import-PSSession コマンドレットを使用して、名前に "bits" が含まれるコマンドを $s 変数の PSSession からインポートします。そして、Import-PSSession コマンドが返す一時モジュールを $m 変数に保存します。 2 番目のコマンドは、Get-Command コマンドレットを使用して、$m 変数に保存されたモジュールによってエクスポートされるコマンドを取得します。 Module パラメーターは、モジュール名用の文字列値を受け取ります。ただし、モジュール オブジェクトを渡した場合、Windows PowerShell はモジュール名を返す ToString メソッドをそのモジュール オブジェクトに対して適用します。 Get-Command コマンドは、"get-command $m.name" と同等です。
関連項目