
剪贴板和PowerShell将加速,但不会盲目。
使用GPP添加注册表文件是令人毛骨悚然和不便的-所有这些注册表分支,键类型,值...尤其是在分支和值非常好的情况下。 但是,有一些生活技巧可以大大加快组策略的工作速度。
当然,您可以使用注册表分支的import命令挂起登录脚本。 但这不是我们的方法。
第一种方式。 有点复杂
第一种选择是创建自己的GPO模板。 如果需要根据用户更改值参数,则此方法特别方便。 如果您不想学习模板形成的原理,只需导出“正确的” reg文件,然后使用Technet脚本库中发布的REG_2_ADMXL.vbs脚本将其转换为模板文件即可 。
假设我们想通过将几个搜索引擎固定到Internet Explorer来使用户的生活更轻松,如下所示:
- 如果您在地址栏“ g ”中输入查询文本,则会在Google上搜索查询;
- “ Y请求文本”-在Yandex中;
- 和俄语Wikipedia中的“ w查询文字”。
为此,只需准备注册表文件:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\W] @="http://ru.wikipedia.org/wiki/:Search?search=%s" [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\Y] @="http://www.yandex.ru/yandsearch?rpt=rad&text=%s" [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\G] @="http://www.google.com/search?q=%s"
使用以下命令将其转换为模板:
cscript REG_2_ADMXL.vbs IE-search.reg Ru-ru IE-search.admx
生成的模板和带有语言文件的文件夹将被丢入templates目录。 现在,我们的策略将出现在GPO管理单元中。

已安装的模板。
该机制在维护方面不是很方便,但是原则上它可以工作。 并且不要手动驱动任何东西。
另一个选择是使用PowerShell cmdlet与GPO一起使用。 例如,要将“发送到上下文”菜单项还原给用户,则一组cmdlet将如下所示:
Import-module -Name GroupPolicy New-GPO -Name SendTo Set-GPRegistryValue -Name "SendTo" -key "Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -ValueName SendTo -Type ExpandString -value "C:\Users\Default\AppData\Roaming\Microsoft\Windows\SendTo" Set-GPLink -Name SendTo -Target "ou=Users,dc=domain,dc=com" -LinkEnabled Yes
看起来只有一个按键的选项。 如果密钥很多,为方便起见,您将不得不重新发明轮子,然后再次将注册表文件转换为一组PowerShell cmdlet。
您可以在上一篇文章“ 深入了解模板并驯服Windows GPO ”中阅读有关使用组策略并自动执行所有操作的更多信息。 好吧,我来谈谈我最喜欢的方法。
第二种方式。 复制-粘贴(几乎)
您可能已经注意到(我没有马上注意到),“组策略管理”管理单元中提供了对对象的操作,包括标准剪贴板操作。

GPP注册表设置中的上下文菜单。
如果将对象复制到剪贴板并粘贴,则表明该对象是xml文件。 这意味着可以预先生成文件并将其添加到管理单元中,而无需手动填写字段。
为此,Malcolm McCaffery编写了一个特殊的脚本。 它基于导出的注册表文件生成xml文件。 该脚本可以在作者的博客上找到。
作者的脚本包含对Convert-Reg2Xml函数的额外调用以及一个额外的参数块。 在通过PowerShell ISE进行测试期间,可以轻松修复这些错误。 不过,以防万一,我将更正后的版本扔到了pastebin上 。 在github上也有此脚本的分支,甚至是执行相同操作的在线服务 。
使用脚本非常简单。
Convert-Reg2Xml -regPath input.reg -xmlPath output.xml
生成的xml甚至可以简单地拖到注册表设置字段中。
让我们分析一个具体的例子。 首先,导出“正确的”注册表分支。 在此示例中,我们将制定一个策略以启用隐藏文件,文件夹,扩展名的显示,同时使ctfmon.exe自动启动以无缝更改布局。
注册表文件如下:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "Hidden"=dword:00000001 "HideFileExt"=dword:00000000 "ShowSuperHidden"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] "Language Bar"=""ctfmon”=”CTFMON.EXE”
将其转换为xml。 如果查看生成的文件,它将已经像这样:
破坏者下的完整XML清单。 <?xml version="1.0" encoding="utf-8"?> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="HKEY_CURRENT_USER"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Software"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Microsoft"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Windows"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="CurrentVersion"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Explorer"> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Advanced"> <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="Hidden" descr="Imported Reg File" image="17"> <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="Hidden" default="0" type="REG_DWORD" displayDecimal="0" value="00000001" /> </Registry> <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="HideFileExt" descr="Imported Reg File" image="17"> <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="HideFileExt" default="0" type="REG_DWORD" displayDecimal="0" value="00000000" /> </Registry> <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="ShowSuperHidden" descr="Imported Reg File" image="17"> <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="ShowSuperHidden" default="0" type="REG_DWORD" displayDecimal="0" value="00000001" /> </Registry> </Collection> </Collection> <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Run"> <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="Language Bar" descr="Imported Reg File" image="7"> <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Run" name="Language Bar" default="0" type="REG_SZ" displayDecimal="0" value=""ctfmon”=”CTFMON.EXE”" /> </Registry> </Collection> </Collection> </Collection> </Collection> </Collection> </Collection>
现在,您只需将其粘贴到注册表设置字段中即可。 这种美丽会变成:

定制政策。
有了适当的技巧,该过程比阅读本文要花费更少的时间。
为了增加便利性,您可以在上下文菜单中为注册表文件添加一个项目,以通常单击两次即可转换文件。
为regfile类型的对象创建一种新的动作类型并将路径写入所需脚本就足够了。 为了方便起见,我将其当然编译为注册表文件:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\regfile\shell\convert2xml] @="convert2xml" [HKEY_CURRENT_USER\Software\Classes\regfile\shell\convert2xml\command] @="powershell.exe -File C:\\temp\\script.ps1 %1"
脚本的路径在最后一行中指定。
为了使脚本能够解决此问题,必须向其添加以下几行:
$output=(Split-Path -Path $args[0]) + "\output.xml" Convert-Reg2Xml -regPath $args[0] -xmlPath $output
现在,当您调用上下文菜单时,将显示另一个项目,当您单击它时,注册表文件旁边将显示我们需要的xml文件。

新的上下文菜单项。
当然,为了对用户和计算机的注册表进行简单的更改,这些机制是多余的。 但是对于设置大量参数而言,这些实用技巧非常方便。