Durante la integración y/o administración de una plataforma pueden aparecer necesidades constantes de actualizar GPOs en los servidores.
Modificar una GPO y realizar un gpupdate en los servidores no es una tarea complicada, pero cuando son unos cuantos los servidores a actualizar, puede ser un poco tedioso.
Las pruebas se realizarán sobre un servidor donde validaremos su correcto funcionamiento, pero confirmado el proceso, si queremos aplicar de forma inmediata estos cambios al resto de servidores, no nos quedará mas remedio que ir conectando uno por uno para forzar el update o esperar a que estas sean aplicadas de forma automática.
PowerShell permite a los administradores Windows automatizar tareas que solemos utilizar o que es necesario realizar de forma común o repetitiva.
Este pequeño script en PowerShell se encargará de actualizar mediante gpupdate una lista de servidores concreto. Para ello, nos son necesarias 3 cosas.
- Lista de servidores a actualizar
- Procedimiento para lanzar gpupdate de forma remota
- PShell Script que incluya el script
El primer punto se solventa con un fichero .txt en el cual incluimos el nombre de maquina (fqdn). Ejecutar el comando en mas o menos servidores, implica únicamente modificar el fichero con mas o menos servidores a actualizar.
Para el segundo punto, busque la solución mas rápida. Y esta vino de Sysinternals con “psexec.exe” el cual nos posibilita la ejecución de comandos de forma remota.
Por último, solo quedaba generar el script. Y este es sin duda el punto mas sencillo 😉 Ahí os dejo el código:
$ListComputers = gc .\Servers.list.txt
# Creamos variable $ListComputers con el contenido del fichero servers.list.txt
Foreach ($strComputer in $ListComputers)
# Por cada elemento, asignar valor a la variable $strComputer y realizar:
{.\psexec.exe \\$strComputer gpupdate.exe /target:computer /force}
#Ejecuta de forma remota mediate psexec.exe sobre la maquina $strComputer, un gputdate.exe y actualiza las GPOs de maquina.
Modificando el target por :user las gpo de usuario serán actualizadas, pero tened en cuenta que las directivas de usuario en algunos casos requieren de un logoff de usuario. Para forzar este logoff utilizaríamos el modificador /Logoff.
$ListComputers = gc .\Servers.list.txt
Foreach ($strComputer in $ListComputers)
{.\psexec.exe \\$strComputer gpupdate.exe /target:user /forcé /Logoff}
Recursos:
Psexec: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Gpupdate: http://technet.microsoft.com/en-us/library/cc739112%28v=ws.10%29.aspx
Leave a Reply