O enforcamento durante as reinicializações é um problema muito conhecido. Eu sugiro mudar a forma como o servidor faz suas atualizações, especialmente não permitindo que ele seja reinicializado como parte do processo de atualização. O método que tenho usado há vários anos com total confiabilidade é:
- As atualizações são baixadas pelo servidor (no meu caso, elas são obtidas de um servidor WSUS) à medida que se tornam disponíveis, mas não instaladas.
- Sábado à noite, um script é executado para instalar essas atualizações, mas o servidor não é reinicializado neste estágio.
- Domingo de manhã cedo, o servidor é reinicializado usando um arquivo em lote por meio do agendador de tarefas. Esse arquivo em lote usa o shutdown.exe para executar a reinicialização. É executado primeiro para fazer logoff de qualquer pessoa no servidor e, em seguida, executar novamente para fazer a reinicialização real. Tentar fazer as duas coisas ao mesmo tempo não é muito confiável.
Desde a implementação desse sistema, nunca tive um servidor travado durante a reinicialização. Antes disso, pelo menos um dos servidores, às vezes mais, pendurava algumas vezes por ano.
Além do acima, também tenho um arquivo de lote executado como um script de inicialização da máquina que me envia um email quando o servidor é reinicializado. Eu me verifico primeiro e-mail no domingo de manhã. Se alguma vez eu não tiver um e-mail de cada um dos servidores, sei que tenho um problema, porque ele não iniciou a reinicialização ou não a concluiu. Ele funciona como um alerta útil caso um servidor se reinicialize por qualquer motivo.
Atualização:
O script de instalação que eu uso (UpdateHF_v2.5.vbs) foi criado por Rob Dunn e está disponível em aqui . Eu personalizei minha cópia um pouco para atender às minhas necessidades.
O arquivo em lote de reinicialização é:
@echo off
%windir%\system32\shutdown /l /t 1
%windir%\system32\shutdown /r /t 10 /c "Planned reboot" /f /d P:2:17
O arquivo em lote que envia o e-mail de notificação de reinicialização é (informações privadas removidas):
@echo off
c:\windows\blat.exe - -to "list of email addresses, separated with comas" -f "sender email" -s "Reboot Alert (Put the server name here)" -ti 30 -try 120 -noh -body "Whatever message you want" -server mail.server
Eu uso blat, mas obviamente você pode usar qualquer programa de email de linha de comando que você goste.