¿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 wmic
o tal vez cmd
comandos.
¿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 wmic
o tal vez cmd
comandos.
Respuestas:
systeminfo
comando 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:
systeminfo
está localizado. Por "Boot Time"
lo tanto, solo es cierto para las versiones en inglés de Windows.
systeminfo | find /i "Systemstartzeit"
para alemán
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 systeminfo
alternativa al formatear la fecha (que wmic
no 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 statistics
comando 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):
(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.
wmic
, el Administrador de tareas, y systeminfo
todos 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.
Ahí está la LastBootUpTime
propiedad de la Win32_OperatingSystem
clase. 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 CSName
o PSComputerName
, lo que parece funcionar para mí.
20121217175810.414696+120
Creo que necesito una calculadora muy buena para calcular el tiempo
CIM_DATETIME
formato 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/…
Tenga en cuenta que, como señaló Alex, el /sleepstudy
comando 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.html
en 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)
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
set BOOTTIME
funciona.
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
Desde una pregunta similar de ServerFault , busque / filtre el Registro de eventos del sistema de Windows para la ID del evento 6009
.
En Windows 10: Event Viewer > Windows Logs > System
y luego la Filter Current Log...
Acción.
Puede usar PowerShell para esto.
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
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
Un par de respuestas menciona net statistics workstation
y 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:00
para la fecha cuando se usa server
. Así que por defecto lo haré workstation
.
También puede abreviar algunos de los comandos como net stats workstation
y 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 more
evitar desplazarse hacia arriba para ver el tiempo de arranque. Por lo tanto, mi comando predeterminado es:
net stats workstation | more
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.
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.