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
Registry HKLM: HKCU: Microsoft.Win32.RegistryKey
変数 変数: System.Management.Automation.PSVariable
WSMan WSMan: Microsoft.WSMan.Management.WSManConfigContainerElement

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

独自の 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 コマンドレット

Path コマンドレット

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

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

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: 、および Get-ChildItem コマンドレットに Codesigningcert パラメーターを 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

関連項目