vSphere Client中开机且VMware Tools正常的虚拟机在“摘要”页显示运行时间;PowerCLI可通过Runtime.BootTime获取启动时间戳;Linux用uptime或/proc/uptime、Windows用LastBootUpTime均可验证系统启动时间。

通过 vSphere Client 查看虚拟机运行时间
在 VMware vCenter 管理界面中,虚拟机的运行时间(uptime)仅对处于开机状态且 VMware Tools 正常运行的虚拟机实时可见,关机或挂起状态不显示该值。
1、登录 vSphere Client(网页版或桌面客户端),进入“虚拟机”标签页。
2、在虚拟机列表中找到目标虚拟机,单击选中它。
3、点击顶部“摘要”选项卡,在右侧“常规”信息区块中向下滚动,查找【运行时间】字段——该值格式为“X 天 Y 小时 Z 分钟”,由 vCenter 从客户机操作系统内核直接读取,无需人工计算。
4、若该字段为空白或显示“N/A”,说明该虚拟机当前未开机,或已开机但 VMware Tools 未运行/未安装/响应超时。
使用 PowerCLI 安全获取 bootTime 属性
PowerCLI 是 VMware 官方 PowerShell 模块,适合批量查询多台虚拟机的启动时间戳。必须确保连接的是 vCenter Server,而非单台 ESXi 主机。
方法一:基础安全访问(推荐日常使用)
1、以管理员身份打开 PowerShell,执行 Connect-VIServer -Server your-vcenter-domain -Credential (Get-Credential) 连入 vCenter。
2、运行以下命令获取指定虚拟机的 bootTime:
$vm = Get-VM "Win10-Test"; $bootTime = $vm.ExtensionData.Runtime.BootTime; if ($bootTime) { $bootTime.ToString("yyyy-MM-dd HH:mm:ss") } else { "Not available" }
这一步直接调用底层 API,【若虚拟机未开机或 Tools 异常,$bootTime 为 $null,不会报错】。
方法二:批量导出带容错的 CSV 报表
1、准备虚拟机名称列表(如 vm-list.txt,每行一个名称)。
2、执行完整脚本:
$vms = Get-Content .\vm-list.txt | ForEach-Object { Get-VM $_ 2>$null }; $vms | ForEach-Object { $bt = $_.ExtensionData.Runtime.BootTime; [PSCustomObject]@{ Name = $_.Name; BootTime = if($bt){$bt.ToString("o")}else{"N/A"} } } | Export-Csv .\uptime-report.csv -NoTypeInformation
该脚本自动跳过不存在或权限不足的虚拟机,输出 ISO 8601 格式时间戳(含时区),便于后续排序与比对。
在 Linux 虚拟机内部查看 uptime
当可直接登录虚拟机操作系统时,内核级 uptime 命令最权威,不受 VMware Tools 状态影响,但仅反映该 Guest OS 自身连续运行时长。
第一步:确认已通过 SSH 或控制台登录到目标 Linux 虚拟机
第二步:执行 uptime 命令
终端立即返回类似 17:56:22 up 12 days, 4:33, 2 users, load average: 0.15, 0.09, 0.05 的结果,其中 up 12 days, 4:33 即为该系统自上次重启以来的精确运行时长(精度到分钟)。
第三步:如需秒级精度,改用 cat /proc/uptime —— 返回两个浮点数,第一个是系统已运行总秒数(含小数),例如 1048223.45 表示约 12.13 天;该数值由内核持续累加,断电也不会重置计数器(除非重启)。
注意:/proc/uptime 的值在虚拟机休眠(Suspend to Memory)后会暂停计数,但恢复后继续累加;而 vSphere 显示的 bootTime 在休眠期间仍保持原值不变。
在 Windows 虚拟机内部验证 LastBootUpTime
Windows Guest OS 内部记录的启动时间与 vSphere 所见 bootTime 应一致(误差在 1–2 秒内),可用于交叉校验 VMware Tools 数据可靠性。
方法一:PowerShell 一行命令验证
以普通用户身份在虚拟机内打开 PowerShell,输入:(Get-CimInstance Win32_OperatingSystem).LastBootUpTime | Get-Date,回车后直接输出人类可读的本地时间,例如 2026年10月16日 8:22:15。
方法二:命令提示符快速比对
1、按下 Win + R,输入 cmd 回车。
2、执行:systeminfo | findstr "系统启动时间"(中文系统)或 systeminfo | findstr "System Boot Time"(英文系统)。
3、输出结果中的时间应与上一步 PowerShell 结果基本一致——【若两者相差超过 5 秒,说明 VMware Tools 时间同步异常或 Guest OS 时钟漂移严重】。











