关于提供程序

简短说明

介绍 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

ChildItem cmdlet

内容 Cmdlet

Item Cmdlet

ItemProperty cmdlet

位置 cmdlet

路径 cmdlet

PSDrive cmdlet

PSProvider Cmdlet

查看提供程序数据

提供程序的主要优点是它以熟悉且一致的方式公开其数据。 数据表示的模型是文件系统驱动器。

若要使用提供程序公开的数据,可查看它、在数据中移动并更改它,就像它是硬盘驱动器上的数据一样。 因此,有关提供程序的最重要信息是它支持的驱动器的名称。

该驱动器在 cmdlet 的默认显示 Get-PSProvider 中列出,但你可以使用 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 提供程序是唯一具有 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-ItemGet-ChildItem cmdlet。 仅当在驱动器中使用 Cert:Get-ChildItem 时,才能使用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

另请参阅

about_Locations

about_Path_Syntax