about_Function_Provider

プロバイダー名

Function

ドライブ

Function:

機能

ShouldProcess

簡単な説明

PowerShell で定義されている関数へのアクセスを提供します。

詳しい説明

PowerShell 関数プロバイダーを 使用すると、PowerShell で関数とフィルターを取得、追加、変更、クリア、削除できます。

関数とは、アクションを実行するコードのブロックに名前が付けられたものです。 関数名を入力すると、関数のコードが実行されます。 フィルターとは、アクションの条件を確立するコードのブロックに名前が付けられたものです。 条件の代用にフィルターの名前を入力できます (例: コマンド Where-Object )。

関数 ドライブ は、関数オブジェクトとフィルター オブジェクトのみを含むフラットな名前空間です。 関数にもフィルターにも子項目はありません。

関数 プロバイダー は、この記事で説明する次のコマンドレットをサポートしています。

このプロバイダーによって公開される型

各関数は、 System.Management.Automation.FunctionInfo クラスのインスタンス です。 各フィルターは、 System.Management.Automation.FilterInfo クラスのインスタンス です。

関数 プロバイダー は、そのデータ ストアをドライブに公開 Function: します。 関数を使用するには、場所をドライブ () に変更 Function: しますSet-Location Function:。 または、別の PowerShell ドライブから作業できます。 別の場所から関数を参照するには、パスでドライブ名 (Function:) を使用します。

Set-Location Function:

ファイル システム ドライブに戻るには、ドライブ名を入力します。 たとえば、次のように入力します。

Set-Location C:

関数プロバイダーは、他 の PowerShell ドライブからでも使用できます。 別の場所から関数を参照するには、パスでドライブ名 Function: を使用します。

注意

PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法を使用できます。 や などのコマンドdirlsGet-ChildItemcd のエイリアスとして、Set-Location のエイリアスになります。 と pwdGet-Location のエイリアスです

関数の取得

このコマンドは現在のセッションのすべての関数の一覧を取得します。 このコマンドは、任意の PowerShell ドライブから使用できます。

Get-ChildItem -Path Function:

関数プロバイダーにはコンテナーが含めないので、上記のコマンドは と一緒に使用した場合も同じ効果を持っています Get-ChildItem

Get-ChildItem -Path Function:

次に示すように、Definition プロパティにアクセスすることで、関数の定義を取得できます。

(Get-Item -Path function:more).Definition

また、ドル記号 () でプレフィックスが付いたプロバイダー パスを使用して、関数の定義を取得できます$

$function:more

選択した関数の取得

このコマンドは、ドライブから 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 -Path コマンドを実行するか、 Get-Help の パラメーターを使用してファイル システム ドライブを指定します。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path function:

関連項目