共用方式為


關於提供者

簡短描述

說明 PowerShell 提供者如何提供無法在命令列輕鬆存取的資料和元件的存取權。 資料會以一致的格式呈現,類似于檔案系統磁片磁碟機。

完整描述

PowerShell 提供者是以 Microsoft .NET Framework 為基礎的程式,可讓特殊資料存放區中的資料在 PowerShell 中使用,讓您可以查看和管理它。

提供者所公開的資料會出現在磁片磁碟機中,而您可以存取路徑中的資料,就像您在硬碟機上所做的一樣。 您可以使用提供者支援的任何內建 Cmdlet 來管理提供者磁片磁碟機中的資料。 而且,您可以使用特別針對資料所設計的自訂 Cmdlet。

提供者也可以將動態參數新增至內建 Cmdlet。 這些是只有在您搭配提供者資料使用 Cmdlet 時才可使用的參數。

內建提供者

PowerShell 包含一組內建提供者,可讓您用來存取不同類型的資料存放區。

提供者 光碟機 資料存放區
Alias Alias: PowerShell 別名
憑證 Cert: 數位簽章的 x509 憑證
環境 Env: Windows 環境變數
FileSystem (*) 檔案系統磁片磁碟機、目錄和檔案
函式 函式: PowerShell 函式
登錄 HKLM:、HKCU: Windows 登錄
變數 Variable: PowerShell 變數
WSMan WSMan: WS-MANAGEMENT 設定資訊

(*)每個系統上的檔案系統磁片磁碟機各不相同。

您也可以建立自己的 PowerShell 提供者,也可以安裝其他人開發的提供者。 若要列出會話中可用的提供者,請輸入:

Get-PSProvider

安裝和移除提供者

Powershell 提供者會在 PowerShell 嵌入式管理單元中傳遞給您,這是以 .NET Framework 為基礎的程式,會編譯成 .dll 檔案。 嵌入式管理單元可以包含提供者和 Cmdlet。

在使用提供者功能之前,您必須先安裝嵌入式管理單元,然後將它新增至您的 PowerShell 會話。 如需詳細資訊,請參閱about_PSSnapins

您無法卸載提供者,不過您可以從目前的會話移除提供者的 PowerShell 嵌入式管理單元。 如果您這樣做,將會移除嵌入式管理單元的所有內容,包括其 Cmdlet。

若要從目前的會話移除提供者,請使用 Remove-PSSnapin Cmdlet。 此 Cmdlet 不會卸載提供者,但會使提供者無法在會話中使用。

您也可以使用 Remove-PSDrive Cmdlet,從目前的會話移除任何磁片磁碟機。 此磁片磁碟機上的資料不受影響,但該磁片磁碟機已無法再于該會話中使用。

查看提供者

若要在您的電腦上查看 PowerShell 提供者,請輸入:

Get-PSProvider

輸出會列出內建的提供者,以及您新增至會話的提供者。

提供者 Cmdlet

下列 Cmdlet 是設計用來處理任何提供者所公開的資料。 您可以使用相同的 Cmdlet 來管理提供者所公開的不同資料類型。 在您瞭解如何管理某個提供者的資料之後,您可以使用來自任何提供者之資料的相同程式。

例如,此 New-Item Cmdlet 會建立新的專案。 在 C: FileSystem提供者所支援的磁片磁碟機中,您可以使用 New-Item 來建立新的檔案或資料夾。 在登錄提供者所支援的磁片磁碟機中,您可以使用 New-Item 來建立新的登錄機碼。 在 Alias: 磁片磁碟機中,您可以使用 New-Item 來建立新的別名。

如需下列任何 Cmdlet 的詳細資訊,請輸入:

Get-Help <cmdlet-name> -Detailed

Get-childitem Cmdlet

內容 Cmdlet

Item Cmdlet

ItemProperty Cmdlet

Location Cmdlet

Path Cmdlet

PSDrive Cmdlet

PSProvider Cmdlet

查看提供者資料

提供者的主要優點是它會以熟悉且一致的方式公開其資料。 資料展示的模型是檔案系統磁片磁碟機。

若要使用提供者所公開的資料,您可以加以觀看、移動它,然後將它變更為硬碟上的資料。 因此,提供者最重要的資訊就是它支援的磁片磁碟機名稱。

磁片磁碟機會列在 Cmdlet 的預設顯示中 Get-PSProvider ,但是您可以使用 Cmdlet 取得提供者磁片磁碟機的相關資訊 Get-PSDrive 。 例如,若要取得 Function:磁片磁碟機的所有屬性,請輸入:

Get-PSDrive Function | Format-List *

您可以在提供者磁片磁碟機中查看並移動資料,就像在檔案系統磁片磁碟機上一樣。

若要查看提供者磁片磁碟機的內容,請使用 Get-Item 或 Get-childitem Cmdlet。 輸入磁片磁碟機名稱,後面加上冒號(:)。 例如,若要查看 Alias:磁片磁碟機的內容,請輸入:

Get-Item alias:

您可以在路徑中包含磁片磁碟機名稱,以從另一個磁片磁碟機查看及管理任何磁片磁碟機中的資料。 例如,若要從另一個磁片磁碟機視圖 HKLM:磁片磁碟機中的 HKLM\Software 登錄機碼,請輸入:

Get-ChildItem HKLM:\SOFTWARE\

若要開啟磁片磁碟機,請使用 Set-Location Cmdlet。 當您指定磁片磁碟機路徑時,請記住冒號。 例如,若要將您的位置變更為 Cert:磁片磁碟機的根目錄,請輸入:

Set-Location cert:

然後,若要查看 Cert:磁片磁碟機的內容,請輸入:

Get-ChildItem

透過階層式資料移動

您可以直接在提供者磁片磁碟機上移動,就像使用硬碟一樣。 如果資料是在專案內的專案階層中排列,請使用反斜線( \ )來表示子專案。 請使用下列格式:

drive:\location\child-location\...

例如,若要將您的位置變更為 HKLM\Software 登錄機碼,請輸入設定位置命令,例如:

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預設值的提供者。 其值與 $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
...

尋找動態參數

動態參數是由提供者新增至 Cmdlet 的 Cmdlet 參數。 只有在 Cmdlet 與新增的提供者搭配使用時,才可以使用這些參數。

例如, Cert: 磁片磁碟機會將CodeSigningCert參數新增至 Get-ItemGet-ChildItem Cmdlet。 只有當您在 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

另請參閱

about_Locations

about_Path_Syntax