Acho que isso faz o que você está procurando
PS C:\> gwmi win32_computersystem | select BootupState
BootupState
-----------
Normal boot
Valores de retorno possíveis:
Normal boot Fail-safe boot Fail-safe with network boot
Eu tenho um servidor Windows que às vezes é reiniciado no modo de segurança após as atualizações. Estou trabalhando nesse problema, mas o que eu realmente gostaria de saber é como posso verificar se o Windows está sendo executado no modo de segurança ou não.
O ideal é que eu gostaria de incorporá-lo em um script que enviaria uma verificação passiva para a nossa caixa Nagios com o status.
Existe alguma variável ambiental que eu possa usar ou alguma forma de obter essa informação através da linha de comando?
Acho que isso faz o que você está procurando
PS C:\> gwmi win32_computersystem | select BootupState
BootupState
-----------
Normal boot
Valores de retorno possíveis:
Normal boot Fail-safe boot Fail-safe with network boot
De acordo com este artigo , uma variável de ambiente chamada SAFEBOOT_OPTION
está definida como Minimal
ou Network
se o sistema for iniciado no modo de segurança ou no modo de segurança com rede; caso contrário, a variável não será definida.
Um teste no valor da variável deve fazer o truque; no entanto, lembre-se de que, se o sistema estiver sendo executado no modo de segurança, ele não terá nenhuma rede para começar, portanto, relatar seu status pode ser ... difícil.
EDIT: meu mal, eu não li a KB completamente o suficiente para perceber que é basicamente inútil como uma resposta por si só.
Uma maneira mais útil de determinar se você está no modo de segurança não é : Interno do Microsoft® Windows®: Microsoft Windows ServerTM 2003, Windows XP e Windows 2000 por Mark E. Russinovich, David A. Solomon .
The Windows kernel scans boot parameters in search of the safe-mode switches early during the boot and sets the internal variable InitSafeBootMode to a value that reflects the switches the kernel finds. The kernel writes the InitSafeBootMode value to the registry value HKLM\SYSTEM\CurrentControlSet\SafeBoot\Option\Option Value so that user-mode components, such as the SCM, can determine what boot mode the system is in.
Pegue o acima e faça par com o abaixo, e você terá um local do registro que você pode verificar com um valor numérico que você pode traduzir em algo útil.
The Windows OS kernel exports a pointer to a ULONG variable that is named InitSafeBootMode. This variable contains the Safe Mode settings.
A device driver can determine whether the system is running in Safe Mode by the value of the InitSafeBootMode variable. A value of 0 means that the system is not running in Safe Mode.
The following table lists the modes for other values.
Value Mode
1 SAFEBOOT_MINIMAL
2 SAFEBOOT_NETWORK
3* SAFEBOOT_DSREPAIR
*Note The value of 3 applies to Windows domain controllers only.
Você também pode executar a consulta WMI sugerida por Craig620 diretamente da linha de comando, se você não estiver usando o PowerShell :
> wmic COMPUTERSYSTEM GET BootupState
BootupState
Normal boot