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