次の方法で共有


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 では、エイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 や ls などのdirコマンドは Get-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

名前にダッシュ (-) を含む関数の定義を取得するには、ドル記号の中かっこの後に値をラップします。

${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 使用して関数の名前を helpgh変更します。

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:

こちらもご覧ください