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


105

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

Prefiro uma solução que não envolva a pesquisa no log de eventos, mas algo como wmicou talvez cmdcomandos.

Respostas:


164

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

systeminfo | find /i "Boot Time"

Ou com a ajuda do 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:

insira a descrição da imagem aqui


Além disso, existe alguma lista acumulativa dos últimos reset s ?
Royi Namir

2
@RoyiNamir: Com algum googling lista de reboots (parece muito similar):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk

é powerhell .....?
Royi Namir

3
Esteja ciente de que systeminfoestá localizado. O mesmo "Boot Time"se aplica às versões em inglês do Windows.
Markus Mitterauer

1
systeminfo | find /i "Systemstartzeit"para alemão
schoetbi

24

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 systeminfoalternativa enquanto formata a data (o que wmicnão ocorre). Você também recebe algumas outras informações que podem ser úteis se você estiver realmente usando este comando para depurar um computador (desde que você está solicitando especificamente cmd, presumo que você não esteja fazendo isso programaticamente).

Você pode encontrar mais informações sobre o net statisticscomando aqui: http://technet.microsoft.com/en-us/library/bb490714.aspx

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

exemplo

(o nome do computador é propositadamente desfocado)


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


Nota importante : esse método determina quando o computador foi inicializado pela última vez, e não o tempo de atividade. Os 2 números serão diferentes se você usar suspensão / hibernação.


alguma idéia de por que isso não lê o mesmo que usar systeminfo ou wmic ... é provavelmente insignificante, mas difere no meu sistema por mais de dois minutos
Anthony Shaw

Também difere por cerca de 40 segundos no meu computador. Eu não tenho nenhuma idéia de por que não é exatamente o mesmo, acho que o serviço é inicializado um pouco mais tarde. Algumas informações interessantes em en.wikipedia.org/wiki/Uptime
dnLL

2
Difere em mais de nove meses no meu :-) Esta é a única resposta correta. Ele fornece o carimbo de dados real da última inicialização (ou quando qualquer serviço associado foi iniciado após a inicialização, muito próximo a ele), enquanto wmico Gerenciador de Tarefas e systeminfotodos parecem contar de trás para frente a partir do momento atual, pelo número de ticks que o PC sofreu. corrida. Mas se você colocar o computador no modo de suspensão (ou hibernação) muito, como eu, o tempo total real de execução é muito menor que o tempo desde a última inicialização (apenas trinta dias no meu caso nos últimos meses), jogando fora esse cálculo completamente.
Cameron

Obrigado @cameron, adicionei uma nota no final da minha resposta. A pergunta original era realmente sobre quando o computador foi iniciado e não o tempo de atividade, portanto esse é um detalhe importante. A Wikipedia menciona um pouco a diferença no artigo de tempo de atividade que eu vinculei.
dnLL

Essa não é realmente a última hora de "inicialização" - é a hora em que o serviço Servidor ou Estação de Trabalho foi iniciado, dependendo de qual consulta as estatísticas. Como eles nunca param durante uma sessão regular do Windows, é uma aproximação conveniente do último tempo de inicialização.
precisa saber é o seguinte

18

Existe a LastBootUpTimepropriedade da Win32_OperatingSystemclasse. Você pode usar o WMIC com este comando:

wmic os get lastbootuptime

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

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

Observe que nas versões posteriores do PowerShell, você também pode usar Get-CimInstance, que retornará automaticamente o valor como data e hora:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

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


20121217175810.414696+120Acho que preciso de uma boa calculadora para calcular o tempo #
Royi Namir 24/12/12

7
@Royi Sim, os timestamps WMI são estúpidos. É um CIM_DATETIME, que é o formato exigido pelo padrão. É yyyymmddHHMMSS.mmmmmmsUUU, usando o tempo de 24 horas. Aqui, seu último horário de reinicialização é 17 de dezembro de 2012 às 17:58. msdn.microsoft.com/pt-BR/library/windows/desktop/…
Bacon Bits

1
O bônus prático de usar o método get-wmiobject é que torna trivial também obter tempos de inicialização de computadores remotos. Basta adicionar "-computer <computername>" para o comando (antes do tubo)
camster342

8

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

Propriedades do sistema Windows 10 - Performance Up time


1
Isso mostra o tempo de atividade (ou seja, quanto tempo o sistema está funcionando) e não o momento em que o sistema foi iniciado, conforme solicitado pelo OP.
Dawid Ferenczy Rogožan

1
É verdade, mas isso ainda é útil.
tbc0

Hoje, meu notebook com Windows 10 está mostrando um tempo de atividade falso. Desliguei-o ontem à noite, liguei-o há menos de uma hora e o Gerenciador de Tarefas diz que está funcionando há 5: 19: 40: 10.
tbc0

O Windows 10 na verdade não desliga quando desligado, esqueço exatamente o porquê. No entanto, se você deseja que o timer de tempo de atividade seja redefinido, reinicie.
21418 Daniel Hayes

3

Observe que, como apontado por Alex, o /sleepstudycomando não foi adicionado até o Windows 8.1. / systempowerreport pode funcionar.

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

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

powercfg /sleepstudy /output sleepstudy.html

Em seguida, abra o arquivo sleepstudy.htmlem um navegador. Você será recebido com estatísticas incrivelmente organizadas sobre desligamento / reinicialização / espera / hibernação dos últimos três dias . (portanto, execute periodicamente se necessário)

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

insira a descrição da imagem aqui

Fonte / Documentação | Também relacionado


1
Era isso que eu estava procurando no Windows 10! Eu não reinicio, normalmente desligo. LastBootTime só se refere a reinicia no Windows 10.
tbc0

2

No Windows 7 eu prefiro

net statistics workstation

O WMIC não leva em consideração o tempo de sono e deixo minha estação de trabalho trancada no trabalho dormindo durante a semana, pronta para acordar no dia seguinte.


2

ainda outra maneira em um arquivo em lotes para obter tempo de inicialização com o wmic, mas na forma legível por humanos:

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%

resultado :

DTS: 20170308073729.491206 + 060

BOOTTIME: 2017-03-08 07:37


1
Essa resposta seria melhor se incluísse uma explicação de como set BOOTTIMEfunciona.
a CVn 28/03

2

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

1

Em praticamente qualquer versão do Windows, você pode verificar o registro de data e hora no arquivo de troca.

dir /a:hc:\pagefile.sys


1
Acho que não. Pelo menos no Windows 10, quando verifiquei, o tempo de troca do arquivo era mais recente que o tempo de inicialização.
tbc0


1

Você pode usar o PowerShell para isso.

Desligar


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

Isso fornecerá uma lista dos horários 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

Comece


O comando a seguir fornecerá uma lista dos horários 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, desde que você tenha pelo menos o PowerShell 3.0. Observe que você precisa executá-lo como administrador.

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


Não funcionou para mim no Windows 10. Nem como administrador. Veja snag.gy/HcEn8j.jpg
tbc0:

1

Algumas respostas mencionam net statistics workstatione observei que ambas:

net statistics server

e

net statistics workstation

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

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

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

net stats workstation | more

comando


1

Quero acrescentar que todos esses comandos realmente fornecem os carimbos de data e hora quando uma 'reinicialização' ou 'reinicialização' é concluída. E não quando um desligamento e início são feitos. Após o desligamento e o início, o 'lastbootuptime' refletirá a hora em que o sistema realmente foi 'reiniciado' e não o tempo real de inicialização. Portanto, shutdown / start fornece o mesmo resultado que o retorno de suspend / hybernnate para o registro de data e hora LastBootUpTime.


0

Igual à 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%

Essa implementação do wmi pode parecer um pouco confusa, mas é muito rápida em comparação com outras implementações do powershell ou do systeminfo e você pode alterar facilmente o formato, pois está explícito no código.

Obrigado máx.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.