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

可以使用其属性为提供程序设置 提供程序的主目录 (当前会话)。

(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-ItemGet-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

请参阅