如何使用PowerShell确认Windows服务器系统初始化是否完成
除了lastbootuptime之外,你可以通过以下几类可通过PowerShell CIM接口提取的信息,验证服务器已经完成正常启动:
- 系统事件日志标志事件
Windows服务器完成完整启动流程后,会在系统日志中写入事件ID为6005的记录,对应「事件日志服务已启动」,是业界通用的系统启动完成标识。你可以直接复用现有CIM会话查询:
只要对应服务器返回的该事件生成时间晚于Get-CimInstance -CimSession $cs -ClassName Win32_NTLogEvent -Filter "LogFile='System' and EventCode=6005" | select CSName, TimeGeneratedlastbootuptime,即可证明启动流程没有中断。 - 核心系统服务运行状态
服务器正常启动后,必须的基础服务都会进入运行状态,你可以查询RPC、WMI、SMB这类默认必启服务的状态验证:
若以上服务全部返回运行状态,说明系统服务层已正常加载。Get-CimInstance -CimSession $cs -ClassName Win32_Service -Filter "Name IN ('RpcSs','Winmgmt','LanmanServer') AND State='Running'" - 操作系统运行状态属性
你原本查询的Win32_operatingsystem类还包含Status属性,服务器正常启动完成后该属性值为OK,同时可以对比LocalDateTime(当前系统时间)与lastbootuptime的差值,确认运行时长符合预期,排除启动后立即崩溃的异常情况。 - 关键进程运行情况
正常启动的服务器会存在winlogon.exe、lsass.exe、svchost.exe等核心系统进程,通过Win32_Process类查询这些进程存在且启动时间晚于系统启动时间,也可以作为验证依据。 - 业务端口监听状态
如果服务器有固定的对外服务(比如远程桌面3389、Web服务80/443、数据库服务1433等),可以查询TCP监听端口是否正常启用,证明业务层也完成启动:Get-CimInstance -CimSession $cs -ClassName MSFT_NetTCPConnection -Namespace root/StandardCimv2 -Filter "State='Listen'" | select LocalPort,OwningProcess
内容的提问来源于stack exchange,提问作者Ruben_PH
相关产品推荐
相关产品推荐

