PowerShell y Shift + Ins, o cómo ganar velocidad de Hermes cuando se trabaja con GPP


El portapapeles y PowerShell se acelerarán, pero no a ciegas.


Usar GPP para agregar archivos de registro es espeluznante e inconveniente: todas estas ramas de registro, tipo de clave, valores ... Especialmente si las ramas y los valores son bastante buenos. Pero hay un par de trucos de vida que pueden acelerar significativamente el trabajo con políticas grupales.


Por supuesto, puede colgar un script de inicio de sesión con el comando de importación de la rama del registro. Pero este no es nuestro método.


La primera manera Ligeramente complicado


La primera opción es crear su propia plantilla de GPO. Este método es especialmente conveniente si necesita cambiar los parámetros de valor según el usuario. Si no desea aprender los principios de la formación de plantillas, simplemente puede exportar el archivo reg "correcto" y convertirlo en un archivo de plantilla utilizando el script REG_2_ADMXL.vbs publicado en la galería de scripts de Technet.


Supongamos que queremos hacer la vida más fácil para los usuarios atornillando varios motores de búsqueda a Internet Explorer de la siguiente manera:


  • si ingresa el texto de la consulta en la barra de direcciones " g ", la consulta se buscará en Google;
  • "Texto de solicitud Y " - en Yandex;
  • y " w query text" en Wikipedia en ruso.

Para hacer esto, solo prepare el archivo de registro:


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" 

Conviértalo en una plantilla con el siguiente comando:


 cscript REG_2_ADMXL.vbs IE-search.reg Ru-ru IE-search.admx 

La plantilla resultante y la carpeta con el archivo de idioma se lanzarán al directorio de plantillas. Ahora nuestra política aparecerá en el complemento de administración de GPO.



Plantilla instalada


El mecanismo no es muy conveniente en términos de mantenimiento, pero en principio funciona. Y no conduzca nada manualmente.


Otra opción sería usar cmdlets de PowerShell para trabajar con el GPO. Por ejemplo, para restaurar el elemento del menú contextual "Enviar" a los usuarios, el conjunto de cmdlets será el siguiente:


 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 

Parece la opción para una sola clave. Si hay muchas claves, entonces, para su comodidad, deberá reinventar la rueda y volver a convertir el archivo de registro en un conjunto de cmdlets de PowerShell.


Puede leer más sobre cómo trabajar con políticas grupales y automatizar todo esto en uno de los artículos anteriores, " Inmersión en plantillas y domesticación de GPO de Windows " . Bueno, hablaré sobre mi método favorito.


El segundo camino. Copiar - Pegar (casi)


Como habrás notado (no lo noté de inmediato), las acciones en los objetos, incluidas las operaciones estándar del portapapeles, están disponibles en el complemento Administración de directivas de grupo.



El menú contextual en la configuración del registro GPP.


Si copia un objeto al portapapeles y lo pega, resulta que este objeto es un archivo xml. Esto significa que el archivo puede generarse previamente y agregarse al complemento sin completar manualmente los campos.


Para esto, Malcolm McCaffery escribió un guión especial. Genera un archivo xml basado en el archivo de registro exportado. El guión se puede encontrar en el blog del autor.


La secuencia de comandos del autor contiene llamadas adicionales a la función Convert-Reg2Xml y un bloque de parámetros adicional. Estos errores se reparan fácilmente durante una prueba ejecutada a través de PowerShell ISE. Sin embargo, por si acaso, lancé la versión corregida en pastebin . También hay una bifurcación de este script en github , e incluso un servicio en línea que hace lo mismo.

Usar un script es extremadamente simple.


 Convert-Reg2Xml -regPath input.reg -xmlPath output.xml 

El xml resultante incluso puede simplemente arrastrarse al campo para la configuración del registro.


Analicemos un ejemplo específico. Primero, exporte la rama de registro "correcta". En este ejemplo, crearemos una política para habilitar la visualización de archivos ocultos, carpetas, extensiones y, al mismo tiempo, haremos un inicio automático de ctfmon.exe para cambiar sin problemas el diseño.


El archivo de registro es el siguiente:


 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” 

Conviértalo a xml. Si nos fijamos en el archivo resultante, ya será así:


Listado completo de XML bajo el spoiler.
 <?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> 

Ahora puede simplemente pegarlo en el campo de configuración del registro. Esta belleza resultará:



Política personalizada


Con la destreza adecuada, el proceso lleva menos tiempo que leer este texto.


Para mayor comodidad, puede agregar un elemento para archivos de registro en el menú contextual para convertir archivos en general en dos clics.


Será suficiente crear un nuevo tipo de acción para objetos de tipo regfile y escribir la ruta al script deseado. Para su comodidad, he compilado esto, por supuesto, en un archivo de registro:


 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" 

La ruta al script se especifica en la última línea.


Para que el script resuelva esto, debe agregarle las siguientes líneas:


 $output=(Split-Path -Path $args[0]) + "\output.xml" Convert-Reg2Xml -regPath $args[0] -xmlPath $output 

Ahora, cuando llame al menú contextual, se mostrará otro elemento, cuando haga clic en él, el archivo xml que necesitamos aparece junto al archivo de registro.



Nuevo elemento del menú contextual.


Por supuesto, para realizar cambios simples en el registro de usuarios y computadoras, tales mecanismos son superfluos. Pero para configurar una gran cantidad de parámetros, estos trucos de vida son muy convenientes.

Source: https://habr.com/ru/post/es419483/


All Articles