PowerShell の psprovider とは何ですか?

PowerShell の psprovider とは何ですか?

私はPowerShell初心者で、psproviderの概念を理解しようとしていますGet-PSProvider利用可能な psproviders のリストを表示します

私が見つけたヘルプはすべて、私が知らないことを知っていることを前提としています。psprovider の基本的な説明を探しています。

答え1

これは Get-PSProvider のヘルプ ファイルからの抜粋です。

Among other things, Windows PowerShell providers determine which 
data stores you can navigate through.

ここには 2 つの主要な概念が埋め込まれています。1 つ目は、データ ストアの概念、またはコンテナーの概念です。2 つ目は、ナビゲーションの概念です。

データ ストアの概念は、データを操作する上で基本となります。スクリプトやプログラミングを扱ったことがあるなら、変数はおなじみです。実際、変数は Get-PSProvider によってリストされるデータ ストアの種類の 1 つです。データベースや Web サイトを扱ったことがあるなら、他の種類のデータ ストアもおなじみです。2 番目にリストされるナビゲート可能なデータ ストアの種類は、ファイル システムです。Windows を扱ったことがあるなら、フォルダーとファイル、さらにはフォルダーとサブフォルダー間のナビゲートもおなじみです。フォルダーは Powershell ではディレクトリと呼ばれますが、概念は同じです。

レジストリは、異なる種類のデータ ストアです。

私にとって、そしておそらく皆さんにとっても新しいのは、これらすべての異なる種類のデータ ストアを一般的なスーパークラスに一般化し、そのスーパークラス全体に対して特定の操作を定義するという考え方です。

たとえば、Get-ChildItem は、階層構造で配置されたコンテナーのツリーを移動できる基本的なナビゲーション操作です。ただし、ファイル用、レジストリ エントリ用、変数用など、それぞれ専用の GCI を実装するのではなく、これら 3 つとその他のいくつかで使用できるように適応できる単一の GCI を実装することを選択しました。

これは概念のほんの始まりに過ぎませんが、お役に立てれば幸いです。

答え2

PSProviders は基本的にデータ ストアです。通常のデータ システム フォルダーのように扱うことができます。get-psprovidersすべての psproviders のリストが表示されます。

例:cmd.exe現在の場所をレジストリに変更することはできません。 cmd を使用してレジストリ設定を変更することはできますが、ディレクトリやcdレジストリのように処理することはできません。

PowerShellでは、レジストリはPSProviderです。つまり、データシステムフォルダのようにアクセスできます。と入力すると、cd hklm:実際にはローカルマシンのレジストリ内にあり、その内容にアクセスできます。Get-ChildItem

これには、たとえば実際にレジストリを指す PSDrives を提供できるという利点があります。

New-PSDrive -name G -PSProvider Registry -Root HKCU:\Software

G:\ ドライブが現在のユーザー > ソフトウェア レジストリにマップされました。(現在の PSSession のみ)

PSProviders で実行できる機能は多数あります。get-help about_providers詳細については、実行して読んでください。

関連情報