プロバイダーについて
簡単な説明
PowerShell プロバイダーが、コマンド ラインで簡単にアクセスできないデータとコンポーネントへのアクセスを提供する方法について説明します。 データは、ファイル システム ドライブに似た一貫性のある形式で表示されます。
長い説明
PowerShell プロバイダーは、PowerShell で特殊なデータ ストア内のデータを表示および管理できるようにする Microsoft .NET Framework ベースのプログラムです。
プロバイダーが公開するデータはドライブに表示され、ハード ディスク ドライブの場合と同様にパス内のデータにアクセスします。 プロバイダーがサポートする組み込みのコマンドレットを使用して、プロバイダー ドライブ内のデータを管理できます。 また、特にデータ用に設計されたカスタム コマンドレットを使用できます。
プロバイダーは、組み込みのコマンドレットに動的パラメーターを追加することもできます。 これらは、プロバイダー データで コマンドレットを使用する場合にのみ使用できるパラメーターです。
組み込みプロバイダー
PowerShell には、さまざまな種類のデータ ストアにアクセスするために使用できる一連の組み込みプロバイダーが含まれています。
プロバイダー | ドライブ | データ ストア |
---|---|---|
エイリアス | エイリアス: | PowerShell エイリアス |
Certificate | Cert: | デジタル署名用の x509 証明書 |
環境 | Env: | Windows 環境変数 |
FileSystem (ファイル システム) | (*) | ファイル システム ドライブ、ディレクトリ、ファイル |
機能 | 関数: | PowerShell 関数 |
レジストリ | HKLM:、HKCU: | Windows レジストリ |
変数 | 変数: | PowerShell 変数 |
WSMan | WSMan: | WS-Management 構成情報 |
(*)FileSystem ドライブは、システムごとに異なります。
独自の PowerShell プロバイダーを作成したり、他のユーザーが開発するプロバイダーをインストールしたりすることもできます。 セッションで使用できるプロバイダーを一覧表示するには、次のように入力します。
Get-PSProvider
プロバイダーのインストールと削除
PowerShell プロバイダーは、.dll ファイルにコンパイルされる.NET Frameworkベースのプログラムである PowerShell スナップインで提供されます。 スナップインには、プロバイダーとコマンドレットを含めることができます。
プロバイダー機能を使用する前に、スナップインをインストールしてから PowerShell セッションに追加する必要があります。 詳細については、「 about_PSSnapins」を参照してください。
プロバイダーをアンインストールすることはできませんが、現在のセッションからプロバイダーの PowerShell スナップインを削除することはできます。 その場合は、コマンドレットを含め、スナップインのすべてのコンテンツを削除します。
現在のセッションからプロバイダーを削除するには、 コマンドレットを Remove-PSSnapin
使用します。 このコマンドレットはプロバイダーをアンインストールしませんが、セッションでプロバイダーを使用できなくなります。
コマンドレットを使用して、現在の 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 コマンドレット
- Clear-ItemProperty
- Copy-ItemProperty
- Get-ItemProperty
- Move-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Rename-ItemProperty
- Set-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\
場所への相対参照を使用することもできます。 ドット (.) は現在の場所を表します。 たとえば、HKLM:\Software\Microsoft レジストリ キーを使用していて、HKLM:\Software\Microsoft\PowerShell キーにレジストリ サブキーを一覧表示する場合は、次のコマンドを入力します。
Get-ChildItem .\PowerShell
プロバイダー ホーム
プロバイダーには 、ホーム の場所もあります。 この場所は、プロバイダーによってサポートされているすべての PSDrives
ユーザーによって共有されます。 プロバイダーの Home プロパティを表示することで取得できます。
Get-PSProvider | Format-Table Name, Home
Name Home
---- ----
Registry
Alias
Environment
FileSystem C:\Users\robreed
Function
Variable
Certificate
FileSystem プロバイダーは、Home の既定値を持つ唯一のプロバイダーです。 これは、about_Automatic_Variablesに示されているのと$Home
同じ値です。
プロバイダーの ホーム ディレクトリは、そのプロパティを使用して、現在のセッションに対して設定できます。
(Get-PSProvider FileSystem).Home = "C:\"
文字は ~
、プロバイダーのホーム ディレクトリを表すために使用できます。
プロバイダーに [ホーム ] の場所が設定されていない場合は、エラーが表示されます。
Cert:\> Set-Location ~
Set-Location : Home location for this provider is not 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