about_Providers

簡短描述

描述 PowerShell 提供者如何提供資料與元件存取權,否則無法在命令行輕鬆存取。 數據會以類似檔系統磁碟驅動器的一致格式呈現。

詳細描述

PowerShell 提供者是 .NET 程式,可提供特殊數據存放區的存取權,以便更輕鬆地檢視和管理。 數據會出現在磁碟驅動器中,而且您可以像在硬碟上一樣存取路徑中的數據。 您可以使用提供者支援的任何內建 Cmdlet 來管理提供者磁碟驅動器中的數據。 此外,您可以使用專為數據設計的自定義 Cmdlet。

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

內建提供者

PowerShell 包含一組內建提供者,可存取不同類型的物件。

  • 別名 提供者
    • 驅動- Alias:
    • 物件類型 - System.Management.Automation.AliasInfo
  • 憑證 提供者
    • 驅動- Cert:
    • 物件類型 - Microsoft.PowerShell.Commands.X509StoreLocationSystem.Security.Cryptography.X509Certificates.X509Certificate2
  • 環境 提供者
    • 驅動- Env:
    • 物件類型 - System.Collections.DictionaryEntry
  • FileSystem 提供者
    • 磁碟驅動器 - C: 和其他取決於硬體
    • 物件類型 - System.IO.FileInfoSystem.IO.DirectoryInfo
  • 函式 提供者
    • 驅動- Function:
    • 物件類型 - System.Management.Automation.FunctionInfo
  • 登錄 提供者
    • 磁碟驅動器 - HKLM:HKCU:
    • 物件類型 - Microsoft.Win32.RegistryKey
  • 變數 提供者
    • 驅動- Variable:
    • 物件類型 - System.Management.Automation.PSVariable
  • WSMan 提供者
    • 驅動- WSMan:
    • 物件類型 - Microsoft.WSMan.Management.WSManConfigContainerElement

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

Get-PSProvider

注意

憑證登錄WSMan 提供者只能在 Windows 平臺上使用。

安裝和移除提供者

提供者通常會透過PowerShell模組安裝。 匯入模組會將提供者載入您的工作階段。 您無法卸載內建提供者。 您可以卸載其他模組所載入的提供者。

您可以使用 Cmdlet 從目前的工作階段 Remove-Module 卸除提供者。 此 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

位置 Cmdlet

路徑 Cmdlet

PSDrive Cmdlet

PSProvider Cmdlet

檢視提供者數據

提供者的主要優點是,它會以熟悉且一致的方式公開其數據。 數據呈現的模型是文件系統磁碟驅動器。

提供者可讓您檢視、巡覽和變更數據存放區中的專案,就像它們是檔案系統中的數據一樣。 數據存放區會依它所支援的磁碟驅動器名稱來存取。

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

Get-PSDrive Function | Format-List *

您可以檢視並移動提供者磁碟驅動器中的數據,就像在文件系統磁碟驅動器上一樣。

若要檢視提供者磁碟驅動器的內容,請使用 Get-ItemGet-ChildItem Cmdlet。 輸入磁碟驅動器名稱後面接著冒號 (:)。 例如,若要檢視磁碟驅動器的內容 Alias: ,請輸入:

Get-Item alias:

您可以從其他磁碟驅動器檢視和管理任何磁碟驅動器中的數據,方法是在路徑中包含磁碟驅動器名稱。 例如,若要從另一個磁碟驅動器檢視 HKLM\Software 磁碟驅動器中的 HKLM: 登錄機碼,請輸入:

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\

如果完整名稱中的任何元素包含空格,您必須以雙引號 (") 括住名稱。 下列範例顯示包含空格的完整路徑。

"C:\Program Files\Internet Explorer\iexplore.exe"

您也可以使用位置的相對參考。 點 (.) 代表目前的位置。 例如,如果您位於 HKLM:\Software\Microsoft 登錄機碼中,而且想要列出機碼中的 HKLM:\Software\Microsoft\PowerShell 登錄子機碼,請輸入下列命令:

Get-ChildItem .\PowerShell

此外,雙點 (..) 是指您目前位置正上方的目錄或容器。 您可以使用雙點 (..) 流覽提供者階層。

PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\> cd ..\..\LanmanWorkstation\Parameters
PS HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters>

提供者首頁

提供者也有首頁位置。 此位置由提供者所支援的所有 PSDrives 共用。 您可以檢視 提供者的 Home 屬性來擷取它。

Get-PSProvider | Format-Table Name, Home
Name        Home
----        ----
Registry
Alias
Environment
FileSystem  C:\Users\username
Function
Variable
Certificate

FileSystem 提供者是唯一具有 Home 預設值的提供者。 其值與 $HOME相同。 如需詳細資訊,請參閱 about_Automatic_Variables

您可以使用提供者的 屬性,為目前會話設定 提供者的 Home 目錄。

(Get-PSProvider FileSystem).Home = "C:\"

~字元可用來表示提供者的主目錄。 如果提供者未 設定 Home 位置,您會看到錯誤。

Cert:\> Set-Location ~
Set-Location : Home location for this provider isn't 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-ChildItemCert: 時,才能使用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

另請參閱