Export-PSSession
別のセッションからコマンドをエクスポートし、PowerShell モジュールに保存します。
構文
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
説明
コマンドレットは Export-PSSession
、ローカル コンピューターまたはリモート コンピューター上の別の PowerShell セッション (PSSession) からコマンドレット、関数、エイリアス、およびその他のコマンドの種類を取得し、PowerShell モジュールに保存します。 モジュールから現在のセッションにコマンドを追加するには、 コマンドレットを Import-Module
使用します。
別の PSSession から現在のセッションにコマンドをインポートする とは異なり Import-PSSession
、 Export-PSSession
コマンドはモジュールに保存されます。 コマンドは、現在のセッションにはインポートされません。
コマンドをエクスポートするには、 コマンドレットを New-PSSession
使用して、エクスポートするコマンドを含む PSSession を作成します。 次に、 コマンドレットを Export-PSSession
使用してコマンドをエクスポートします。
コマンド名の競合を防ぐために、 の Export-PSSession
既定値は、現在のセッションに存在するコマンドを除くすべてのコマンドをエクスポートすることです。 CommandName パラメーターを使用して、エクスポートするコマンドを指定できます。
コマンドレットは Export-PSSession
、PowerShell の暗黙的なリモート処理機能を使用します。 現在のセッションにコマンドをインポートすると、元のセッションまたは元のコンピューター上の同様のセッションで暗黙的に実行されます。
例
例 1: PSSession からコマンドをエクスポートする
次の使用例は、ローカル コンピューターから Server01 コンピューターに新しい PSSession を作成します。 現在のセッションに存在するものを除くすべてのコマンドは、ローカル コンピューター上の Server01 という名前のモジュールにエクスポートされます。 エクスポートには、コマンドの書式設定データが含まれます。
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
このコマンドは New-PSSession
、Server01 コンピューターに PSSession を作成します。 PSSession は 変数に $S
格納されます。 このコマンドは Export-PSSession
、変数の $S
コマンドと書式設定データを Server01 モジュールにエクスポートします。
例 2: Get コマンドと Set コマンドをエクスポートする
次の使用例は、 Get
コマンドと Set
コマンドをすべてサーバーからエクスポートします。
$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
これらのコマンドは、 Get
コマンドと Set
コマンドをリモート コンピューターのMicrosoft Exchange Server スナップインから、ローカル コンピューター上のディレクトリ内の $PSHOME\Modules
Exchange モジュールにエクスポートします。
モジュールをディレクトリに $PSHOME\Modules
配置すると、コンピューターのすべてのユーザーがアクセスできるようになります。
例 3: リモート コンピューターからコマンドをエクスポートする
次の使用例は、リモート コンピューターの PSSession からコマンドレットをエクスポートし、ローカル コンピューターのモジュールに保存します。 モジュールのコマンドレットは、使用できるように現在のセッションに追加されます。
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
このコマンドは New-PSSession
、Server01 コンピューターに PSSession を作成し、変数に $S
保存します。 コマンドは Export-PSSession
、名前が Test で始まるコマンドレットを PSSession から $S
ローカル コンピューターの TestCmdlets モジュールにエクスポートします。
コマンドレットは Remove-PSSession
、 の PSSession $S
を現在のセッションから削除します。 このコマンドは、セッションからインポートされたコマンドを使用するために PSSession をアクティブにする必要がないことを示しています。 コマンドレットは Import-Module
、TestCmdlets モジュールのコマンドレットを現在のセッションに追加します。 コマンドはいつでも任意のセッションで実行できます。
コマンドレットは Get-Help
、名前が Test で始まるコマンドレットのヘルプを取得します。 モジュール内のコマンドが現在のセッションに追加されたら、 コマンドレットと Get-Command
コマンドレットをGet-Help
使用して、インポートされたコマンドについて学習できます。 コマンドレットは Test-Files
Server01 コンピューターからエクスポートされ、セッションに追加されました。 コマンドレットは Test-Files
、コマンドのインポート元のコンピューター上のリモート セッションで実行されます。 PowerShell は、TestCmdlets モジュールに格納されている情報からセッションを作成します。
例 4: 現在のセッションのエクスポートコマンドと clobber コマンド
次の使用例は、変数に格納されているコマンドを現在のセッションにエクスポートします。
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
このコマンドは Export-PSSession
、変数の PSSession からすべてのコマンドとすべての書式設定データを $S
現在のセッションにエクスポートします。 AllowClobber パラメーターには、現在のセッションのコマンドと同じ名前のコマンドが含まれています。
例 5: 閉じた PSSession からコマンドをエクスポートする
この例では、エクスポートされたコマンドを作成した PSSession が閉じられたときに、特殊なオプションを指定してエクスポートされたコマンドを実行する方法を示します。
モジュールのインポート時に元のリモート セッションが閉じられた場合、モジュールは、元のコンピューターに接続する開いているリモート セッションを使用します。 元のコンピューターへの現在のセッションがない場合、モジュールはセッションを再確立します。
リモート セッションで特別なオプションを指定してエクスポートされたコマンドを実行するには、モジュールをインポートする前に、それらのオプションを使用してリモート セッションを作成する必要があります。 SessionOption パラメーターをNew-PSSession
指定して コマンドレットを使用する
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
コマンドレットは New-PSSessionOption
PSSessionOption オブジェクトを作成し、 オブジェクトを 変数に $Options
保存します。 このコマンドは New-PSSession
、Server01 コンピューターに PSSession を作成します。
SessionOption パラメーターは、 に格納されているオブジェクトを$Options
使用します。 セッションは 変数に $S
格納されます。
コマンドレットは Export-PSSession
、 の PSSession $S
から Server01 モジュールにコマンドをエクスポートします。
コマンドレットは Remove-PSSession
、変数内の PSSession を $S
削除します。
コマンドレットは New-PSSession
、Server01 コンピューターに接続する新しい PSSession を作成します。 SessionOption パラメーターは、 に格納されているオブジェクトを$Options
使用します。 コマンドレットは Import-Module
、Server01 モジュールからコマンドをインポートします。 モジュール内のコマンドは、Server01 コンピューターの PSSession で実行されます。
パラメーター
-AllowClobber
現在のセッションのコマンドと同じ名前でも、指定されたコマンドをエクスポートします。
現在のセッションのコマンドと同じ名前のコマンドをエクスポートすると、エクスポートされたコマンドは元のコマンドを非表示または置き換えます。 詳細については、「about_Command_Precedence」(コマンドの優先順位について) を参照してください。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
指定された引数 (パラメーター値) を使用して生成されたコマンドのバリアントをエクスポートします。
たとえば、 の PSSession $S
の証明書 (Cert:) ドライブで コマンドのバリアントGet-Item
をエクスポートするには、「」と入力しますExport-PSSession -Session $S -Command Get-Item -ArgumentList cert:
。
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Certificate
フォーマット ファイル (*) の署名に使用されるクライアント証明書を指定します。作成するモジュール内の Format.ps1xml) またはスクリプト モジュール Export-PSSession
ファイル (.psm1)。 証明書が格納されている変数を入力するか、証明書を取得するコマンドまたは式を入力します。
証明書を検索するには、 コマンドレットを Get-PfxCertificate
使用するか、 Get-ChildItem
証明書 (Cert:) ドライブで コマンドレットを使用します。 証明書が無効な場合、または証明書に十分な権限がない場合、コマンドは失敗します。
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
指定した名前または名前パターンのコマンドのみをエクスポートします。 ワイルドカードを使用できます。 CommandName またはそのエイリアス Name を使用します。
既定では、 Export-PSSession
現在のセッションのコマンドと同じ名前のコマンドを除き、PSSession からすべてのコマンドをエクスポートします。 これにより、コマンドが非表示にされたり、現在のセッションのコマンドに置き換えられるのを防ぐことができます。 他のコマンドを非表示にしたり置き換えたりするコマンドであっても、すべてのコマンドをエクスポートするには、 AllowClobber パラメーターを使用します。
CommandName パラメーターを使用する場合、FormatTypeName パラメーターを使用しない限り、コマンドの書式設定ファイルはエクスポートされません。 同様に、 FormatTypeName パラメーターを使用する場合、 CommandName パラメーターを使用しない限り、コマンドはエクスポートされません。
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-CommandType
指定された型のコマンド オブジェクトのみをエクスポートします。 CommandType またはそのエイリアスの Type を使用します。
このパラメーターに使用できる値は次のとおりです。
Alias
: 現在のセッション内のすべての PowerShell エイリアス。All
: すべてのコマンドの種類。 これは と同等ですGet-Command -Name *
。Application
: Path 環境変数 () に一覧表示されているパス内の PowerShell ファイル以外のすべてのファイル ($env:path
.txt、.exe、.dll ファイルを含む)。Cmdlet
: 現在のセッションのコマンドレット。 コマンドレットが既定値です。Configuration
: PowerShell 構成。 詳細については、「 about_Session_Configurations」を参照してください。ExternalScript
: パス環境変数 ($env:path
) に一覧表示されているパス内のすべての .ps1 ファイル。Filter
とFunction
: すべての PowerShell 関数。Script
現在のセッションのスクリプト ブロック。Workflow
PowerShell ワークフロー。 詳細については、「 about_Workflows」を参照してください。
これらの値は、フラグ ベースの列挙体として定義されます。 複数の値を組み合わせて、このパラメーターを使用して複数のフラグを設定できます。 値は、値の配列として、またはそれらの値のコンマ区切り文字列として CommandType パラメーターに渡すことができます。 コマンドレットは、バイナリ OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
ターゲット ファイルのエンコードの種類を指定します。 既定値は utf8NoBOM
です。
このパラメーターに使用できる値は次のとおりです。
ascii
: ASCII (7 ビット) 文字セットのエンコードを使用します。bigendianunicode
: ビッグ エンディアンのバイト順を使用して UTF-16 形式でエンコードします。bigendianutf32
: ビッグ エンディアンのバイト順を使用して UTF-32 形式でエンコードします。oem
: MS-DOS およびコンソール プログラムの既定のエンコードを使用します。unicode
: リトル エンディアンバイト順を使用して UTF-16 形式でエンコードします。utf7
: UTF-7 形式でエンコードします。utf8
: UTF-8 形式でエンコードします。utf8BOM
: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードしますutf8NoBOM
: バイト オーダー マーク (BOM) を使用せずに UTF-8 形式でエンコードしますutf32
: UTF-32 形式でエンコードします。
PowerShell 6.2 以降では、 Encoding パラメーターを使用すると、登録済みコード ページの数値 ID (など -Encoding 1251
) または登録済みコード ページの文字列名 (など -Encoding "windows-1251"
) も許可されます。 詳細については、 Encoding.CodePage の .NET ドキュメントを参照してください。
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
ファイルが読み取り専用属性を持つ場合でも、1 つ以上の既存の出力ファイルを上書きします。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
指定された Microsoft .NET Framework 型の書式設定命令をエクスポートします。 型名を入力します。 既定では、 Export-PSSession
System.Management.Automation 名前空間にないすべての.NET Framework型の書式設定命令がエクスポートされます。
このパラメーターの値は、コマンドがインポートされるセッション内のコマンドによって Get-FormatData
返される型の名前である必要があります。 リモート セッション内のすべての書式設定データを取得するには、「」と入力します *
。
FormatTypeName パラメーターを使用する場合、CommandName パラメーターを使用しない限り、コマンドはエクスポートされません。
CommandName パラメーターを使用する場合、FormatTypeName パラメーターを使用しない限り、コマンドの書式設定ファイルはエクスポートされません。
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedModule
値には、モジュール名、完全なモジュール仕様、またはモジュール ファイルへのパスを指定できます。
値がパスの場合、パスは完全修飾または相対パスにすることができます。 相対パスは、using ステートメントを含むスクリプトを基準にして解決されます。
値が名前またはモジュールの指定である場合、PowerShell は PSModulePath で指定されたモジュールを検索します。
モジュール仕様は、次のキーを持つハッシュテーブルです。
ModuleName
- 必須 モジュール名を指定します。GUID
- オプション モジュールの GUID を指定します。- また、以下の 3 つのキーのうち少なくとも 1 つを指定する 必要 もあります。
ModuleVersion
- モジュールの最小許容バージョンを指定します。MaximumVersion
- モジュールの許容される最大バージョンを指定します。RequiredVersion
- モジュールの正確で必要なバージョンを指定します。 これは、他のバージョン キーでは使用できません。
Module パラメーターと同じコマンドで FullyQualifiedModule パラメーターを指定することはできません。 2 つのパラメーターは相互に排他的です。
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
指定した PowerShell スナップインとモジュール内のコマンドのみをエクスポートします。 スナップインとモジュールの名前を入力します。 ワイルドカードは使用できません。
詳細については、「および about_PSSnapins」を参照してくださいImport-Module
。
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputModule
によって Export-PSSession
作成されるモジュールの省略可能なパスと名前を指定します。 既定のパスは $HOME\Documents\WindowsPowerShell\Modules
です。 このパラメーターは必須です。
モジュールサブディレクトリまたは作成するファイルのいずれかが既に存在する Export-PSSession
場合、コマンドは失敗します。 既存のファイルを上書きするには、 Force パラメーターを使用します。
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
コマンドのエクスポート元の PSSession を指定します。 セッション オブジェクトを含む変数、またはセッション オブジェクトを取得するコマンド (コマンドなど) を Get-PSSession
入力します。 このパラメーターは必須です。
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
None
オブジェクトをこのコマンドレットにパイプすることはできません。
出力
このコマンドレットは、作成したモジュールを構成するファイルの一覧を返します。
メモ
Export-PSSession
は、PowerShell リモート処理インフラストラクチャに依存しています。 このコマンドレットを使用するには、リモート用にコンピューターを構成する必要があります。 詳細については、「about_Remote_Requirements」を参照してください。
を使用 Export-PSSession
して PowerShell プロバイダーをエクスポートすることはできません。
エクスポートされたコマンドは、エクスポート元の PSSession で暗黙的に実行されます。 コマンドをリモートで実行する詳細は、PowerShell によって完全に処理されます。 ローカル コマンドを実行するのと同じように、エクスポートしたコマンドを実行できます。
Export-ModuleMember
は、エクスポートするモジュール内の PSSession に関する情報をキャプチャして保存します。 モジュールをインポートするときにコマンドのエクスポート元の PSSession が閉じられ、同じコンピューターにアクティブな PSSession がない場合、モジュール内のコマンドは PSSession の再作成を試みます。 PSSession の再作成が失敗した場合、エクスポートされたコマンドは実行されません。
モジュールでキャプチャして保存するExport-ModuleMember
セッション情報には、ユーザー設定変数で$PSSessionOption
指定したセッション オプションや、、Enter-PSSession
、または Invoke-Command
コマンドレットの New-PSSession
SessionOption パラメーターを使用したセッション オプションは含まれません。 モジュールをインポートするときに、元の PSSession が閉じている場合、モジュールは同じコンピューターに対する別の利用可能な PSSession を使用します。 インポートされたコマンドを正しい構成のセッションで実行するには、必要なオプションで PSSession を作成してから、モジュールをインポートするようにしてください。
エクスポートするコマンドを見つけるには、 Export-PSSession
コマンドレットを Invoke-Command
使用して PSSession でコマンドを実行 Get-Command
します。 コマンドの書式設定データを取得して保存するには、 コマンドレットと Export-FormatData
コマンドレットをGet-FormatData
使用します。 コマンドを実行Export-PSSession
すると、、Get-Command
、Get-FormatData
、 Export-FormatData
からのInvoke-Command
エラー メッセージが表示される場合があります。 また、Export-PSSession
、および コマンドレットを含Select-Object
Get-Command
Get-FormatData
まないセッションからコマンドをGet-Help
エクスポートすることはできません。
Export-PSSession
では、 コマンドレットを Write-Progress
使用してコマンドの進行状況が表示されます。 コマンドが実行中の場合、進行状況バーが表示されます。
エクスポートされたコマンドには、ユーザー インターフェイスを備えたプログラム (たとえば、メモ帳) を起動することができないなど、他のリモート コマンドと同じ制限があります。
PowerShell プロファイルは PSSessions では実行されないため、プロファイルがセッションに追加するコマンドは では Export-PSSession
使用できません。 プロファイルからコマンドをエクスポートするには、コマンドを Invoke-Command
使用して PSSession でプロファイルを手動で実行してからコマンドをエクスポートします。
コマンドが書式設定データをインポートしない場合でも、作成する Export-PSSession
モジュールに書式設定ファイルが含まれる場合があります。 コマンドで書式データがインポートされない場合、作成される書式ファイルに書式データは含まれません。