關於提供者
簡短描述
說明 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
- Clear-ItemProperty
- Copy-ItemProperty
- Get-ItemProperty
- Move-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Rename-ItemProperty
- Set-ItemProperty
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-Item
和 Get-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