关于提供商

简短说明

描述 PowerShell 提供程序如何提供对数据和组件的访问,否则这些数据和组件将无法在命令行中轻松访问。 数据以与文件系统驱动器类似的一致格式显示。

详细说明

PowerShell 提供程序是基于 Microsoft .NET Framework 的程序,它使专用数据存储中的数据在 PowerShell 中可用,以便您可以查看和管理这些数据。

提供程序公开的数据显示在驱动器中,您可以像在硬盘驱动器上一样通过路径访问数据。 可以使用提供程序支持的任何内置 cmdlet 来管理提供程序驱动器中的数据。 此外,可以使用专为数据设计的自定义 cmdlet。

提供程序还可以将动态参数添加到内置 cmdlet。 这些参数仅在将 cmdlet 与提供程序数据一起使用时可用。

内置提供程序

PowerShell 包括一组内置提供程序,可用于访问不同类型的数据存储。

提供者 驱动器 数据仓库
别名 别名: PowerShell 别名
证书 证书: 用于数字签名的 X509 证书
环境 环境: Windows 环境变量
文件系统 (*) 文件系统驱动器、目录和文件
功能 功能: PowerShell 函数
注册表 HKLM:, HKCU: Windows 注册表
变量 变量: PowerShell 变量
WSMan WSMan: WS-Management 配置信息

(*)每个系统的 FileSystem 驱动器都不同。

还可以创建自己的 PowerShell 提供程序,还可以安装其他人开发的提供程序。 若要列出会话中可用的提供程序,请键入:

Get-PSProvider

安装和删除提供程序

PowerShell 提供程序以 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

ChildItem cmdlet

内容 Cmdlet

Item Cmdlet

ItemProperty cmdlet

位置 cmdlet

路径 cmdlet

PSDrive cmdlet

PSProvider Cmdlet

查看提供程序数据

提供程序的主要好处是,它以熟悉且一致的方式公开其数据。 数据呈现的模型是文件系统驱动器。

要使用提供程序公开的数据,您可以查看这些数据,浏览这些数据,然后像更改硬盘驱动器上的数据一样对其进行更改。 因此,有关提供程序的最重要信息是它支持的驱动器的名称。

该驱动器列在 Get-PSProvider cmdlet 的默认显示中,但您可以使用 cmdlet 获取有关提供程序驱动器 Get-PSDrive 的信息。 例如,若要获取 Function: drive 的所有属性,请键入:

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 提供程序是唯一具有 主页默认值的提供程序。 它与 see $Home 的值相同

可以使用提供程序的属性为提供程序设置 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-ItemGet-ChildItem cmdlet。 只有在 Get-Item 驱动器中使用 Get-ChildItemCert: 时,才能使用此参数。

有关提供程序支持的动态参数的列表,请参阅提供程序的帮助文件。 类型:

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