about_Providers
简短说明
介绍 PowerShell 提供程序如何提供对在命令行上无法轻松访问的数据和组件的访问。 数据以类似于文件系统驱动器的一致格式显示。
长说明
PowerShell 提供程序是 .NET 程序,提供对专用数据存储的访问权限,以便更轻松地查看和管理。 数据显示在驱动器中,你可以像在硬盘驱动器上一样访问路径中的数据。 可以使用提供程序支持的任何内置 cmdlet 来管理提供程序驱动器中的数据。 而且,可以使用专为数据设计的自定义 cmdlet。
提供程序还可以向内置 cmdlet 添加动态参数。 仅当将 cmdlet 与提供程序数据一起使用时,这些参数才可用。
内置提供程序
PowerShell 包含一组内置提供程序,这些提供程序提供对不同类型的对象的访问。
- 别名 提供程序
- 驱动-
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
- 驱动器 -
- 函数 提供程序
- 驱动-
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
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
的信息。 例如,若要获取 Function: drive 的所有属性,请键入:
Get-PSDrive Function | Format-List *
可以在提供程序驱动器中查看和移动数据,就像在文件系统驱动器上一样。
若要查看提供程序驱动器的内容,请使用 Get-Item
或 Get-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
和 Get-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