about_Providers
简短说明
介绍 PowerShell 提供程序如何提供对命令行无法轻松访问的数据和组件的访问权限。 数据以类似于文件系统驱动器的一致格式显示。
长说明
PowerShell 提供程序是 .NET 程序,提供对专用数据存储的访问权限,以便更轻松地查看和管理。 数据显示在驱动器中,访问路径中的数据,就像在硬盘驱动器上一样。 可以使用提供程序支持的任何内置 cmdlet 来管理提供程序驱动器中的数据。 此外,可以使用专为数据设计的自定义 cmdlet。
提供程序还可以将动态参数添加到内置 cmdlet。 仅当将 cmdlet 与提供程序数据一起使用时,这些参数才可用。
内置提供程序
PowerShell 包括一组内置提供程序,可用于访问不同类型的数据存储。
提供程序 | 驱动器 () | OutputType |
---|---|---|
Alias | Alias: | System.Management.Automation.AliasInfo |
证书 | Cert: | Microsoft.PowerShell.Commands.X509StoreLocation |
System.Security.Cryptography.X509Certificates.X509Certificate2 | ||
环境 | Env: | System.Collections.DictionaryEntry |
FileSystem | C: (*) | System.IO.FileInfo |
System.IO.DirectoryInfo | ||
函数 | 函数: | 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
Item 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
的信息。 例如,若要获取函数:驱动器的所有属性,请键入:
Get-PSDrive Function | Format-List *
可以像在文件系统驱动器上一样查看和移动提供程序驱动器中的数据。
若要查看提供程序驱动器的内容,请使用Get-Item或Get-ChildItem cmdlet。 键入驱动器名称,后跟冒号 (:) 。 例如,若要查看别名:驱动器的内容,请键入:
Get-Item alias:
可以通过在路径中包含驱动器名称来查看和管理另一个驱动器中的任何驱动器中的数据。 例如,若要查看 HKLM 中的 HKLM\Software 注册表项:来自另一个驱动器的驱动器,请键入:
Get-ChildItem HKLM:\SOFTWARE\
若要打开驱动器,请使用 Set-Location cmdlet。 指定驱动器路径时,请记住冒号。 例如,若要将位置更改为证书:驱动器的根目录,请键入:
Set-Location 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 默认值的提供程序。 It's the same value as $Home
. 有关详细信息,请参阅 about_Automatic_Variables。
可以使用提供程序的属性为当前会话设置 主页 目录。
(Get-PSProvider FileSystem).Home = "C:\"
该 ~
字符可用于表示提供程序的主目录。
如果提供程序没有 主页 位置集,则会看到错误。
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-Item
cmdlet。Get-ChildItem
只有在使用 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