about_Providers
簡単な説明
PowerShell プロバイダーが、コマンド ラインで簡単にアクセスできないデータとコンポーネントへのアクセスを提供する方法について説明します。 データは、ファイル システム ドライブに似た一貫性のある形式で表示されます。
詳細な説明
PowerShell プロバイダーは、表示と管理を容易にするために特殊なデータ ストアへのアクセスを提供する .NET プログラムです。 データはドライブに表示され、ハード ディスク ドライブと同様にパス内のデータにアクセスします。 プロバイダーがサポートする組み込みのコマンドレットを使用して、プロバイダー ドライブ内のデータを管理できます。 また、特にデータ用に設計されたカスタム コマンドレットを使用できます。
プロバイダーは、組み込みのコマンドレットに動的パラメーターを追加することもできます。 これらのパラメーターは、プロバイダー データでコマンドレットを使用する場合にのみ使用できます。
組み込みプロバイダー
PowerShell には、さまざまな種類のオブジェクトへのアクセスを提供する一連の組み込みプロバイダーが含まれています。
- エイリアス プロバイダー
- ドライブ-
Alias:
- オブジェクトの種類 - System.Management.Automation.AliasInfo
- ドライブ-
- 証明書 プロバイダー
- ドライブ-
Cert:
- オブジェクトの種類 - Microsoft.PowerShell.Commands.X509StoreLocation, System.Security.Cryptography.X509Certificates.X509Certificate2
- ドライブ-
- 環境 プロバイダー
- ドライブ-
Env:
- オブジェクトの種類 - System.Collections.DictionaryEntry
- ドライブ-
- FileSystem プロバイダー
- ドライブ - ハードウェアに応じて
C:
およびその他 - オブジェクトの種類 - System.IO.FileInfo、 System.IO.DirectoryInfo
- ドライブ - ハードウェアに応じて
- 関数 プロバイダー
- ドライブ-
Function:
- オブジェクトの種類 - System.Management.Automation.FunctionInfo
- ドライブ-
- レジストリ プロバイダー
- ドライブ -
HKLM:
、HKCU:
- オブジェクトの種類 - Microsoft.Win32.RegistryKey
- ドライブ -
- 変数 プロバイダー
- ドライブ-
Variable:
- オブジェクトの種類 - System.Management.Automation.PSVariable
- ドライブ-
- WSMan プロバイダー
- ドライブ-
WSMan:
- オブジェクトの種類 - Microsoft.WSMan.Management.WSManConfigContainerElement
- ドライブ-
独自の PowerShell プロバイダーを作成したり、他のユーザーが開発するプロバイダーをインストールしたりすることもできます。 セッションで使用可能なプロバイダーを一覧表示するには、次のように入力します。
Get-PSProvider
Note
Certificate、Registry、および WSMan プロバイダーは、Windows プラットフォームでのみ使用できます。
プロバイダーのインストールと削除
プロバイダーは通常、PowerShell モジュールを使用してインストールされます。 モジュールをインポートすると、プロバイダーがセッションに読み込まれます。 組み込みプロバイダーをアンインストールすることはできません。 他のモジュールによって読み込まれたプロバイダーをアンインストールできます。
Remove-Module
コマンドレットを使用して、現在のセッションからプロバイダーをアンロードできます。 このコマンドレットはプロバイダーをアンインストールしませんが、セッションでプロバイダーを使用できなくなります。
Remove-PSDrive
コマンドレットを使用して、現在のセッションから任意のドライブを削除することもできます。 ドライブ上のこのデータは影響を受けませんが、そのセッションではドライブを使用できなくなります。
プロバイダーの表示
コンピューター上の PowerShell プロバイダーを表示するには、次のように入力します。
Get-PSProvider
出力には、組み込みのプロバイダーと、セッションに追加したプロバイダーが一覧表示されます。
プロバイダー コマンドレット
次のコマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 同じコマンドレットを同じ方法で使用して、プロバイダーが公開するさまざまな種類のデータを管理できます。 1 つのプロバイダーのデータを管理する方法を学習したら、任意のプロバイダーのデータと同じ手順を使用できます。
たとえば、 New-Item
コマンドレットは新しい項目を作成します。 FileSystem プロバイダーでサポートされているC:
ドライブでは、New-Item
を使用して新しいファイルまたはフォルダーを作成できます。 Registry プロバイダーでサポートされているドライブでは、New-Item
を使用して新しいレジストリ キーを作成できます。 Alias:
ドライブでは、New-Item
を使用して新しいエイリアスを作成できます。
次のいずれかのコマンドレットの詳細については、次のように入力します。
Get-Help <cmdlet-name> -Detailed
ChildItem コマンドレット
コンテンツ コマンドレット
項目コマンドレット
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\
完全修飾名のいずれかの要素にスペースが含まれている場合は、名前を二重引用符 ("
) で囲む必要があります。 次の例は、スペースを含む完全修飾パスを示しています。
"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
コマンドレットに追加します。 このパラメーターは、Cert:
ドライブでGet-Item
またはGet-ChildItem
を使用する場合にのみ使用できます。
プロバイダーがサポートする動的パラメーターの一覧については、プロバイダーのヘルプ ファイルを参照してください。 型:
Get-Help <provider-name>
次に例を示します。
Get-Help certificate
プロバイダーに関する学習
すべてのプロバイダー データがドライブに表示され、同じメソッドを使用してそれらを移動しますが、類似性はそこで停止します。 プロバイダーが公開するデータ ストアは、Active Directory の場所や Microsoft Exchange Server メールボックスと同じように変化させることができます。
個々の PowerShell プロバイダーの詳細については、次のように入力します。
Get-Help <ProviderName>
次に例を示します。
Get-Help registry
プロバイダーに関するヘルプ トピックの一覧については、次のように入力します。
Get-Help * -Category Provider
関連項目
PowerShell