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:
を使用します。
Note
PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 Get-ChildItem のエイリアスなどのdir
コマンドはls
、 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}
選択した関数の取得
このコマンドは、 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
使用して関数gh
の名前を help
.
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:
関連項目
PowerShell