Share via


about_Providers

簡単な説明

PowerShell プロバイダーが、コマンド ラインで簡単にアクセスできないデータとコンポーネントへのアクセスを提供する方法について説明します。 データは、ファイル システム ドライブに似た一貫性のある形式で表示されます。

詳細な説明

PowerShell プロバイダーは、表示と管理を容易にするために特殊なデータ ストアへのアクセスを提供する .NET プログラムです。 データはドライブに表示され、ハード ディスク ドライブと同様にパス内のデータにアクセスします。 プロバイダーがサポートする組み込みのコマンドレットを使用して、プロバイダー ドライブ内のデータを管理できます。 また、特にデータ用に設計されたカスタム コマンドレットを使用できます。

プロバイダーは、組み込みのコマンドレットに動的パラメーターを追加することもできます。 これらのパラメーターは、プロバイダー データでコマンドレットを使用する場合にのみ使用できます。

組み込みプロバイダー

PowerShell には、さまざまな種類のオブジェクトへのアクセスを提供する一連の組み込みプロバイダーが含まれています。

  • エイリアス プロバイダー
    • ドライブ- Alias:
    • オブジェクトの種類 - System.Management.Automation.AliasInfo
  • 証明書 プロバイダー
    • ドライブ- Cert:
    • オブジェクトの種類 - Microsoft.PowerShell.Commands.X509StoreLocationSystem.Security.Cryptography.X509Certificates.X509Certificate2
  • 環境 プロバイダー
    • ドライブ- Env:
    • オブジェクトの種類 - System.Collections.DictionaryEntry
  • FileSystem プロバイダー
    • ドライブ - C: およびハードウェアに応じたその他
    • オブジェクトの種類 - System.IO.FileInfoSystem.IO.DirectoryInfo
  • 関数 プロバイダー
    • ドライブ- Function:
    • オブジェクトの種類 - System.Management.Automation.FunctionInfo
  • レジストリ プロバイダー
    • ドライブ - HKLM:HKCU:
    • オブジェクトの種類 - Microsoft.Win32.RegistryKey
  • 変数 プロバイダー
    • ドライブ- Variable:
    • オブジェクトの種類 - System.Management.Automation.PSVariable
  • WSMan プロバイダー
    • ドライブ- WSMan:
    • オブジェクトの種類 - Microsoft.WSMan.Management.WSManConfigContainerElement

独自の PowerShell プロバイダーを作成したり、他のユーザーが開発するプロバイダーをインストールしたりすることもできます。 セッションで使用可能なプロバイダーを一覧表示するには、次のように入力します。

Get-PSProvider

プロバイダーのインストールと削除

プロバイダーは通常、PowerShell モジュールを使用してインストールされます。 モジュールをインポートすると、プロバイダーがセッションに読み込まれます。 組み込みプロバイダーをアンインストールすることはできません。 他のモジュールによって読み込まれたプロバイダーをアンインストールできます。

コマンドレットを使用して、現在のセッションからプロバイダーを Remove-Module アンロードできます。 このコマンドレットはプロバイダーをアンインストールしませんが、セッションでプロバイダーを使用できなくなります。

コマンドレットを使用して、現在の Remove-PSDrive セッションから任意のドライブを削除することもできます。 ドライブ上のこのデータは影響を受けませんが、そのセッションではドライブを使用できなくなります。

プロバイダーの表示

コンピューター上の PowerShell プロバイダーを表示するには、次のように入力します。

Get-PSProvider

出力には、組み込みのプロバイダーと、セッションに追加したプロバイダーが一覧表示されます。

プロバイダー コマンドレット

次のコマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 同じコマンドレットを同じ方法で使用して、プロバイダーが公開するさまざまな種類のデータを管理できます。 1 つのプロバイダーのデータを管理する方法を学習したら、任意のプロバイダーのデータと同じ手順を使用できます。

たとえば、コマンドレットは New-Item 新しい項目を作成します。 C: FileSystem プロバイダーでサポートされているドライブでは、新しいファイルまたはフォルダーの作成に使用New-Itemできます。 レジストリ プロバイダーでサポートされているドライブでは、新しいレジストリ キーを作成するために使用New-Itemできます。 ドライブでは Alias: 、新しいエイリアスを作成するために使用 New-Item できます。

次のいずれかのコマンドレットの詳細については、次のように入力します。

Get-Help <cmdlet-name> -Detailed

ChildItem コマンドレット

コンテンツ コマンドレット

項目コマンドレット

ItemProperty コマンドレット

Location コマンドレット

パス コマンドレット

PSDrive コマンドレット

PSProvider コマンドレット

プロバイダー データの表示

プロバイダーの主な利点は、データを使い慣れた一貫性のある方法で公開することです。 データ表示のモデルは、ファイル システム ドライブです。

プロバイダーを使用すると、データ ストア内のアイテムを、ファイル システム内のデータと同様に表示、移動、変更できます。 データ ストアには、サポートされているドライブの名前でアクセスされます。

ドライブはコマンドレットの既定の Get-PSProvider 表示に表示されますが、コマンドレットを使用してプロバイダー ドライブに関する情報を Get-PSDrive 取得できます。 たとえば、Function: ドライブのすべてのプロパティを取得するには、次のように入力します。

Get-PSDrive Function | Format-List *

ファイル システム ドライブの場合と同様に、プロバイダー ドライブ内のデータを表示および移動できます。

プロバイダー ドライブの内容を表示するには、コマンドレットをGet-ItemGet-ChildItem使用します。 ドライブ名の後にコロン (:) を入力します。 たとえば、ドライブの内容を表示するには、次のように Alias: 入力します。

Get-Item alias:

パスにドライブ名を含めることで、別のドライブの任意のドライブのデータを表示および管理できます。 たとえば、ドライブ内HKLM:のレジストリ キーを別のHKLM\Softwareドライブから表示するには、次のように入力します。

Get-ChildItem HKLM:\SOFTWARE\

ドライブを開くには、コマンドレットを Set-Location 使用します。 ドライブ パスを指定するときは、コロンを覚えておいてください。 たとえば、ドライブのルート ディレクトリに場所を変更するには、次のように Cert: 入力します。

Set-Location cert:

次に、ドライブの内容を表示するには、次のように Cert: 入力します。

Get-ChildItem

階層データの移動

ハード ディスク ドライブと同様に、プロバイダー ドライブ間を移動できます。 項目内の項目の階層にデータが配置されている場合は、円記号 (\) を使用して子項目を示します。 次の形式を使用します。

drive:\location\child-location\...

たとえば、場所をレジストリ キーに HKLM\Software 変更するには、次のようなコマンドを Set-Location 入力します。

Set-Location HKLM:\SOFTWARE\

完全修飾名のいずれかの要素にスペースが含まれている場合は、名前を二重引用符 (") で囲む必要があります。 次の例は、スペースを含む完全修飾パスを示しています。

"C:\Program Files\Internet Explorer\iexplore.exe"

場所への相対参照を使用することもできます。 ドット (.) は現在の場所を表します。 たとえば、レジストリ キーを使用していて、キーに HKLM:\Software\Microsoft レジストリ サブキー HKLM:\Software\Microsoft\PowerShell を一覧表示する場合は、次のコマンドを入力します。

Get-ChildItem .\PowerShell

また、二重ドット (..) は、現在の場所のすぐ上にあるディレクトリまたはコンテナーを参照します。 二重ドット (..) を使用してプロバイダー階層間を移動できます。

PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\> cd ..\..\LanmanWorkstation\Parameters
PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters>

プロバイダー ホーム

プロバイダーにはホーム場所もあります。 この場所は、プロバイダーによってサポートされているすべての PSDrives ユーザーによって共有されます。 プロバイダーの Home プロパティを表示することで取得できます。

Get-PSProvider | Format-Table Name, Home
Name        Home
----        ----
Registry
Alias
Environment
FileSystem  C:\Users\username
Function
Variable
Certificate

FileSystem プロバイダーは、ホームの既定値を持つ唯一のプロバイダーです。 と同じ値 $HOMEです。 詳細については、「about_Automatic_Variables」を参照してください。

プロバイダーのホーム ディレクトリは、そのプロパティを使用して、現在のセッションに対して設定できます。

(Get-PSProvider FileSystem).Home = "C:\"

この文字は ~ 、プロバイダーのホーム ディレクトリを表すために使用できます。 プロバイダーにホームの場所が設定されていない場合は、エラーが表示されます。

Cert:\> Set-Location ~
Set-Location : Home location for this provider isn't set. To set the home
location, call "(get-psprovider 'Certificate').Home = 'path'".
At line:1 char:1
+ Set-Location ~
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Set-Location],
                              PSInvalidOperationException
...

動的パラメーターの検索

動的パラメーターは、プロバイダーによってコマンドレットに追加されるコマンドレット パラメーターです。 これらのパラメーターは、コマンドレットを追加したプロバイダーと共に使用する場合にのみ使用できます。

たとえば、ドライブは Cert: CodeSigningCert パラメーターをコマンドレットにGet-ItemGet-ChildItem追加します。 このパラメーターは、ドライブでCert:使用するGet-ChildItem場合にのみ使用Get-Itemできます。

プロバイダーがサポートする動的パラメーターの一覧については、プロバイダーのヘルプ ファイルを参照してください。 型:

Get-Help <provider-name>

次に例を示します。

Get-Help certificate

プロバイダーに関するラーニング

すべてのプロバイダー データがドライブに表示され、同じメソッドを使用してそれらを移動しますが、類似性はそこで停止します。 プロバイダーが公開するデータ ストアは、Active Directory の場所や Microsoft Exchange Server メールボックスと同じように変化させることができます。

個々の PowerShell プロバイダーの詳細については、次のように入力します。

Get-Help <ProviderName>

次に例を示します。

Get-Help registry

プロバイダーに関するヘルプ トピックの一覧については、次のように入力します。

Get-Help * -Category Provider

関連項目