¿Cómo puedo saber cuándo se reinició Windows por última vez?


105

¿Cómo puedo saber cuándo mi computadora con Windows 7 se reinició por última vez?

Prefiero una solución que no implique buscar en el registro de eventos, sino algo como wmico tal vez cmdcomandos.

Respuestas:


164

systeminfocomando es casi correcto lo que necesita. En inglés Windows 7 también puedes hacer:

systeminfo | find /i "Boot Time"

O con la ayuda de WMIC :

wmic os get lastbootuptime

La principal diferencia entre Windows 7 y Windows XP es que en Windows 7 Microsoft solo puede mostrar el último tiempo de arranque.


También en el Administrador de tareas:

ingrese la descripción de la imagen aquí


Además, ¿hay alguna lista acumulativa del último reinicio s ?
Royi Namir

2
@RoyiNamir: con una lista de reinicios en Google (se ve muy similar):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk

Es PowerShell .....?
Royi Namir

3
Tenga en cuenta que systeminfoestá localizado. Por "Boot Time"lo tanto, solo es cierto para las versiones en inglés de Windows.
Markus Mitterauer

1
systeminfo | find /i "Systemstartzeit"para alemán
schoetbi

24

Otra forma de hacerlo es usar la siguiente línea de comandos que funciona tanto en Windows XP como en Windows 7:

net statistics workstation

Tiene la ventaja de ser más rápido que la systeminfoalternativa al formatear la fecha (que wmicno lo hace). También obtiene algunas otras informaciones que pueden ser útiles si realmente está utilizando este comando para depurar una computadora (dado que lo solicita específicamente cmd, supongo que no lo está haciendo programáticamente).

Puede encontrar más información sobre el net statisticscomando aquí: http://technet.microsoft.com/en-us/library/bb490714.aspx

Aquí hay un ejemplo del resultado (usando una copia en francés de Windows 7 Pro SP1 x64, el idioma del usuario no importa mucho para la línea de comandos):

ejemplo

(el nombre de la computadora está borroso a propósito)


Más detalles en http://en.wikipedia.org/wiki/Uptime sobre la precisión al determinar el tiempo de actividad del sistema.


Nota importante : este método determina cuándo se inició el equipo por última vez, no su tiempo de actividad. Los 2 números serán diferentes si usa dormir / hibernar.


alguna idea de por qué esto no dice lo mismo que usar systeminfo o wmic ... probablemente sea insignificante, pero difiere en mi sistema en más de 2 minutos
Anthony Shaw

También difiere durante unos 40 segundos en mi computadora. No tengo idea de por qué no es exactamente lo mismo, supongo que el servicio solo arranca un poco más tarde. Alguna información interesante en en.wikipedia.org/wiki/Uptime
dnLL

2
Difiere en más de nueve meses en el mío :-) Esta es la única respuesta correcta. Proporciona el sello de fecha real del último arranque (o cuando cualquier servicio asociado se inició después del arranque, muy cerca de él), mientras que wmic, el Administrador de tareas, y systeminfotodos parecen contar hacia atrás desde la hora actual por la cantidad de tics que la PC ha estado corriendo. Pero si pone su computadora en reposo (o hiberna) mucho, como lo hago yo, el tiempo de ejecución total real es mucho menor que el tiempo desde el último arranque (solo treinta días en mi caso en los últimos meses) ese cálculo por completo.
Cameron

Gracias @cameron, agregué una nota al final de mi respuesta. La pregunta original era realmente sobre cuándo se inició la computadora y no su tiempo de actividad, por lo que es un detalle importante. Wikipedia menciona algo la diferencia en el artículo de tiempo de actividad que vinculé.
dnLL

Ese no es realmente el último momento de "arranque": es el momento en que se inició el servicio Servidor o Estación de trabajo, dependiendo de cuál sea la consulta de las estadísticas. Dado que estos nunca se detienen durante una sesión normal de Windows, es una aproximación conveniente del último tiempo de arranque.
oldmud0

18

Ahí está la LastBootUpTimepropiedad de la Win32_OperatingSystemclase. Puede usar WMIC con este comando:

wmic os get lastbootuptime

O si usa Powershell, puede convertir la hora en algo más legible que ese molesto formato de fecha y hora de WMI:

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

Tenga en cuenta que en versiones posteriores de PowerShell, también puede usar Get-CimInstance, que devolverá automáticamente el valor como una fecha y hora:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

Lo único irritante es que Get-CimInstance a veces cambia el nombre de algunos campos del sistema de objetos WMI, como __SERVER aquí. Tendrías que usar cualquiera CSNameo PSComputerName, lo que parece funcionar para mí.


20121217175810.414696+120Creo que necesito una calculadora muy buena para calcular el tiempo
Royi Namir

77
@Royi Sí, las marcas de tiempo de WMI son estúpidas. Es un CIM_DATETIMEformato requerido por el estándar. Es yyyymmddHHMMSS.mmmmmmsUUU, usando 24 horas. Aquí, su último tiempo de reinicio es el 17 de diciembre de 2012 a las 5:58 p.m. msdn.microsoft.com/en-us/library/windows/desktop/…
Bacon Bits

1
La ventaja adicional de usar el método get-wmiobject es que también es trivial obtener tiempos de arranque de computadoras remotas. Simplemente agregue "-computer <computername>" al comando (antes de la canalización)
camster342

8

Para usuarios de Windows 10 por ahí ...

Propiedades del sistema Windows 10 - Tiempo de rendimiento


1
Esto le muestra el tiempo de actividad (es decir, cuánto tiempo está funcionando el sistema), no la hora en que se inició el sistema como lo solicitó OP.
Dawid Ferenczy Rogožan

1
Es cierto, pero esto sigue siendo útil.
tbc0

Hoy mi portátil con Windows 10 muestra un tiempo de actividad falso. Lo apagué anoche, lo encendí hace menos de una hora, y el Administrador de tareas dice que ha estado funcionando por 5: 19: 40: 10.
confirmar el

Windows 10 en realidad no se apaga cuando se apaga, olvido por qué exactamente. Sin embargo, si desea que el temporizador de tiempo de actividad se reinicie, debe reiniciar.
Daniel Hayes

3

Tenga en cuenta que, como señaló Alex, el /sleepstudycomando no se agregó hasta Windows 8.1. / systempowerreport podría funcionar en su lugar.

Tenga en cuenta que algunas de estas otras respuestas nunca funcionaron para mí, como buscar en el registro de eventos, por ejemplo, siempre me faltaban algunas entradas. La respuesta de @ Florisz también es correcta en ese sentido. Aquí está mi solución:

En un shell de cmd de administrador, ejecute el siguiente comando:

powercfg /sleepstudy /output sleepstudy.html

Luego abra el archivo sleepstudy.htmlen un navegador. Serás recibido con estadísticas increíblemente organizadas sobre apagado / reinicio / espera / hibernación de los últimos tres días . (entonces, corre periódicamente si lo necesitas)

Un ejemplo de una salida: (AFAIR, Showdown (Hybrid)significa inicio rápido)

ingrese la descripción de la imagen aquí

Fuente / Documentación | También relacionado


1
¡Esto es lo que estaba buscando en Windows 10! No reinicio, normalmente apago. LastBootTime solo se refiere a reinicios en Windows 10.
tbc0

2

En Windows 7 prefiero

net statistics workstation

WMIC no tiene en cuenta el tiempo de sueño, y dejo mi estación de trabajo encerrada en el trabajo durmiendo durante la semana, lista para despertarme al día siguiente.


2

Otra forma más en un archivo por lotes para obtener tiempo de arranque con wmic pero en forma legible 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%

salida:

DTS: 20170308073729.491206 + 060

BOOTTIME: 2017-03-08 07:37


1
Esta respuesta sería mejor si incluyera una explicación de cómo set BOOTTIMEfunciona.
un CVn

2

Para obtenerlo en 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
        }
    }

Aquí está el resultado:

CSname  LastBootUpTime
------  --------------
LAPTOP1 2018-09-07 08:57:02

1

En casi cualquier versión de Windows puede verificar la marca de tiempo en el archivo de intercambio.

dir /a:hc:\pagefile.sys


1
No lo creo. Al menos en Windows 10, cuando verifiqué, el tiempo del archivo de intercambio era más nuevo que el tiempo de arranque.
tbc0


1

Puede usar PowerShell para esto.

Apagar


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

Esto le dará una lista de los tiempos de apagado registrados.

Comando alternativo, mejor optimizado para conexiones remotas:

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

Salida de ejemplo:

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

Puesta en marcha


El siguiente comando le dará una lista de los tiempos de inicio registrados.

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

Comando alternativo, mejor optimizado para conexiones remotas:

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

Salida de ejemplo:

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

He probado esto en PowerShell 5.1 y Windows 10.0.15063. Pero también debería funcionar en Windows 7, siempre que tenga al menos PowerShell 3.0. Tenga en cuenta que debe ejecutarlo como administrador.

Encontrará la documentación completa para el comando aquí: docs.microsoft.com


No funcionó para mí en Windows 10. Ni siquiera como administrador. Ver snag.gy/HcEn8j.jpg
tbc0

1

Un par de respuestas menciona net statistics workstationy he notado que ambas:

net statistics server

y

net statistics workstation

debería proporcionar datos sobre el último arranque en la Statistics since ...línea.

Sin embargo, algunas versiones del sistema operativo (como Svr2008 / 6.0) volverán 1/1/1980 12:00para la fecha cuando se usa server. Así que por defecto lo haré workstation.

También puede abreviar algunos de los comandos como net stats workstationy obtener los mismos resultados. Finalmente, si salta de un sistema a otro, el cuadro CMD predeterminado no es lo suficientemente grande como para mostrar todos los resultados del comando. Así que canalizaré la salida para moreevitar desplazarse hacia arriba para ver el tiempo de arranque. Por lo tanto, mi comando predeterminado es:

net stats workstation | more

mando


1

Quiero agregar, que todos estos comandos realmente le dan las marcas de tiempo cuando se realiza un 'reinicio' o 'reinicio'. Y no cuando se cierra y se inicia. Después del apagado e inicio, el 'último tiempo de arranque' reflejará el tiempo en que el sistema realmente se 'reinicia' y no el tiempo real de arranque. Por lo tanto, el apagado / inicio da el mismo resultado que volver de suspender / hybernnate para la marca de tiempo LastBootUpTime.


0

Igual que Max responde ...

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%

... pero en línea:

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 implementación de wmi puede parecer un poco desordenada, pero es muy rápida en comparación con otras implementaciones de powershell o systeminfo y puede cambiar fácilmente el formato, ya que está explícito en el código.

Gracias Max.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.