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 wmic
ou talvez cmd
comandos.
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 wmic
ou talvez cmd
comandos.
Respostas:
systeminfo
comando 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:
systeminfo
está localizado. O mesmo "Boot Time"
se aplica às versões em inglês do Windows.
systeminfo | find /i "Systemstartzeit"
para alemão
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 systeminfo
alternativa enquanto formata a data (o que wmic
nã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 statistics
comando 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):
(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.
wmic
o Gerenciador de Tarefas e systeminfo
todos 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.
Existe a LastBootUpTime
propriedade da Win32_OperatingSystem
classe. 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 CSName
ou outro PSComputerName
, o que parece funcionar para mim.
20121217175810.414696+120
Acho que preciso de uma boa calculadora para calcular o tempo #
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/…
Observe que, como apontado por Alex, o /sleepstudy
comando 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.html
em 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)
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
set BOOTTIME
funciona.
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
Em uma pergunta semelhante ao ServerFault , pesquise / filtre o log de eventos do sistema Windows para obter a identificação de evento 6009
.
No Windows 10: Event Viewer > Windows Logs > System
e depois na Filter Current Log...
Ação.
Você pode usar o PowerShell para isso.
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
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
Algumas respostas mencionam net statistics workstation
e 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:00
para 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 workstation
e 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 more
para evitar a rolagem para cima e ver o tempo de inicialização. Portanto, meu comando padrão é:
net stats workstation | more
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.
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.