PowerShell Cmdlet - Export-PSSession
 記事記号:[mf1949] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Export-PSSession
    
概要
    別のセッションからコマンドをインポートし、Windows PowerShell モジュールに保
    存します。
    
構文
    Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandN
    ame] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentLi
    st <Object[]>] [-CommandType {Alias | Function | Filter | Cmdlet | ExternalS
    cript | Application | Script | All}] [-Encoding <string>] [-Force] [-Module 
    <string[]>] [<CommonParameters>]
    
説明
    Export-PSSession コマンドレットは、ローカルまたはリモート コンピューターの別
    の PSSession セッションからコマンドレット、関数、エイリアス、およびその他のコ
    マンド タイプを取得して、Windows PowerShell のモジュールに保存します。モジュ
    ールのコマンドを現在のセッションに追加するには、Import-Module コマンドレット
    を使用します。
    
    コマンドを別の PSSession から現在のセッションにインポートする Import-PSSessio
    n とは異なり、Export-PSSession はコマンドをモジュールに保存します。コマンドは
    現在のセッションにインポートされません。
    
    コマンドをエクスポートするには、最初に New-PSSession コマンドレットを使用して、
    エクスポートするコマンドが含まれている PSSession を作成します。次に、Export-P
    SSession コマンドレットを使用してコマンドをエクスポートします。既定では、Expo
    rt-PSSession は現在のセッションに存在するコマンド以外のすべてのコマンドをエク
    スポートしますが、CommandName パラメーターを使用して、エクスポートするコマン
    ドを指定できます。
    
    Export-PSSession コマンドレットは、Windows PowerShell の暗黙的なリモート処理
    機能を使用します。コマンドを現在のセッションにインポートすると暗黙的に、元の
    セッションで、または、元のコンピューターの同様のセッションで実行されます。
    
パラメーター
    -AllowClobber [<SwitchParameter>]
        現在のセッションに同じ名前のコマンドがあるかどうかに関係なく、指定された
        コマンドをエクスポートします。
        
        現在のセッション内のコマンドと同じ名前のコマンドをインポートした場合、イ
        ンポートされたコマンドによって元のコマンドが隠されるか、置き換えられます。
        詳細については、「about_Command_Precedence」を参照してください。
        
        Export-PSSession は、現在のセッション内のコマンドと同じ名前のコマンドは
        インポートしません。コマンド名の競合を防ぐために、これが既定の動作となっ
        ています。
        
        必須                         false
        位置                         named
        既定値                       False
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -ArgumentList <Object[]>
        指定した引数 (パラメーター値) を使用した結果得られるコマンドの変数をエク
        スポートします。
        
        たとえば、$s の PSSession にある証明書 (Cert:) ドライブの Get-Item コマ
        ンドの変数をエクスポートするには、「export-pssession -session $s -comman
        d get-item -argumentlist cert:」と入力します。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -CommandName <string[]>
        指定した名前または名前のパターンのコマンドのみをエクスポートします。ワイ
        ルドカードを使用できます。"CommandName" またはそのエイリアスである "Name
        " を使用します。
        
        既定では、Export-PSSession は、現在のセッション内のコマンドと同じ名前の
        コマンドを除くすべてのコマンドを PSSession セッションからエクスポートし
        ます。このため、インポートされたコマンドによって現在のセッション内のコマ
        ンドが隠れたり、置き換えられたりすることはありません。すべてのコマンド 
        (他のコマンドを隠したり、置き換えたりすることになるものも含む) をエクス
        ポートするには、AllowClobber パラメーターを使用します。
        
        CommandName パラメーターを使用する場合、FormatTypeName パラメーターを使
        用しない限り、コマンドの書式設定ファイルはエクスポートされません。同様に、
        FormatTypeName パラメーターを使用する場合、CommandName パラメーターを使
        用しない限り、コマンドはエクスポートされません。
        
        必須                         false
        位置                         3
        既定値                       セッション内のすべてのコマンド。
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -CommandType <CommandTypes>
        指定したタイプのコマンド オブジェクトのみをエクスポートします。"CommandT
        ype" またはそのエイリアスである "Type" を使用します。
        
        有効な値は次のとおりです。
        -- Alias: 現在のセッションのすべての Windows PowerShell エイリアス。
        -- All: すべてのコマンド タイプ。"get-command *" と同等です。
        -- Application: Path 環境変数 ($env:path) に示されているパスにある Windo
           ws-PowerShell 以外のすべてのファイル (.txt、.exe、.dll など)。
        -- Cmdlet: 現在のセッションのコマンドレット。既定値は "Cmdlet" です。
        -- ExternalScript: Path 環境変数 ($env:path) に示されているパスにあるす
           べての .ps1 ファイル。
        -- Filter および Function: すべての Windows PowerShell 関数。
        -- Script: 現在のセッションのスクリプト ブロック。
        
        必須                         false
        位置                         named
        既定値                       セッション内のすべてのコマンド。
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Encoding <string>
        出力ファイルのエンコード方式を指定します。指定可能な値は、"Unicode"、"UT
        F7"、"UTF8"、"ASCII"、"UTF32"、"BigEndianUnicode"、"Default"、および "OE
        M" です。既定は "UTF-8" です。
        
        必須                         false
        位置                         named
        既定値                       UTF-8
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Force [<SwitchParameter>]
        ファイルに読み取り専用属性が設定されている場合でも、既存の出力ファイルを
        上書きします。
        
        必須                         false
        位置                         named
        既定値                       False
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -FormatTypeName <string[]>
        指定した Microsoft .NET Framework 型の書式設定命令のみをエクスポートしま
        す。型の名前を入力します。既定では、Export-PSSession は、System.Manageme
        nt.Automation 名前空間に存在しないすべての .NET Framework 型の書式設定命
        令をエクスポートします。
        
        このパラメーターの値は、コマンドのインポート元のセッションで Get-FormatD
        ata コマンドによって返される型の名前である必要があります。リモート セッシ
        ョンのすべての書式設定データを取得するには、「*」と入力します。
        
        FormatTypeName パラメーターを使用する場合、CommandName パラメーターを使用
        しない限り、コマンドはエクスポートされません。同様に、CommandName パラメ
        ーターを使用する場合、FormatTypeName パラメーターを使用しない限り、コマン
        ドの書式設定ファイルはエクスポートされません。
        
        必須                         false
        位置                         4
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Module <string[]>
        指定した Windows PowerShell スナップインおよびモジュールにコマンドのみを
        エクスポートします。スナップインとモジュールの名前を入力します。ワイルド
        カードは使用できません。
        
        詳細については、「about_PSSnapins」および「Import-Module」を参照してくだ
        さい。
        
        必須                         false
        位置                         named
        既定値                       セッション内のすべてのコマンド。
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -OutputModule <string>
        Export-PSSession が作成するモジュールのパス (オプション) および名前を指
        定します。既定のパスは $home\Documents\WindowsPowerShell\Modules です。
        このパラメーターは必須です。
        
        モジュールのサブディレクトリや、Export-PSSession によって作成された既存
        のファイルが存在する場合、このコマンドは失敗します。既存のファイルを上書
        きするには、Force パラメーターを使用します。
        
        必須                         true
        位置                         2
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Session <PSSession>
        コマンドのエクスポート元となる PSSession を指定します。セッション オブジ
        ェクトを含んでいる変数を入力するか、Get-PSSession コマンドなど、セッショ
        ン オブジェクトを取得するコマンドを入力します。このパラメーターは必須で
        す。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    なし
        パイプを使用してオブジェクトを Export-PSSession に渡すことはできません。
    
出力
    System.IO.FileInfo
        Export-PSSession は、作成されたモジュールから成るファイルの一覧を返しま
        す。
    
メモ
        Export-PSSession は Windows PowerShell リモート処理のインフラストラクチ
        ャに依存します。このコマンドレットを使用するには、コンピューターがリモー
        ト処理用に構成されている必要があります。詳細については、「about_Remote_R
        equirements」を参照してください。
        
        Export-PSSession を使用して Windows PowerShell プロバイダーをエクスポー
        トすることはできません。
        
        エクスポートされたコマンドは、暗黙的にエクスポート元の PSSession で実行
        されます。ただし、コマンドをリモート実行する際の詳細な部分は、すべて Win
        dows PowerShell によって処理されます。エクスポートされたコマンドは、ロー
        カルのコマンドとまったく同じように実行できます。
        
        Export-Module は、PSSession に関する情報をキャプチャして、エクスポートし
        たモジュールに保存します。モジュールのインポート時に、コマンドのエクスポ
        ート元の PSSession が閉じられており、同じコンピューターにアクティブな PS
        Sessions が存在しなかった場合、モジュール内のコマンドが PSSession の再作
        成を試みます。PSSession の再作成に失敗した場合、エクスポートされたコマン
        ドは実行されません。
        
        Export-Module によってキャプチャされ、モジュールに保存されたセッション情
        報には、$PSSessionOption 自動変数で指定したオプションや、New-PSSession、
        Enter-PSSession、Invoke-Command のいずれかのコマンドレットの SessionOpti
        on パラメーターを使って指定したオプションなど、セッションのオプションは
        含まれません。モジュールのインポート時に元の PSSession が閉じられていた
        場合、同じコンピューターに対する別の PSSession が利用可能であれば、その 
        PSSession がモジュールによって使用されます。インポートされたコマンドを正
        しい構成のセッションで実行するには、必要なオプションで PSSession を作成
        してから、モジュールをインポートするようにしてください。
        
        エクスポートするコマンドを検索する場合、Export-PSSession は Invoke-Comma
        nd コマンドレットを使用して PSSession で Get-Command コマンドを実行しま
        す。コマンドの書式設定データを取得し、保存する場合は、Get-FormatData お
        よび Export-FormatData コマンドレットを使用します。Export-PSSession コマ
        ンドを実行すると、Invoke-Command、Get-Command、Get-FormatData、および Ex
        port-FormatData のエラー メッセージが表示される場合があります。また、Exp
        ort-PSSession は、Get-Command、Get-FormatData、Select-Object、および Get
        -Help の各コマンドレットを含んでいないセッションからコマンドをエクスポー
        トすることはできません。
        
        Export-PSSession は Write-Progress コマンドレットを使用してコマンドの進
        行状況を表示します。コマンドの実行中は進行状況バーが表示されます。
        
        エクスポートされたコマンドは、ユーザー インターフェイスを使用してメモ帳
        などのプログラムを起動できないなど、他のリモート コマンドと同じ制限があ
        ります。
        
        Windows PowerShell プロファイルは PSSession で実行されないため、プロファ
        イルによってセッションに追加されたコマンドは Export-PSSession では使用で
        きません。プロファイルからコマンドをエクスポートするには、Invoke-Command 
        コマンドを使用して、コマンドをエクスポートする前に手動で PSSession 内の
        プロファイルを実行します。
        
        Export-PSSession によって作成されるモジュールには、コマンドによって書式
        設定データがインポートされない場合でも、書式設定ファイルが含まれることが
        あります。コマンドで書式設定データがインポートされない場合、作成される書
        式設定ファイルに書式設定データは含まれません。
        
    -------------------------- 例 1 --------------------------
    
    C:\PS>$s = new-pssession -computerName Server01
    
    C:\PS> export-pssession -session $s -outputModule Server01
    
    説明
    -----------
    この例のコマンドは、現在のセッション内のコマンドと同じ名前のコマンドを除くす
    べてのコマンドを、Server01 コンピューター上の PSSession からローカル コンピ
    ューター上の Server01 モジュールにエクスポートします。コマンドの書式設定デー
    タもエクスポートされます。
    
    最初のコマンドは Server01 コンピューターで PSSession セッションを作成します。
    2 番目のコマンドは、セッションのコマンドおよび書式設定データを Server01 モジ
    ュールにエクスポートします。
    
    -------------------------- 例 2 --------------------------
    
    C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbo
    x -credential exchangeadmin01@hotmail.com -authentication negotiate
    
    C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* 
    -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII
    
    説明
    -----------
    これらのコマンドは、リモート コンピューター上の Microsoft Exchange Server ス
    ナップインからローカル コンピューター上の $pshome\Modules ディレクトリの Exc
    hange モジュールに、Get コマンドと Set コマンドをエクスポートします。
    
    モジュールを $pshome\Module ディレクトリに格納すると、コンピューターのすべて
    のユーザーがそのモジュールにアクセスできるようになります。
    
    -------------------------- 例 3 --------------------------
    
    C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01
    
    C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -
    commandname *test* -formattypename *
    
    C:\PS> remove-pssession $s
    
    C:\PS> import-module TestCmdlets
    
    C:\PS> get-help test*
    
    C:\PS> test-files
    
    説明
    -----------
    これらのコマンドは、リモート コンピューターの PSSession からコマンドレットを
    エクスポートして、ローカル コンピューターのモジュールに保存します。次に、こ
    のモジュールのコマンドレットが、現在のセッションに追加されて使用できるように
    なります。
    
    最初のコマンドは、Server01 コンピューターで PSSession を作成し、それを $s 変
    数に保存します。
    
    2 番目のコマンドは、$s の PSSession から、名前が "Test" で始まるコマンドレッ
    トをローカル コンピューターの TestCmdlets モジュールにエクスポートします。
    
    3 番目のコマンドは、Remove-PSSession コマンドレットを使用して、$s の PSSessi
    on を現在のセッションから削除します。このコマンドは、PSSession をアクティブ
    にしなくても、そこからインポートされたコマンドを使用できることを示しています。
    
    どのセッションでも随時実行できる 4 番目のコマンドは、Import-Module コマンド
    レットを使用して TestCmdlets モジュール内のコマンドレットを現在のセッション
    に追加します。
    
    5 番目のコマンドは、Get-Help コマンドレットを使用して、名前が "Test" で始ま
    るコマンドレットのヘルプを取得します。モジュール内のコマンドを現在のセッショ
    ンに追加した後は、セッションの他のコマンドと同じように、Get-Help および Get-
    Command コマンドレットを使用して、インポートされたコマンドについて調べること
    ができます。
    
    6 番目のコマンドは、Server01 コンピューターからエクスポートされてセッション
    に追加された Test-Files コマンドレットを使用します。
    
    これだけではわかりにくいですが、Test-Files コマンドが実行されるセッションは、
    実際には、コマンドのインポート元のコンピューターのリモート セッションです。
    Windows PowerShell は、モジュールに保存されている情報からセッションを作成し
    ます。
    
    -------------------------- 例 4 --------------------------
    
    C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands
    
    説明
    -----------
    このコマンドは、$s 変数の PSSession から現在のセッションにすべてのコマンドお
    よびすべての書式設定データをエクスポートします。現在のセッション内のコマンド
    と同じ名前のコマンドを含めるために、AllowClobber パラメーターが使用されてい
    ます。
    
    -------------------------- 例 5 --------------------------
    
    C:\PS>$options = New-PSSessionOption -NoMachineProfile
    
    C:\PS> $s = new-pssession -computername Server01 -sessionoption $options
    
    C:\PS> export-pssession -session $s -outputModule Server01
    
    C:\PS> remove-pssession $s
    
    C:\PS> new-pssession -computername Server01 -sessionoption $options
    
    C:\PS> import-module Server01
    
    説明
    -----------
    この例は、コマンドのエクスポート元の PSSession が閉じていた場合に、エクスポ
    ートしたコマンドを、特定のオプションが指定されたセッションで実行する方法を示
    しています。
    
    Export-PSSession を使用した場合、作成されたモジュールに元の PSSession に関す
    る情報が保存されます。このモジュールをインポートするとき、元のリモート セッ
    ションが閉じていた場合、開いているリモート セッションのうち、元のコンピュー
    ターに接続している、いずれかのセッションがモジュールによって使用されます。
    
    現在のセッションに元のコンピューターへのリモート セッションが存在しない場合、
    モジュール内のコマンドによって、そのコンピューターへのセッションが再度確立さ
    れます。ただし、Export-PSSession を実行しても、New-PSSession の SessionOptio
    n パラメーターを使用して設定されたオプションなど、特殊なオプションはモジュー
    ルに保存されません。
    
    したがって、エクスポートされたコマンドを、特定のオプションが指定されたリモー
    ト セッションで実行する場合は、必要なオプションでリモート セッションを作成し
    てから、モジュールをインポートする必要があります。
    
    最初のコマンドは、New-PSSessionOption コマンドレットを使用して、PSSessionOpt
    ion オブジェクトを作成し、そのオブジェクトを $options 変数に保存します。
    
    2 番目のコマンドは、指定されたオプションを含んだ PSSession を作成します。こ
    のコマンドは、New-PSSession コマンドレットを使用して、Server01 コンピュータ
    ー上に PSSession を作成します。$options 内のオプション オブジェクトを送信す
    るために、SessionOption パラメーターが使用されています。
    
    3 番目のコマンドは、Export-PSSession コマンドレットを使用して、$s の PSSess
    ion から、Server01 モジュールにコマンドをエクスポートします。
    
    4 番目のコマンドは、Remove-PSSession コマンドレットを使用して、$s 変数の PS
    Session を削除します。
    
    5 番目のコマンドは、New-PSSession コマンドレットを使用して、Server01 コンピ
    ューターに接続する新しい PSSession を作成します。$options 変数内のセッション 
    オプションは、この PSSession でも使用されます。
    
    6 番目のコマンドは、Import-Module コマンドレットを使用して、Server01 モジュ
    ールからコマンドをインポートします。モジュール内のコマンドは、Server01 コン
    ピューター上の PSSession で実行されます。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=135213
    about_Command_Precedence 
    Import-PSSession 
    New-PSSession 
    Import-Module 
    Invoke-Command 
    about_PSSessions 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Export-PSSession
ご利用数: 1974617
感想・要望・問い合わせは こちら