次の方法で共有


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-PSSessionExport-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

これらのコマンドは、GetSetリモート コンピューター上の 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-PSSessionOptionPSSessionOption オブジェクトを作成し、そのオブジェクトを変数に $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

このコマンドレットにオブジェクトをパイプすることはできません。

出力

FileInfo

このコマンドレットは、作成したモジュールを構成するファイルの一覧を返します。

メモ

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-PSSessionSessionOption パラメーターを使用したセッション オプションは含まれません。 モジュールをインポートするときに、元の PSSession が閉じている場合、モジュールは同じコンピューターに対する別の利用可能な PSSession を使用します。 インポートされたコマンドを正しい構成のセッションで実行するには、必要なオプションで PSSession を作成してから、モジュールをインポートするようにしてください。

エクスポートするコマンドを検索するには、 Export-PSSession コマンドレットを Invoke-Command 使用して PSSession でコマンドを実行 Get-Command します。 コマンドの書式設定データを取得して保存するには、コマンドレットとExport-FormatDataコマンドレットをGet-FormatData使用します。 コマンドを実行Export-PSSessionすると、 Get-FormatDataExport-FormatDataGet-Commandエラー メッセージInvoke-Commandが表示される場合があります。 また、Export-PSSessionSelect-Object、およびコマンドレットを含Get-CommandGet-FormatDataまないセッションからコマンドをGet-Helpエクスポートすることはできません。

Export-PSSession は、コマンドレットを Write-Progress 使用してコマンドの進行状況を表示します。 コマンドが実行中の場合、進行状況バーが表示されます。

エクスポートされたコマンドには、ユーザー インターフェイスを備えたプログラム (たとえば、メモ帳) を起動することができないなど、他のリモート コマンドと同じ制限があります。

PowerShell プロファイルは PSSession では実行されないため、プロファイルがセッションに追加するコマンドは使用できません Export-PSSession。 プロファイルからコマンドをエクスポートするには、コマンドをエクスポートする前に、コマンドを Invoke-Command 使用して PSSession でプロファイルを手動で実行します。

作成する Export-PSSession モジュールには、書式設定ファイルが含まれている場合があります。このコマンドで書式設定データがインポートされない場合でも、 コマンドで書式データがインポートされない場合、作成される書式ファイルに書式データは含まれません。