David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.

lunes, 10 de octubre de 2016

Reinicia todos los servidores en la distancia desde batch de Windows o PowerShell. Elige!

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.