Você deseja obter uma solução pronta para uso para descobrir o tempo de atividade da sua máquina desde o último desligamento híbrido / inicialização rápida, certo?
Você pode obter essas informações (conforme fornecido por @allquixotic) no EventLog usando o PowerShell assim:
PS c:\> Write-Host $("{0:c}" -f ((Get-Date)- (Get-EventLog -LogName system -Source "Microsoft-Windows-Power-Troubleshooter" -Newest 1).TimeGenerated))
Para incorporar o comando powershell em um script de shell do Windows, faça o seguinte:
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))
Portanto, para que isso funcione imediatamente, você pode configurá-lo em uma variável de ambiente permanente como esta:
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))"
então, você pode fazê-lo funcionar, abrindo uma cmd
janela e fazendo:
c:\> %HardwareUpTime%
ATUALIZAR:
Acabei de descobrir hoje que o uso da entrada acima no log de eventos também levará em consideração o modo "Suspensão" ou suspensão, portanto, a execução %HardwareUpTime%
informará o tempo decorrido desde que o PC retomou o modo de suspensão, se você permitir.
Portanto, aqui está:
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));"
Modifiquei o comando um pouco para ser mais explícito e fornecer as duas informações:
Tempo decorrido desde a inicialização do Windows (após um desligamento híbrido, desligamento total ou reinicialização simples ou hibernação).
Tempo decorrido desde que o Windows retomou a execução (após retornar do modo de suspensão).
OBSERVAÇÃO: Se o sistema não tiver sido interrompido, os dois horários serão os mesmos.