注册表编辑器查看PowerShell

PowerShell注册表(二)”提供程序“文件系统以外的位置 2


PowerShell管理注册表之系列文章:

  1. 操作注册表的几条重要命令
  2. “提供程序”文件系统以外的位置
  3. 搜索注册表
  4. 创建和删除键值
  5. 注册表权限

PowerShell拥有一个被叫做“提供程序”的负责特定信息存储的模型化结构。在上一章,你已经使用过了文件系统提供程序,所以如果你想访问注册表,就需要一个替代文件系统的注册表提供者。在其它方面,就和上一章的操作没什么区别了。你可以在注册表中使用你在文件系统中使用过的命令。

支持的提供程序

Get-PSProvider能获取安装的提供程序列表。下面的例子中,可能没有列出你自定义的列表,因为提供程序可以随后添加。比如,PowerShell默认就没有活动目录的提供程序。

PS> Get-PSProvider

Name                 Capabilities                                      Drives
----                 ------------                                      ------
Alias                ShouldProcess                                     {Alias}
Environment          ShouldProcess                                     {Env}
FileSystem           Filter, ShouldProcess, Credentials                {C, D, E}
Function             ShouldProcess                                     {Function}
Registry             ShouldProcess, Transactions                       {HKLM, HKCU}
Variable             ShouldProcess                                     {Variable}
Certificate          ShouldProcess                                     {Cert}

这里你感兴趣的可能只是“Drives”列,它就是用来管理各自驱动器的名称。你也看到了,注册表提供程序挂载了驱动器HKLM:(根目录HKEY_LOCAL_MACHINE)和HKCU:(根目录HKEY_CURRENT_USER)。这些驱动器用起来,很像传统的文件系统驱动器,试试吧:

Cd HKCU:
Dir

从这个位置,你可以像你在真正的文件系统中做的那样,通过子目录来导航。相同的特殊字符功能也一样,除了”~”符号在注册表中不能识别,并且会产生错误。

然而其它驱动器,不属于这章的内容,因为我们的重点在注册表,但是作为引用还是在下面的表格中列出了所有的驱动器:

提供者 描述 示例
Alias 管理别名 Dir Alias:$alias:Dir
Environment 访问环境变量的提供者 Dir env:$env:windir
Function 列出所有定义的函数, Dir function:$function:tabexpansion
FileSystem 访问驱动器,目录和文件 Dir c:$(c:\autoexec.bat)
Registry 访问Windows注册表 Dir variable:$variable:pshome
Variable 管理定义在控制台中的所有变量 Dir variable:$variable:pshoMe
Certificate 访问证书存储区的所有证书 Dir cert:Dir cert:-recurse

创建提供程序

注册表提供程序提供访问注册表。你可以通过驱动器来定位它们。如果你想查看那些注册表驱动器已经被注册表提供程序使用了,可以通过Get-PSDrive命令,和参数-PSProvider:

PS> Get-PSDrive -PSProvider Registry 

Name Used (GB) Free (GB) Provider Root               CurrentLocation
---- --------- --------- -------- ----               ---------------
HKCU                     Registry HKEY_CURRENT_USER
HKLM                     Registry HKEY_LOCAL_MACHINE

这里稍微注意下,你可能会困惑,注册表包含的根节点远不止两个。

注册表根节点

注册表根节点

事实上HKEY_CLASSES_ROOT根节点不是一个独立的根节点,而是指向HKEY_LOCAL_MACHINE\SOFTWARE\Classes。这意味着你可以以这个路径为起点,来创建一个新的驱动器。

New-PSDrive -name HKCR -PSProvider registry -root HKLM:\SOFTWARE\Classes
Dir HKCR:

现在,你可以去访问这个分支了。事实上,你可以访问上面表格中列出的任意根节点。

小技巧:你可以自由地创建任何额外的驱动器,尤其在你有频繁操作某个特定的注册表区域时。

New-PSDrive job1 registry "HKLM:\Software\Microsoft\Windows NT\CurrentVersion"
dir job1:

原文链接:Managing Windows Registry

本文链接: https://www.pstips.net/provider-locations-outside-the-file-system.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 Mooser Lee 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 条评论 “PowerShell注册表(二)”提供程序“文件系统以外的位置

  • Alice

    讲述的实在是太垃圾了~~本身还有错误 ~~~你们能不能上点心 弄明白自己要说什么~~看人家java的学习网站比你们强多了 ~~~

    • Mooser Lee 文章作者

      对不起,给你造成的不便我深表遗憾。请您参考下面的资料
      本文的英文版本:http://powershell.com/cs/blogs/ebookv2/archive/2012/03/23/chapter-16-managing-windows-registry.aspx
      本文的英文电子书:http://www.pstips.net/mastering-powershell.html

      最后再次致歉!