次の方法で共有


about_Providers

簡単な説明

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

長い説明

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

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

組み込みプロバイダー

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

プロバイダー ドライブ OutputType
エイリアス エイリアス: System.Management.Automation.AliasInfo
Certificate Cert: Microsoft.PowerShell.Commands.X509StoreLocation
System.Security.Cryptography.X509Certificates.X509Certificate2
環境 Env: System.Collections.DictionaryEntry
FileSystem (ファイル システム) C: (*) System.IO.FileInfo
System.IO.DirectoryInfo
機能 関数: System.Management.Automation.FunctionInfo
レジストリ HKLM: HKCU: Microsoft.Win32.RegistryKey
変数 変数: System.Management.Automation.PSVariable
WSMan WSMan: Microsoft.WSMan.Management.WSManConfigContainerElement

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

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

Get-PSProvider

注意

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

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

プロバイダーは通常、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 コマンドレット

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

Item コマンドレット

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>

プロバイダー ホーム

プロバイダーには ホーム の場所もあります。 この場所は、プロバイダーによってサポートされているすべての 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」を参照してください。

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

(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-ChildItem コマンドレットにGet-Item追加します。 このパラメーターは、ドライブで 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

こちらもご覧ください