Вы хотите получить готовое решение для определения времени безотказной работы вашей машины с момента последнего гибридного выключения / быстрого запуска, верно?
Вы можете получить эту информацию (предоставленную @allquixotic) из EventLog, используя PowerShell следующим образом:
PS c:\> Write-Host $("{0:c}" -f ((Get-Date)- (Get-EventLog -LogName system -Source "Microsoft-Windows-Power-Troubleshooter" -Newest 1).TimeGenerated))
Чтобы встроить команду powershell в сценарий оболочки Windows, вы можете сделать следующее:
c:\> powershell.exe -nologo -command Write-Host $('Time since last ''Fast Startup'': {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source \"Microsoft-Windows-Power-Troubleshooter\" -Newest 1).TimeGenerated))
Однако, чтобы заставить это работать из коробки, вы можете вместо этого установить его в постоянную переменную среды:
c:\> setx HardwareUptime "powershell.exe -nologo -command Write-Host $('Uptime since last ''Fast Startup'': {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source 'Microsoft-Windows-Power-Troubleshooter' -Newest 1).TimeGenerated))"
Итак, вы можете заставить его работать, открыв окно cmd
и выполнив:
c:\> %HardwareUpTime%
ОБНОВИТЬ:
Сегодня я обнаружил, что при использовании вышеуказанной записи в журнале событий также будет учитываться "спящий режим" или "режим ожидания", поэтому запуск %HardwareUpTime%
сообщит вам о времени, прошедшем с тех пор, как ПК возобновил режим сна, если вы позволите ему это сделать.
Поэтому вот оно:
setx HardwareUptime "powershell.exe -nologo -command Write-Host $('Uptime since hardware boot: {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -InstanceId 27 -Newest 1).TimeGenerated)); Write-Host $('Uptime since system resumed: {0:c}' -f ((Get-Date)- (Get-EventLog -LogName system -Source 'Microsoft-Windows-Power-Troubleshooter' -Newest 1).TimeGenerated));"
Я немного изменил команду, чтобы она была более понятной и дала вам обе части информации:
Прошедшее время с момента загрузки Windows (после гибридного выключения, полного выключения или простой перезагрузки или спящего режима).
Прошедшее время с момента возобновления выполнения Windows (после возврата из спящего режима).
ПРИМЕЧАНИЕ. Если система не находилась в режиме ожидания, оба раза будут одинаковыми.