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コマンドはlscd 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:

関連項目