Programar el reinici dels servidors és una pràctica saludable: permet aplicar actualitzacions i ajuda a alliberar memòria. Hi ha moltes maneres de fer-ho; en aquest recordatori us explico com ho vaig fer jo. L’exemple funciona amb Windows Server 2003, 2008, 2008 R2, 2012, 2012 R2, 2016…
Primer vaig triar un dels servidors per enviar l’ordre de reinici a la resta. En el meu cas, el controlador de domini principal. Com que tenim molts servidors i no es poden reiniciar tots alhora, vaig fer grups de reinici. Vosaltres podeu fer el mateix, amb tants grups com calgui.
Per als avisos per correu vaig fer servir SendEmail, un programa gratuït que envia correus des de la línia d’ordres. Només cal descarregar-lo i descomprimir-lo en una carpeta, per exemple C:\Scripts.
Vaig preparar un fitxer anomenat reboot_alert_group1.cmd a C:\Scripts amb un avís per correu semblant a aquest:
reboot_alert_group1.cmd
c:\Scripts\sendemail.exe -f noreply@MyDomain.com -t MyEmail@MyDomain.com -u "Starting Server restart tasks 1" -m "Now we are restarting servers: Server01, Server02, Server03" -s smtp.office365.com:587 -xu ValidMail@MyDomain.com -xp MyEmailPassword
Com veieu, no té cap secret:
sendemail.exe -f "remitent" -t "destinatari" -u "assumpte" -m "missatge" -s "servidor SMTP" -xu "usuari per autenticar-se a l'SMTP" -xp "contrasenya d'aquest usuari"
Després vaig preparar un altre fitxer, restart_servers_group1.cmd, que crida reboot_alert_group1.cmd i envia l’ordre de reinici als servidors amb PowerShell:
restart_servers_group1.cmd
call reboot_alert_group1.cmd powershell restart-computer "Server01","Server02","Server03" -force
Abans d’executar-lo, us recomano comprovar l’accés remot a aquests servidors amb PowerShell. Obriu la línia d’ordres, executeu powershell i proveu aquesta ordre, canviant Server01 pel nom del servidor que voleu provar:
PS C:\Scripts> gwmi win32_networkadapterconfiguration -computername Server01 -filter "ipenabled = 'true'" -erroraction stop | select dnshostname,ipaddress,defaultipgateway,dnsserversearchorder,winsprimaryserver,winssecondaryserver | ft -property * -autosize | out-string -Width 4096
Si funciona, ja ho teniu. Si dona un error de connexió, probablement haureu de permetre l’»Administració remota» des de la vostra IP al tallafocs del servidor.
Programeu les tasques de reinici d’aquesta manera i repetiu-ho per a cada grup de servidors:
Per rebre un avís quan els servidors tornen a estar en línia farem servir el mateix programa, SendEmail. Només cal copiar-ne els fitxers a C:\Scripts a cada servidor i preparar un fitxer amb el missatge. En el meu cas, rebootalert.cmd:
rebootalert.cmd
c:\Scripts\sendemail.exe -f noreply@MyDomain.com -t MyEmail@MyDomain.com -u "Server01 has booted by scheduled task" -m "Server01 has booted by scheduled task!" -s smtp.office365.com:587 -xu ValidMail@MyDomain.com -xp MyEmailPassword
I a cada servidor creem una tasca programada que executi rebootalert.cmd en arrencar:
Nota: aquests fitxers .cmd contenen la contrasenya del compte de correu en text pla. Protegiu la carpeta amb permisos NTFS perquè només hi tinguin accés els administradors.
I això és tot!
Traducció feta amb l’ajuda d’IA a partir de l’article original.














