私は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
詳細については、実行して読んでください。