プロバイダについて

簡単な説明

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

長い説明

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

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

組み込みプロバイダー

PowerShell には、さまざまな種類のデータ ストアにアクセスするために使用できる一連の組み込みプロバイダーが含まれています。

プロバイダー ドライブ 出力タイプ
別名 別名: System.Management.Automation.AliasInfo (英語)
証書 証明 書: Microsoft.PowerShell.Commands.X509StoreLocation
System.Security.Cryptography.X509Certificates.X509Certificate2
環境 環境: System.Collections.DictionaryEntry
ファイルシステム C: (*) System.IO.FileInfo (英語)
System.IO.ディレクトリ情報
機能 機能: System.Management.Automation.FunctionInfo
レジストリ HKLM:HKCU: Microsoft.Win32.レジストリキー
変数 変数: System.Management.Automation.PSVariable
WSマン WSMan: Microsoft.WSMan.Management.WSManConfigContainerElement

(*)FileSystem ドライブは、システムごとに異なります。

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

Get-PSProvider

注

証明書、レジストリ、および WSMan プロバイダー は、Windows プラットフォームでのみ使用できます。

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

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

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

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

プロバイダーの表示

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

Get-PSProvider

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

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

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

たとえば、New-Item コマンドレットは新しい項目を作成します。 C: プロバイダーでサポートされている ドライブでは、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-Item または Get-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>

プロバイダー ホーム

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

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

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

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

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

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

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-Item および Get-ChildItem コマンドレットに追加します。 このパラメーターは、Get-Item ドライブで Get-ChildItem または Cert: を使用する場合にのみ使用できます。

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

Get-Help <provider-name>

例えば次が挙げられます。

Get-Help certificate

プロバイダーに関する学習

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

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

Get-Help <ProviderName>

例えば次が挙げられます。

Get-Help registry

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

Get-Help * -Category Provider

こちらも参照ください