about_Function_Provider
プロバイダー名
機能
ドライブ
Function:
機能
ShouldProcess
簡単な説明
PowerShell で定義されている関数へのアクセスを提供します。
詳しい説明
PowerShell 関数 プロバイダーを使用すると、PowerShell で関数とフィルターを取得、追加、変更、クリア、および削除できます。
関数とは、アクションを実行するコードのブロックに名前が付けられたものです。 関数名を入力すると、関数のコードが実行されます。 フィルターとは、アクションの条件を確立するコードのブロックに名前が付けられたものです。 条件の代わりにフィルターの名前を入力できます (コマンドなど Where-Object
)。
関数ドライブは、 関数 オブジェクトとフィルター オブジェクトのみを含むフラット名前空間です。 関数にもフィルターにも子項目はありません。
関数プロバイダーでは、この記事で説明する次のコマンドレットがサポートされています。
このプロバイダーによって公開される型
各関数は、 System.Management.Automation.FunctionInfo クラスのインスタンスです。 各フィルターは、 System.Management.Automation.FilterInfo クラスのインスタンスです。
関数ドライブ内を移動する
関数プロバイダーは、ドライブ内のデータ ストアをFunction:
公開します。 関数を操作するには、場所をドライブ (Set-Location Function:
) にFunction:
変更します。 または、別の PowerShell ドライブから作業することもできます。 別の場所から関数を参照するには、パスでドライブ名 (Function:
) を使用します。
Set-Location Function:
ファイル システム ドライブに戻るには、ドライブ名を入力します。 たとえば、次のように入力します。
Set-Location C:
他の PowerShell ドライブから 関数 プロバイダーを操作することもできます。 別の場所から関数を参照するには、パスでドライブ名 Function:
を使用します。
注意
PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 や などのdir
ls
コマンドは Get-ChildItemcd
のエイリアスになりました。これは 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}
選択した関数の取得
このコマンドは、 man
ドライブから関数を Function:
取得します。 コマンドレットを 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 プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダー対応ドライブでコマンドレットが使用されている場合にのみ使用できます。
オプション <[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: