關於提供者
簡短描述
描述 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 嵌入式管理單元中傳遞給您,這些嵌入式管理單元是編譯成 .dll 檔案的 .NET Framework 型程式。 嵌入式管理單元可以包含提供者和 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
ChildItem Cmdlet
內容 Cmdlet
專案 Cmdlet
ItemProperty Cmdlet
- Clear-ItemProperty
- Copy-ItemProperty
- Get-ItemProperty
- Move-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Rename-ItemProperty
- Set-ItemProperty
位置 Cmdlet
路徑 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 命令,例如:
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相同。
您可以使用其 屬性,為目前會話設定提供者的 Home 目錄。
(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-Item
和 Get-ChildItem
Cmdlet。 只有在您在磁碟驅動器中使用 或 Get-ChildItem
Cert:
時,才能使用Get-Item
此參數。
如需提供者支持的動態參數清單,請參閱提供者的說明檔。 輸入:
Get-Help <provider-name>
例如:
Get-Help certificate
瞭解提供者
雖然所有提供者數據都會出現在磁碟驅動器中,而且您使用相同的方法來移動它們,但相似度會停止在該處。 提供者公開的數據存放區可能會因 Active Directory 位置和 Microsoft Exchange Server 信箱而有所不同。
如需個別 PowerShell 提供者的相關信息,請輸入:
Get-Help <ProviderName>
例如:
Get-Help registry
如需提供者的相關幫助主題清單,請輸入:
Get-Help * -Category Provider