Como posso saber quando o Windows foi reiniciado pela última vez?

103

Como posso saber quando meu computador executando o Windows 7 foi reiniciado pela última vez?

Eu prefiro uma solução que não envolva a pesquisa no log de eventos, mas algo como wmic ou talvez cmd de comandos.

    
por Royi Namir 24.12.2012 / 15:24

14 respostas

162
O comando

systeminfo está quase certo do que você precisa. No inglês Windows 7, você também pode fazer:

systeminfo | find /i "Boot Time"

Ou com a ajuda de WMIC :

wmic os get lastbootuptime

A principal diferença entre o Windows 7 e o Windows XP é que no Windows 7 a Microsoft pode mostrar apenas o último tempo de inicialização.

Também no Gerenciador de Tarefas:

    
por 24.12.2012 / 15:32
23

Uma outra maneira de fazer isso é usar a seguinte linha de comando que funciona no Windows XP e no Windows 7:

net statistics workstation

Tem a vantagem de ser mais rápido que a alternativa systeminfo ao formatar a data (que wmic não possui). Você também recebe algumas outras informações que podem ser úteis se você estiver realmente usando este comando para depurar um computador (já que você está pedindo especificamente por cmd , estou assumindo que você não está fazendo isso programaticamente).

Você pode encontrar mais informações sobre o comando net statistics aqui: link

Aqui está um exemplo do resultado (usando uma cópia em francês do Windows 7 Pro SP1 x64, a linguagem de usuário não importa muito para a linha de comando):

(onomedocomputadorépropositadamentedesfocado)

Maisdetalhesno link sobre a precisão ao determinar o tempo de atividade do sistema.

Nota importante : este método determina quando o computador foi inicializado pela última vez, não o seu tempo de atividade. Os 2 números serão diferentes se você usar sleep / hibernar.

    
por 09.12.2014 / 16:34
18

Existe a propriedade LastBootUpTime da classe Win32_OperatingSystem . Você pode usar o WMIC com este comando:

wmic os get lastbootuptime

Ou, se você usar o Powershell, poderá converter a hora em algo mais legível do que o formato de data e hora WMI irritante:

Get-WmiObject -class Win32_OperatingSystem | Select-Object  __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}

Observe que, em versões posteriores do PowerShell, você também pode usar Get-CimInstance, que retornará automaticamente o valor como um datetime:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

A única coisa irritante é que o Get-CimInstance às vezes altera o nome de alguns campos do sistema de objetos WMI, como __SERVER aqui. Você teria que usar CSName ou PSComputerName , o que parece funcionar para mim.

    
por 24.12.2012 / 15:41
8

Para usuários do Windows 10 por aí ....

    
por 28.03.2017 / 15:19
2

No Windows 7, prefiro

net statistics workstation

O WMIC não leva em conta o tempo de sono e eu deixo meu local de trabalho trancado no trabalho dormindo durante a semana, pronto para acordar no dia seguinte.

    
por 08.07.2015 / 22:41
2

ainda outra maneira em um arquivo de lote para obter o tempo de inicialização com o wmic, mas em formato legível:

for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%  %DTS:~8,2%:%DTS:~10,2%
echo DTS      : %DTS%
echo BOOTTIME :%BOOTTIME%

saída:

DTS: 20170308073729.491206 + 060

BOOTTIME: 2017-03-08 07:37

    
por 24.05.2016 / 22:46
2

Por favor, note que, como apontado por Alex , o comando /sleepstudy não foi adicionado até o Windows 8.1 . / systempowerreport pode funcionar em vez disso.

Observe que algumas dessas outras respostas nunca funcionaram para mim, como pesquisar o log de eventos, por exemplo, sempre faltando algumas entradas. A resposta de @ Florisz também está correta a esse respeito. Aqui está a minha solução:

Em um cmd shell de administrador, execute o seguinte comando:

powercfg /sleepstudy /output sleepstudy.html

Em seguida, abra o arquivo sleepstudy.html em um navegador. Você será saudado com estatísticas incrivelmente organizadas sobre shutdown / reboot / standby / hibernation nos últimos três dias . (então, corra periodicamente se precisar)

Um exemplo de uma saída: (AFAIR, Showdown (Hybrid) significa inicialização rápida)

Origem / documentação | Também relacionado

    
por 21.08.2018 / 09:51
1

Em praticamente qualquer versão do Windows você pode verificar o timestamp no arquivo swap.

dir / a: h c: \ pagefile.sys

    
por 25.07.2016 / 17:12
1

De uma pergunta ServerFault semelhante , pesquisa / filtrar o log de eventos do sistema Windows para identificação de evento 6009 .

No Windows 10:. Event Viewer > Windows Logs > System e, em seguida, o Filter Current Log... Action

    
por 17.07.2017 / 20:08
1

Eu quero adicionar, que todos esses comandos realmente dão a você os timestamps quando um 'restart' ou 'reboot' é feito. E não quando um desligamento e partida é feito. Após o desligamento e iniciar o 'lastbootuptime' irá refletir o tempo que o sistema é realmente 'reiniciado' e não o tempo de inicialização real. Então, shutdown / start dá o mesmo resultado que retornar do suspend / hybernnate para o timestamp LastBootUpTime.

    
por 17.08.2018 / 13:38
1

Para obtê-lo no PowerShell:

Function Get-LastBoot {
        if ($Host.Version.Major -lt 3) {
            Get-WmiObject win32_operatingsystem | Select-Object CSname, @{n = 'LastBootUpTime'; e = {$_.ConverttoDateTime($_.lastbootuptime)}}
        }
        else {
            Get-CimInstance -ClassName win32_operatingsystem | Select-Object CSname, LastBootUpTime
        }
    }

Aqui está o resultado:

CSname  LastBootUpTime
------  --------------
LAPTOP1 2018-09-07 08:57:02
    
por 12.09.2018 / 16:34
0

O mesmo que a resposta máxima ...

for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%  %DTS:~8,2%:%DTS:~10,2%
echo DTS      : %DTS%
echo BOOTTIME :%BOOTTIME%

... mas no oneliner:

for /f %a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%a && echo %DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%

Esta implementação wmi pode parecer um pouco confusa, mas é muito rápida em comparação com outras implementações PowerShell ou SystemInfo, e você pode alterar facilmente o formato, já que é explícito no código.

Obrigado Max.

    
por 21.02.2019 / 17:36
0

Você pode usar o PowerShell para isso.

Encerramento

Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }

Isso lhe dará uma lista de tempos de desligamento registrados.

Comando alternativo, melhor otimizado para conexões remotas:

Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }

Exemplo de saída:

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
2017-01-28 18:25:46            200 Critical         Windows has shutdown
2016-11-01 19:55:21            200 Error            Windows has shutdown
2016-10-29 00:18:38            200 Critical         Windows has shutdown
2016-10-26 23:16:55            200 Warning          Windows has shutdown
2016-10-26 15:37:40            200 Warning          Windows has shutdown
2016-10-26 02:18:24            200 Warning          Windows has shutdown
2016-10-26 02:10:34            200 Warning          Windows has shutdown
2016-10-26 02:04:01            200 Warning          Windows has shutdown
2016-10-25 14:23:11            200 Warning          Windows has shutdown
2016-10-25 13:07:46            200 Error            Windows has shutdown
2016-10-25 00:18:12            200 Error            Windows has shutdown
2016-10-19 13:16:39            200 Critical         Windows has shutdown

Inicialização

O seguinte comando lhe dará uma lista de tempos de inicialização registrados.

Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}

Comando alternativo, melhor otimizado para conexões remotas:

Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }

Exemplo de saída:

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
2017-10-07 21:35:38            100 Critical         Windows has started up
2017-01-28 18:25:48            100 Critical         Windows has started up
2016-12-11 17:45:07            100 Critical         Windows has started up
2016-11-16 13:26:52            100 Critical         Windows has started up
2016-11-01 19:55:21            100 Critical         Windows has started up
2016-10-29 00:18:39            100 Critical         Windows has started up
2016-10-26 23:16:55            100 Error            Windows has started up
2016-10-26 14:51:07            100 Error            Windows has started up
2016-10-26 02:24:01            100 Error            Windows has started up
2016-10-26 02:18:24            100 Critical         Windows has started up
2016-10-26 02:10:34            100 Error            Windows has started up
2016-10-26 02:04:01            100 Critical         Windows has started up
2016-10-25 14:23:12            100 Error            Windows has started up
2016-10-25 13:07:47            100 Error            Windows has started up
2016-10-25 12:56:23            100 Error            Windows has started up
2016-10-19 13:16:39            100 Critical         Windows has started up

Eu testei isso no PowerShell 5.1 e no Windows 10.0.15063. Mas também deve funcionar no Windows 7, contanto que você tenha pelo menos o PowerShell 3.0. Note que você precisa executá-lo como administrador.

Você encontrará a documentação completa do comando aqui: docs.microsoft.com

    
por 07.10.2017 / 21:32
0

Algumas respostas mencionam net statistics workstation e notei que ambos:

net statistics server

e

net statistics workstation

deve fornecer dados sobre a última inicialização na linha Statistics since ... .

No entanto, algumas versões do sistema operacional (como Svr2008 / 6.0) retornarão 1/1/1980 12:00 para a data em que usar server . Então, vou usar como padrão workstation .

Além disso, você pode abreviar alguns dos comandos como net stats workstation e obter os mesmos resultados. Finalmente, se você pular de um sistema para outro, a caixa CMD padrão não é grande o suficiente para mostrar todos os resultados do comando. Então, vou canalizar a saída para more para evitar a rolagem para cima para ver o tempo de inicialização. Portanto, meu comando padrão é:

net stats workstation | more

    
por 23.05.2018 / 18:10