PowerShell Provider - Function
 記事記号:[me1508] 初版:2011/May/10

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

プロバイダー名
    Function
    
ドライブ
    Function:
    
概要
    Windows PowerShell で定義されている関数へのアクセスを提供します。
    
説明
    Windows PowerShell 関数プロバイダーを使用すると、Windows PowerShell で関数や
    フィルターを取得、追加、変更、クリア、および削除できます。
    
    関数は名前の付いたコード ブロックであり、何らかのアクションを実行します。関
    数名を入力すると、その関数のコードが実行されます。フィルターは名前の付いたコ
    ード ブロックであり、アクションの条件を設定します。フィルター名は、Where-Obj
    ect コマンドなどの条件の代わりとして使用することができます。
    
    Function: ドライブでは、関数は "Function" というラベルで始まり、フィルターは 
    "Filter" というラベルで始まりますが、適切なコンテキストで使用されれば、ラベ
    ルに関係なく適切に動作します。
    
    関数プロバイダーは、関数オブジェクトとフィルター オブジェクトのみで構成され
    るフラットな名前空間です。関数にもフィルターにも子の項目がありません
    
    各関数は System.Management.Automation.FunctionInfo クラスのインスタンスです。
    各フィルターは System.Management.Automation.FilterInfo クラスのインスタンス
    です。
    
    このセクションでは関数の管理方法の例を示しますが、フィルターにも同じ管理方法
    が適用できます。
    
    関数プロバイダーは、Function: ドライブにデータ ストアを公開します。関数を操
    作するには、場所を Function: ドライブに変更します ("set-location function:")。
    または、別の Windows PowerShell ドライブからも操作できます。別の場所から関数
    を参照するには、パスでドライブ名 (Function:) を指定します。
    
    Function プロバイダーは、Invoke-Item を除き、名前に Item という名詞が含まれ
    るすべてのコマンドレットをサポートします。また、Get-Content および Set-Conte
    nt コマンドレットもサポートします。ただし、ItemProperty という名詞を含むコマ
    ンドレット (ItemProperty コマンドレット)、およびあらゆるコマンドレットの Fil
    ter パラメーターはサポートされません。
    
    関数に対するすべての変更は、現在のコンソールにのみ影響します。変更を保存する
    には、関数を Windows PowerShell プロファイルに追加するか、Export-Console を
    使用して現在のコンソールを保存します。
    
機能
    
タスク
    タスク: Function: ドライブに移動する
        
        -------------------------- 例 1 --------------------------
        
        現在の場所を Function: ドライブに変更します。このコマンドは、Windows Pow
        erShell の任意のドライブから使用できます。ファイル システム ドライブに戻
        るには、そのドライブ名を入力します。たとえば、「set-location c:」と入力
        します。
        
        set-location function:
        
    タスク: 関数を取得する
        
        -------------------------- 例 1 --------------------------
        
        このコマンドは、現在のセッションの全関数の一覧を取得します。このコマンド
        は、Windows PowerShell の任意のドライブから使用できます。
        
        get-childitem -path function:
        
        -------------------------- 例 2 --------------------------
        
        このコマンドは、Function: ドライブから "man" 関数を取得します。また、Get
        -Item コマンドレットを使用して関数を取得します。結果はパイプライン演算子 
        (|) によって Format-Table に渡されます。
        
        Wrap パラメーターを指定しているため、行に収まらないテキストは次の行に表
        示されます。Autosize パラメーターを指定しているため、テキストが収まるよ
        うに表の列のサイズが調整されます。
        
        get-item -path man | format-table -wrap -autosize
        
        
        別のドライブから使用する場合は、ドライブ名 (Function:) をパスに追加しま
        す。
        -------------------------- 例 3 --------------------------
        
        これらのコマンドはどちらも "c:" という関数を取得します。最初のコマンドは
        任意のドライブで使用できます。2 番目のコマンドは Function: ドライブで使
        用します。
        
        ドライブの構文上、ドライブ名の最後にコロンがあるため、パスはドライブ名で
        修飾する必要があります。Function: ドライブ内で使用する場合はどちらの形式
        も可能です。2 番目のコマンドのピリオド (.) は、現在の場所を表しています。
        
        c:\PS> get-item -path function:c:
        
        PS Function> get-item -path .\c:
        
    タスク: 関数を作成する

        -------------------------- 例 1 --------------------------
        
        次のコマンドは、New-Item コマンドレットを使用して "HKLM:" という関数を作
        成します。かっこ内の式は、"HKLM:" という関数名で表されるスクリプト ブロ
        ックです。
        
        new-item -path function:hklm: -value {set-location hklm:}
        
        Windows PowerShell コマンド ラインに入力して関数を作成することもできます。
        たとえば、「function:hklm: {set-location hklm:}」と入力します。Function: 
        ドライブから入力する場合は、ドライブ名を省略できます。
        
        New-Item では "Filter" ラベルを指定できないため、フィルターには関数とし
        てラベルが付けられますが、どのラベルが付けられても適切に動作します。"Fil
        ter" ラベルを使用してフィルターを作成するには、コマンド ラインでフィルタ
        ーを入力します。たとえば、「filter:Running {$_.Status -eq "Running"}」と
        入力します。
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、New-Item コマンドレットを使用して Csrss という関数を作成
        します。Options 動的パラメーターを使用して、関数の Options プロパティの
        値に ReadOnly を指定しています。
        
        new-item -path function: -name csrss -options readonly -value {get-proce
        ss csrss}
        
        このコマンドは任意の場所から使用できます。Function: ドライブから使用する
        場合は、ドット (.) を指定してパスを指定できます。ドット (.) は、現在の場
        所を表します。
        
    タスク: 関数を削除する
        
        -------------------------- 例 1 --------------------------
        
        このコマンドは、"hklm:" 関数を現在のセッションから削除します。
        
        remove-item function:hklm:
        
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、Options プロパティの値が Constant である関数を除くすべて
        の関数を現在のセッションから削除します。Force パラメーターが指定されてい
        ない場合、Options プロパティの値が ReadOnly である関数は削除されません。
        
        remove-item function:* -force
        
        すべての関数を削除すると、コマンド プロンプトが変わります。これは、コマ
        ンド プロンプトの内容を定義する prompt 関数が削除されるためです。
        
    タスク: 関数のプロパティとメソッドを表示する
        
        -------------------------- 例 1 --------------------------
        
        このコマンドは、Get-Item コマンドレットを使用してすべての関数を取得しま
        す。結果がパイプライン演算子によって Get-Member コマンドレットに渡され、
        オブジェクトのメソッドとプロパティが表示されます。
        
        get-item -path function:* | get-member
        
        パイプを使用してオブジェクトのコレクション (Function: ドライブの関数のコ
        レクションなど) を Get-Member に渡すと、Get-Member はコレクション内の各
        オブジェクトを個別に評価し、検出した各オブジェクトの型に関する情報を返し
        ます。すべてのオブジェクトが同じ型である場合は、その型に関する情報を返し
        ます。この例では、関数はすべて FunctionInfo オブジェクトです。
        
        FunctionInfo オブジェクトのコレクションに関する情報を取得するには、Get-M
        ember の InputObject パラメーターを使用します。たとえば、「get-member -I
        nputObject (get-item function:*)」と入力します。InputObject パラメーター
        が使用された場合、Get-Member はコレクション内のオブジェクトではなく、コ
        レクションを評価します。
        -------------------------- 例 2 --------------------------
        
        このコマンドは、"prompt" 関数のプロパティの値を一覧表示します。Get-Item 
        コマンドレットを使用して、"prompt" 関数を表すオブジェクトを取得します。
        その結果は、パイプライン演算子 (|) によって Format-List コマンドに渡され
        ます。Format-List コマンドは、ワイルドカード文字 (*) が指定された Proper
        ty パラメーターを使用して、"prompt" 関数のすべてのプロパティの値を書式設
        定し、表示します。
        
        get-item function:prompt | format-list -property *
        
    タスク: 関数のプロパティを変更する
        
        -------------------------- 例 1 --------------------------
        
        Set-Item コマンドレットと Options 動的パラメーターを使用すると、関数の O
        ptions プロパティの値を変更できます。
        
        このコマンドは、prompt 関数の AllScope オプションと ReadOnly オプション
        を設定します。このコマンドは、Set-Item コマンドレットの Options 動的パラ
        メーターを使用します。Options パラメーターを Set-Item で使用できるのは、
        Alias プロバイダーまたは Function プロバイダーと共に使用した場合のみです。
        
        set-item -path function:prompt -options "AllScope,ReadOnly"
        
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、Set-Item コマンドレットを使用してパスの前に時刻を表示す
        るように prompt 関数を変更します。
        
        set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " 
        " + $(Get-Location) + '> '}
        
        この変更は、FunctionInfo オブジェクトの Definition プロパティおよび Scr
        iptBlock プロパティに影響します。変更した結果を確認するには、「get-item 
        -path function:prompt | format-list -property *」と入力します。
        -------------------------- 例 3 --------------------------
        
        このコマンドは、Rename-Item コマンドレットを使用して、"help" 関数の名前
        を "gh" に変更します。
        
        rename-item -path function:help -newname gh
        
    タスク: 関数をコピーする
        
        -------------------------- 例 1 --------------------------
        
        このコマンドは "prompt" 関数を "oldPrompt" にコピーします。これで、promp
        t 関数と関連付けられたスクリプト ブロックに新しい名前が作成されたことに
        なります。prompt 関数を変更する予定がある場合は、この方法で元の prompt 
        関数を保存することができます。
        
        新しい関数の Options プロパティの値は None です。Options プロパティの値
        を変更するには、Set-Item を使用します。
        
        copy-item -path function:prompt -destination function:oldPrompt
        
動的パラメーター
    -Options 
        関数の Options プロパティの値を決定します。
        
            None
                オプションはありません。既定値は "None" です。
                
            Constant
                関数は削除できず、プロパティは変更できません。Constant を指定で
                きるのは、関数を作成するときのみです。既存の関数のオプションを C
                onstant に変更することはできません。
                
            Private
                関数は、現在のスコープでのみ表示されます (子スコープでは表示され
                ません)。
                
            ReadOnly
                Force パラメーターを使用しない限り、関数のプロパティは変更できま
                せん。Remove-Item を使用すると、関数を削除できます。
                
            AllScope
                関数は、新たに作成されるすべてのスコープにコピーされます。
                
        サポートされるコマンドレット: New-Item, Set-Item
    
メモ

関連するリンク
    about_Functions 
    about_Providers 
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Provider、Function
ご利用数: 1918545
感想・要望・問い合わせは こちら