Muchas veces veo como administradores de sistemas para reiniciar servidores, van a formas muy rudimentarias como, por ejemplo, coger control remoto de los 5 o 6 servidores para reiniciarlos, uno a uno. ¿Que pasa cuando son 20 o 30 servidores los que hay que reiniciar? ¿o muchos mas?
Esto hoy por hoy no tiene sentido ya que abriendo una consola cmd en windows, por poner un ejemplo, podemos utilizar el comando shutdown que admite establecer el servidor de destino y algún que otro parámetro más:
C:\> shutdown /r /m \\servidor01 /t 10 /c "Reiniciado por usuario Admin01"
Esto en un script batch de Windows, por ejemplo, podemos automatizar para que vaya reiniciando una lista de servidores. Podríamos hacer algo así:
set LISTADO_SERVERS=servidor01 servidor02 servidor03
for %%a in (%LISTADO_SERVERS%) do (
shutdown /r /m \\%%a /t 10 "Reiniciado por usuario Admin01"
)
Incluso previamente podríamos primero controlar la conectividad antes de lanzar el comando. Puedes ver un ejemplo de esto en esta entrada: Control de conectividad en batch de Windows o en PowerShell
Vale, vamos a ver como sería hacer lo mismo desde PowerShell. El cmdlet es Restart-Computer y el ejemplo extraído de la misma ayuda de powershell. Para realizar lo mismo que antes y reiniciar una lista de servidores e incluso el equipo cliente desde donde lo estamos lanzando:
C:\PS>restart-computer -computername servidor01 servidor02 localhost
Fácil, rápido y sencillo.
SaluDOS.