2012-12-24 14:24:07 +0000 2012-12-24 14:24:07 +0000
112
112

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

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

Prefiro uma solução que não envolva a pesquisa no registo de eventos, mas algo como os comandos wmic ou talvez cmd.

Respostas (14)

173
173
173
2012-12-24 14:32:31 +0000

systeminfo comando é quase certo o que você precisa. No Windows 7 inglês 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 arranque.

  • *

Também no Task Manager:

25
25
25
2014-12-09 15:34:46 +0000

Uma outra forma de o fazer é utilizar a seguinte linha de comandos que funciona tanto no Windows XP como no Windows 7:

net statistics workstation

Tem a vantagem de ser mais rápido do que a alternativa systeminfo, ao formatar a data (o que wmic não faz). Também obtém algumas outras informações que podem ser úteis se estiver a utilizar este comando para depurar um computador (já que está a pedir especificamente o cmd, presumo que não está a fazer este programa).

Pode encontrar mais informações sobre o comando net statistics aqui: http://technet.microsoft.com/en-us/library/bb490714.aspx

Aqui está um exemplo do resultado (utilizando uma cópia francesa do Windows 7 Pro SP1 x64, a linguagem do utilizador não importa muito para a linha de comando):

(o nome do computador está propositadamente desfocado)

  • *

Mais detalhes em http://en. wikipedia.org/wiki/Uptime sobre a precisão ao determinar o tempo de funcionamento do sistema.


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

19
19
19
2012-12-24 14:41:41 +0000

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

wmic os get lastbootuptime

Ou se você usar Powershell, você pode converter a hora para algo mais legível do que aquele irritante formato de data/hora da WMI:

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

Note que em versões posteriores do PowerShell, também pode usar o Get-CimInstance, que retornará automaticamente o valor como datatime:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

A única coisa irritante é que o Get-CimInstance irá por vezes alterar o nome de alguns campos do sistema a partir de objectos WMI, tais como _SERVER aqui. Teria de usar ou CSName ou PSComputerName, o que parece funcionar para mim.

9
9
9
2017-03-28 13:19:57 +0000
4
4
4
2018-08-21 07:51:22 +0000

Por favor note que, como assinalado por Alex o comando /sleepstudy não foi adicionado até ao Windows 8.1. O /systempowerreport pode funcionar.

Note que algumas destas outras respostas nunca funcionaram para mim, como pesquisar o registo de eventos, por exemplo, estava sempre a faltar algumas entradas. A resposta de @Florisz também é correcta a esse respeito. Aqui está a minha solução:

Numa shell cmd de administrador, corra o seguinte comando:

powercfg /sleepstudy /output sleepstudy.html

Depois abra o ficheiro sleepstudy.html num browser. Será recebido com estatísticas surpreendentemente organizadas sobre encerramento/reboot/standby/hibernação a partir dos lastos três dias*. (portanto, corra periodicamente se precisar)

Um exemplo de uma saída: (AFAIR, Showdown (Hybrid) significa arranque rápido)

Fonte / Documentação | Também relacionado

2
2
2
2016-05-24 20:46:59 +0000

mais uma forma de obter o tempo de arranque com wmic mas em forma legível humana :

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

2
2
2
2017-10-07 19:32:19 +0000

Pode usar o PowerShell para isto.

Shutdown


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

Isto dar-lhe-á uma lista de tempos de paragem registados.

Comando alternativo, melhor optimizado para ligaçõ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

Arranque


O seguinte comando dar-lhe-á uma lista de tempos de arranque registados.

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

Comando alternativo, melhor optimizado para ligações remotas:

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

Saída de exemplo:

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

Testei este comando no PowerShell 5.1 e no Windows 10.0.15063. Mas também deve funcionar no Windows 7, desde que tenha pelo menos o PowerShell 3.0. Note que precisa de o correr como administrador.

Encontrará a documentação completa para o comando aqui docs.microsoft.com

2
2
2
2016-07-25 15:12:29 +0000

Em praticamente qualquer versão do windows pode verificar o carimbo da hora no ficheiro swap.

dir /a:h c:\pagefile.sys

2
2
2
2015-07-08 20:41:51 +0000

No Windows 7 prefiro

net statistics workstation

WMIC não tem em conta o tempo de sono, e deixo a minha estação de trabalho fechada no trabalho a dormir durante a semana, pronta para acordar no dia seguinte.

2
2
2
2018-09-12 14:34:05 +0000

Para obtê-lo em 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
1
1
1
2018-08-17 11:38:18 +0000

Quero acrescentar que todos estes comandos lhe dão realmente os carimbos temporais quando é feito um “reinício” ou “reboot”. E não quando se fecha e arranca. Depois de desligar e iniciar o ‘lastbootuptime’ irá reflectir o tempo em que o sistema é realmente ‘reiniciado’ e não o tempo real de arranque. Assim, o desligamento/desligamento dá o mesmo resultado que o regresso da suspensão/hibernação para o timestamp do LastBootUpTime.

1
1
1
2018-05-23 16:10:40 +0000

Algumas respostas mencionam net statistics workstation e notei que ambas:

net statistics server
net statistics workstation

devem fornecer dados relativos ao último arranque na linha Statistics since ....

No entanto, algumas versões de SO (como Svr2008/6.0) devolverão 1/1/1980 12:00 para a data de utilização de server. Por isso, por defeito, vou para workstation.

Também pode abreviar alguns dos comandos como o net stats workstation e obter os mesmos resultados. Finalmente, se saltar de sistema para sistema, a caixa CMD por defeito não é suficientemente grande para mostrar todos os resultados do comando. Por isso vou canalizar a saída para more* para evitar a rolagem para cima para ver o tempo de arranque. Portanto, o meu comando por omissão é:

net stats workstation | more

1
1
1
2017-07-17 18:08:00 +0000

A partir de uma pergunta semelhante do ServerFault ](https://serverfault.com/a/159616/50236), procure/filtre o Log de Eventos do Sistema Windows para o Event ID 6009.

No Windows 10: Event Viewer > Windows Logs > System e depois a Acção Filter Current Log....

0
0
0
2019-02-21 16:36:38 +0000

O mesmo que a resposta Max…

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 em 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 de Powerhell ou Systeminfo e pode facilmente alterar o formato, uma vez que está explícito no código.

Obrigado Max.