我有一台 Windows 服务器,在更新后有时会重新启动进入安全模式。我正在解决这个问题,但我真正想知道的是如何检查 Windows 是否在安全模式下运行。
理想情况下,我希望将其合并到一个脚本中,该脚本会将状态的被动检查发送到我们的 Nagios 框。
是否有一些我可以使用的环境变量或某种方法通过命令行获取此信息?
答案1
我认为这正是你想要的
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
可能的返回值:
正常启动 故障安全启动 通过网络启动实现故障安全
答案2
根据本文,如果系统以安全模式或带网络连接的安全模式启动,则将调用的环境变量SAFEBOOT_OPTION
设置为或Minimal
;否则,将取消设置该变量。Network
对变量值的测试应该可以解决问题;但是,请记住,如果系统实际上在安全模式下运行,那么它将没有网络,因此报告其状态可能会很困难。
答案3
您还可以运行克雷格620如果您不使用 PowerShell,则直接从命令行执行:
> wmic COMPUTERSYSTEM GET BootupState
BootupState
Normal boot
答案4
HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions 包含一个字符串,如果您处于安全模式,字符串中将有一个“SAFEBOOT:???”,其中 ??? 是 MINIMAL 或 NETWORK。每次启动时都会更新。