簡単な説明
PowerShell プロバイダーが、コマンドラインから簡単にアクセスできないデータおよびコンポーネントへのアクセスを提供する方法について説明します。 データは、ファイルシステムドライブに似た一貫した形式で表示されます。
長い説明
PowerShell プロバイダーは Microsoft .NET フレームワークベースのプログラムであり、特化されたデータストアのデータを PowerShell で使用できるようにし、それを表示して管理できるようにします。
プロバイダーが公開するデータはドライブに表示され、ハードディスクドライブの場合と同様にパス内のデータにアクセスします。 プロバイダーがサポートする組み込みのコマンドレットのいずれかを使用して、プロバイダードライブのデータを管理できます。 また、特にデータ用に設計されたカスタムコマンドレットを使用することもできます。
プロバイダーは、組み込みのコマンドレットに動的パラメーターを追加することもできます。 これらのパラメーターは、プロバイダーデータと共にコマンドレットを使用する場合にのみ使用できます。
組み込みプロバイダー
PowerShell には、さまざまな種類のデータストアにアクセスするために使用できる一連の組み込みプロバイダーが用意されています。
| プロバイダー | ドライブ | データ ストア |
|---|---|---|
| エイリアス | エイリアス: | PowerShell のエイリアス |
| 証明書 | Cert: | デジタル署名用の x509 証明書 |
| 環境 | Env: | Windows 環境変数 |
| FileSystem (ファイル システム) | (*) | ファイルシステムのドライブ、ディレクトリ、およびファイル |
| 関数 | 関数: | PowerShell 関数 |
| レジストリ | HKLM:、HKCU: | Windows レジストリ |
| 変数 | 変数: | PowerShell 変数 |
| WSMan | WSMan: | WS-MANAGEMENT の構成情報 |
(*)ファイルシステムドライブは、システムによって異なります。
独自の PowerShell プロバイダーを作成することもできます。また、他のユーザーが開発するプロバイダーをインストールすることもできます。 セッションで使用可能なプロバイダーの一覧を表示するには、次のように入力します。
Get-PSProvider
プロバイダーのインストールと削除
Powershell プロバイダーは、.dll ファイルにコンパイルされた .NET Framework ベースのプログラムである PowerShell スナップインで配信されます。 スナップインには、プロバイダーとコマンドレットを含めることができます。
プロバイダーの機能を使用する前に、スナップインをインストールして、PowerShell セッションに追加する必要があります。 詳細については、「 about_PSSnapins」を参照してください。
プロバイダーをアンインストールすることはできませんが、現在のセッションからプロバイダーの PowerShell スナップインを削除することはできます。 この操作を行うと、スナップインのすべてのコンテンツ (コマンドレットを含む) が削除されます。
現在のセッションからプロバイダーを削除するには、 Remove-PSSnapin コマンドレットを使用します。 このコマンドレットではプロバイダーはアンインストールされませんが、プロバイダーをセッションで使用できなくなります。
また、コマンドレットを使用して、 Remove-PSDrive 現在のセッションから任意のドライブを削除することもできます。 ドライブ上のこのデータは影響を受けませんが、そのセッションでは使用できなくなります。
プロバイダーの表示
コンピューター上の PowerShell プロバイダーを表示するには、次のように入力します。
Get-PSProvider
出力には、セッションに追加した組み込みプロバイダーとプロバイダーが一覧表示されます。
プロバイダーのコマンドレット
次のコマンドレットは、プロバイダーによって公開されるデータを使用するように設計されています。 同じコマンドレットを同じ方法で使用して、プロバイダーが公開するさまざまな種類のデータを管理できます。 1つのプロバイダーのデータを管理する方法を学習したら、任意のプロバイダーのデータと同じ手順を使用できます。
たとえば、 New-Item コマンドレットは新しい項目を作成します。 FileSystem プロバイダーでサポートされて C: いるFileSystemドライブで、を使用して New-Item 新しいファイルまたはフォルダーを作成することができます。 レジストリプロバイダーでサポートされているドライブで、を使用して New-Item 新しいレジストリキーを作成できます。 ドライブで Alias: 、を使用して New-Item 新しいエイリアスを作成できます。
次のコマンドレットの詳細については、「」と入力してください。
Get-Help <cmdlet-name> -Detailed
Get-childitem コマンドレット
コンテンツのコマンドレット
項目のコマンドレット
Get-itemproperty コマンドレット
- Clear-ItemProperty
- Copy-ItemProperty
- Get-ItemProperty
- Move-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Rename-ItemProperty
- Set-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\
また、相対参照を使用して場所を参照することもできます。 ドット (.) は現在の場所を表します。 たとえば、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 。 about_Automatic_Variables
現在のセッションでは、そのプロパティを使用して、プロバイダーのホームディレクトリを設定できます。
(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-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