about_Function_Provider
プロバイダー名
機能
ドライブ
Function:
機能
ShouldProcess
簡単な説明
PowerShell で定義されている関数へのアクセスを提供します。
詳しい説明
PowerShell Function プロバイダーを使用すると、PowerShell で関数とフィルターを取得、追加、変更、クリア、および削除できます。
関数とは、アクションを実行するコードのブロックに名前が付けられたものです。 関数名を入力すると、関数のコードが実行されます。 フィルターとは、アクションの条件を確立するコードのブロックに名前が付けられたものです。 Where-Object
コマンドなど、条件の代わりにフィルターの名前を入力できます。
Function ドライブは、関数オブジェクトとフィルター オブジェクトのみを含むフラット名前空間です。 関数にもフィルターにも子項目はありません。
Function プロバイダーは、この記事で説明する次のコマンドレットをサポートしています。
このプロバイダーによって公開される型
各関数は、 System.Management.Automation.FunctionInfo クラスのインスタンスです。 各フィルターは、 System.Management.Automation.FilterInfo クラスのインスタンスです。
関数ドライブ内を移動する
Function プロバイダーは、Function:
ドライブ内のデータ ストアを公開します。 関数を操作するには、場所を Function:
ドライブ (Set-Location Function:
) に変更します。 または、別の PowerShell ドライブから作業することもできます。 別の場所から関数を参照するには、パスでドライブ名 (Function:
) を使用します。
Set-Location Function:
ファイル システム ドライブに戻るには、ドライブ名を入力します。 たとえば、次のように入力します。
Set-Location C:
他の PowerShell ドライブから Function プロバイダーを操作することもできます。 別の場所から関数を参照するには、パスに Function:
ドライブ名を使用します。
Note
PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 dir
やls
などのコマンドが、Get-ChildItem のエイリアスになりました。cd
は、Set-Location のエイリアスです。 pwd
は、Get-Location のエイリアスです。
関数の取得
このコマンドは現在のセッションのすべての関数の一覧を取得します。 このコマンドは、任意の PowerShell ドライブから使用できます。
Get-ChildItem -Path Function:
関数プロバイダーにはコンテナーがないため、上記のコマンドは、 Get-ChildItem
で使用すると同じ効果を持ちます。
Get-ChildItem -Path Function:
次に示すように、 Definition プロパティにアクセスすることで、関数の定義を取得できます。
(Get-Item -Path function:more).Definition
ドル記号 ($
) で始まるプロバイダー パスを使用して、関数の定義を取得することもできます。
$function:more
名前にダッシュ (-
) が含まれる関数の定義を取得するには、ドル記号の中かっこの後に値をラップします。
${function:Clear-Host}
選択した関数の取得
このコマンドは、Function:
ドライブからman
関数を取得します。 Get-Item
コマンドレットを使用して関数を取得します。 パイプライン演算子 (|
) は、結果を Format-Table
に送信します。 -Wrap
パラメーターは、行に収まらないテキストを次の行に転送します。 -Autosize
パラメーターは、テキストに合わせてテーブル列のサイズを変更します。
Get-Item -Path man | Format-Table -Wrap -Autosize
関数プロバイダー パスの操作
これらのコマンドはどちらも、 c:
という名前の関数を取得します。 最初のコマンドはすべてのドライブで使用できます。 2 番目のコマンドは、 Function:
ドライブで使用されます。 ドライブの構文であり、名前がコロンで終わるため、ドライブ名でパスを修飾する必要があります。 Function:
ドライブ内では、どちらの形式でも使用できます。 2 番目のコマンドでは、ドット (.
) は現在の場所を表します。
PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:
関数の作成
このコマンドでは、 New-Item
コマンドレットを使用して、 Win32:
という名前の関数を作成します。
括弧で囲まれた式は関数名により表されるスクリプト ブロックです。
New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}
PowerShell コマンド ラインで関数を入力して作成することもできます。 たとえば、tpe Function:Win32: {Set-Location C:\Windows\System32}
。 Function:
ドライブにいる場合は、ドライブ名を省略できます。
関数の削除
このコマンドは、現在のセッションから more
関数を削除します。
Remove-Item Function:more
関数の変更
このコマンドでは、 Set-Item
コマンドレットを使用して prompt
関数を変更し、パスの前の時刻を表示します。
Set-Item -Path Function:prompt -Value {
'PS '+ (Get-Date -Format t) + " " + (Get-Location) + '> '
}
関数の名前を変更する
このコマンドでは、 Rename-Item
コマンドレットを使用して、 help
関数の名前を gh
に変更します。
Rename-Item -Path Function:help -NewName gh
関数のコピー
このコマンドは、 prompt
関数を oldPrompt
にコピーし、プロンプト関数に関連付けられているスクリプト ブロックの新しい名前を効果的に作成します。
これを利用し、変更予定のプロンプト関数のオリジナルを保存できます。
新しい関数の Options プロパティの値は None
です。 Options プロパティの値を変更するには、Set-Item
を使用します。
Copy-Item -Path Function:prompt -Destination Function:oldPrompt
動的パラメーター
動的パラメーターは、PowerShell プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダー対応ドライブでコマンドレットが使用されている場合にのみ使用できます。
Options <[System.Management.Automation.ScopedItemOptions]>
関数の Options プロパティの値を決定します。
None
: オプションはありません。None
は既定値です。Constant
: 関数を削除できず、そのプロパティを変更できません。Constant
は、関数を作成する場合にのみ使用できます。 既存の関数のオプションをConstant
に変更することはできません。Private
: 関数は現在のスコープでのみ表示されます- (子スコープ内にありません)。
ReadOnly
:-Force
パラメーターを使用する場合を除き、関数のプロパティを変更することはできません。Remove-Item
を使用して関数を削除できます。AllScope
: 関数は、作成された新しいスコープにコピーされます。
サポートされているコマンドレット
パイプラインの使用
プロバイダー コマンドレットは、パイプライン入力を受け入れます。 パイプラインを使用すると、あるコマンドレットから別のプロバイダー コマンドレットにプロバイダー データを送信することで、タスクを簡略化できます。 プロバイダー コマンドレットでパイプラインを使用する方法の詳細については、この記事全体で提供されているコマンドレットリファレンスを参照してください。
ヘルプの表示
Windows PowerShell 3.0 より、プロバイダー コマンドレットのためにカスタマイズされたヘルプ トピックを取得できます。これはファイル システム ドライブでのプロバイダー コマンドレットの動作を説明します。
ファイル システム ドライブ用にカスタマイズされたヘルプ トピックを取得するには、ファイル システム ドライブで Get-Help コマンドを実行するか、Get-Help の -Path
パラメーターを使用してファイル システム ドライブを指定します。
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path function:
関連項目
PowerShell