Come posso sapere se Windows è in esecuzione in modalità provvisoria?

Ho un assistente di Windows che a volte riavvia in modalità sicura dopo gli aggiornamenti. Sto lavorando a questo problema, ma quello che mi piacerebbe sapere è come posso controllare per vedere se Windows è in esecuzione in modalità provvisoria o no.

Idealmente vorrei incorporarlo in uno script che invierebbe un controllo passivo alla nostra casella Nagios con lo stato.

C'è una variabile ambientale che posso usare o qualche modo per get queste informazioni tramite la row di command?

4 Solutions collect form web for “Come posso sapere se Windows è in esecuzione in modalità provvisoria?”

Penso che questo fa quello che stai cercando

PS C:\> gwmi win32_computersystem | select BootupState BootupState ----------- Normal boot 

http://msdn.microsoft.com/en-us/library/windows/desktop/aa394102%28v=vs.85%29.aspx

Valori di return possibili:

 Caricamento normale
 Caricamento del sistema fail-safe
 Fail-safe con l'avvio di networking

Secondo questo articolo , una variabile di ambiente chiamata SAFEBOOT_OPTION è impostata su Minimal o Network se il sistema viene avviato in modalità provvisoria o in modalità provvisoria con networking; altrimenti la variabile è distriggersta.

Un test sul valore della variabile dovrebbe fare il trucco; tuttavia, tenere presente che se il sistema effettivamente esegue in modalità provvisoria, non avrà alcuna connessione in networking, per cui la segnalazione dello stato potrebbe essere difficile.

EDIT: il mio male, non ho letto il KB abbastanza per capire che è fondamentalmente inutile come una risposta da sola.

Un modo più utile per determinare se sei in modalità di sicurezza non è da : Microsoft® Windows® Internals: Microsoft Windows ServerTM 2003, Windows XP e Windows 2000 di Mark E. Russinovich, David A. Solomon .

Il kernel di Windows esegue la scansione dei parametri di avvio alla ricerca dei switch di sicurezza in modalità primitiva durante l'avvio e imposta la variabile interna InitSafeBootMode a un valore che riflette gli switch che il kernel trova. Il kernel scrive il valore InitSafeBootMode al valore del Registro di sistema HKLM \ SYSTEM \ CurrentControlSet \ SafeBoot \ Opzione \ Opzione Valore in modo che i componenti di modalità utente, come il SCM, possano determinare quale modalità di avvio è il sistema.

Prendi quanto sopra e accoppi con quanto segue, e avrai una posizione del Registro di sistema che puoi controllare con un valore numbersco che puoi tradurre in qualcosa di utile.

Dal supporto.microsoft KB intitolato "Come determinare se il sistema è in esecuzione in modalità provvisoria da un driver di periferica".

Il kernel di Windows esport un puntatore a una variabile ULONG denominata InitSafeBootMode. Questa variabile contiene le impostazioni della modalità provvisoria.

Un driver di periferica può determinare se il sistema è in esecuzione in modalità provvisoria dal valore della variabile InitSafeBootMode. Un valore di 0 significa che il sistema non è in esecuzione in modalità provvisoria.

La tabella seguente elenca le modalità per altri valori.
Modalità Valore
1 SAFEBOOT_MINIMAL
2 SAFEBOOT_NETWORK
3 * SAFEBOOT_DSREPAIR
* Nota Il valore di 3 si applica solo ai controller di dominio di Windows.

È inoltre ansible eseguire la query WMI suggerita da Craig620 direttamente dalla row di command se non si utilizza PowerShell:

 > wmic COMPUTERSYSTEM GET BootupState BootupState Normal boot 
Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.