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 が閉じられたときに、特殊なオプションを指定してエクスポートされたコマンドを実行する方法を示します。
モジュールのインポート時に元のリモート セッションが閉じられた場合、モジュールは、元のコンピューターに接続する開いているリモート セッションを使用します。 元のコンピューターへの現在のセッションがない場合、モジュールはセッションを再確立します。
リモート セッションで特殊なオプションを指定してエクスポートされたコマンドを実行するには、モジュールをインポートする前に、これらのオプションを使用してリモート セッションを作成する必要があります。 New-PSSession
SessionOption パラメーターでコマンドレットを使用する
$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
使用するか、証明書 (Cert:) ドライブでコマンドレットを使用 Get-ChildItem
します。 証明書が無効な場合、または証明書に十分な権限がない場合、コマンドは失敗します。
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
: Path 環境変数 ($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 ビット) 文字セットのエンコードを使用します。ansi
: 現在のカルチャの ANSI コード ページのエンコードを使用します。 このオプションは PowerShell 7.4 で追加されました。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 ドキュメントを 参照してください。
PowerShell 7.4 以降では、Encoding パラメーターの値をAnsi
使用して、手動で指定しなくても、現在のカルチャの ANSI コード ページの数値 ID を渡すことができます。
Note
UTF-7* の使用は推奨されなくなりました。 PowerShell 7.1 の時点で、Encoding パラメーターに指定utf7
すると警告が書き込まれます。
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」を参照してください。
PowerShell プロバイダーのエクスポートには使用 Export-PSSession
できません。
エクスポートされたコマンドは、エクスポート元の 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-FormatData
Export-FormatData
Get-Command
エラー メッセージInvoke-Command
が表示される場合があります。 また、Export-PSSession
、Select-Object
、およびコマンドレットを含Get-Command
Get-FormatData
まないセッションからコマンドをGet-Help
エクスポートすることはできません。
Export-PSSession
は、コマンドレットを Write-Progress
使用してコマンドの進行状況を表示します。 コマンドが実行中の場合、進行状況バーが表示されます。
エクスポートされたコマンドには、ユーザー インターフェイスを備えたプログラム (たとえば、メモ帳) を起動することができないなど、他のリモート コマンドと同じ制限があります。
PowerShell プロファイルは PSSession では実行されないため、プロファイルがセッションに追加するコマンドは使用できません Export-PSSession
。 プロファイルからコマンドをエクスポートするには、コマンドをエクスポートする前に、コマンドを Invoke-Command
使用して PSSession でプロファイルを手動で実行します。
作成する Export-PSSession
モジュールには、書式設定ファイルが含まれている場合があります。このコマンドで書式設定データがインポートされない場合でも、 コマンドで書式データがインポートされない場合、作成される書式ファイルに書式データは含まれません。
関連リンク
PowerShell