PowerShell管理注册表之系列文章:
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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
讲述的实在是太垃圾了~~本身还有错误 ~~~你们能不能上点心 弄明白自己要说什么~~看人家java的学习网站比你们强多了 ~~~
对不起,给你造成的不便我深表遗憾。请您参考下面的资料
本文的英文版本:http://powershell.com/cs/blogs/ebookv2/archive/2012/03/23/chapter-16-managing-windows-registry.aspx
本文的英文电子书:http://www.pstips.net/mastering-powershell.html
最后再次致歉!