次の方法で共有


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

これらのコマンドは、 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-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 使用するか、 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 ファイル。
  • FilterFunction: すべての 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-PSSessionSystem.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」を参照してください。

を使用 Export-PSSession して PowerShell プロバイダーをエクスポートすることはできません。

エクスポートされたコマンドは、エクスポート元の 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-CommandGet-FormatDataExport-FormatData からのInvoke-Commandエラー メッセージが表示される場合があります。 また、Export-PSSession、および コマンドレットを含Select-ObjectGet-CommandGet-FormatDataまないセッションからコマンドをGet-Helpエクスポートすることはできません。

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

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

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

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