powershell中的psprovider是什麼?

powershell中的psprovider是什麼?

我是 PowerShell 新手,並試圖理解 psprovider 的概念。我知道我可以Get-PSProvider用來顯示可用 ps 提供者的列表

我找到的所有幫助都假設我知道我不知道的事情。尋找 psprovider 的基本解釋。

答案1

這是來自 Get-PSProvider 的說明文件:

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

這裡隱藏著兩個主要概念。第一個是資料儲存的概念,或者如果您願意的話,可以稱為容器的概念。第二個是導航的概念。

資料儲存的概念是資料操作的基礎。如果您做過腳本或程式設計工作,您就會熟悉變數。事實上,變數是 Get-PSProvider 列出的資料儲存類型之一。如果您從事過資料庫或網站方面的工作,您就會熟悉其他類型的資料儲存。為您列出的第二種可導航資料儲存是檔案系統。如果您使用過 Windows,您就會熟悉資料夾和文件,甚至熟悉資料夾和子資料夾的導航。資料夾在 Powershell 中稱為目錄,但概念相同。

註冊表是一種不同類型的資料儲存。

對我來說,也許對你來說,新的想法是將所有這些不同類型的資料儲存概括為通用超類,然後在整個超類上定義某些操作。

例如,Get-ChildItem 是一個基本的導航操作,可讓您遍歷按層次結構排列的容器樹。但是,他們沒有為文件實現一個專門的GCI,為註冊表項實現一個專門的GCI,為變數實現另一個GCI,等等,而是選擇實現一個可以適用於這三個以及其他幾個中的任何一個的單一GCI。

這只是概念的開始,但我希望它能有所幫助。

答案2

PSProvider 基本上就是資料儲存。您可以像處理普通資料系統資料夾一樣處理它們。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)

PSProvider 可以實現很多功能。您應該執行並閱讀get-help about_providers以獲取更多資訊。

相關內容