Isso não é realmente possível, pelo menos não com o nível de detalhe que você deseja, porque o Windows simplesmente não registra esse nível de detalhes sobre o motivo de uma reinicialização ser necessária. Além disso, como eu disse no meu comentário acima, isso parece apontar para alguns problemas muito sérios no seu ambiente que você deve abordar - falta de controles de mudança e práticas de administração ruins.
Dito isto, o Windows rastreia o status de reinicialização pendente no registro e há uma série de blogs de duas partes no blog sobre scripts da Technet sobre como usar o PowerShell para determinar esse status, que convenientemente mostra onde procurar manualmente por esses bandeiras também. (Eles estão no registro, surpresa, surpresa).Parte I :
-
Registro: PendingFileRenameOperations
- Em
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager
, se houver um valor chamadoPendingFileRenameOperations
, ele conterá uma lista de arquivos que precisam ser renomeados na reinicialização.
- Em
-
Registro: Windows Update \ Auto Update
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update
, se houver um valor chamadoRebootRequired
, uma reinicialização está pendente.
-
-
Registro: manutenção baseada em componentes
- Procurando pela chave
HKLM\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
- Procurando pela chave
-
WMI: CCM_ClientUtilities (apenas clientes do System Center Configuration Manager)
-
System Center Configuration Manager 2012 must be installed on the client. When it’s installed, the ‘ROOT\ccm\ClientSDK’ WMI class will be available. This class has a method called DetermineIfRebootPending.
-
Se você prefere simplesmente pegar o script do PowerShell, que está aqui, na Parte II .