Tiempo de arranque y tiempo de actividad de Windows 10: Perspectivas de PowerShell

El tiempo de actividad de Windows es una medida que muchos administradores de servidores utilizan para solucionar problemas cotidianos que puedan surgir en el entorno. En este artículo, aprenderás cómo verificar el tiempo de arranque en Windows 10 y Windows Server. Eres libre de usar el método que te resulte más fácil. Utiliza este artículo como referencia futura.

El artículo se dividirá en dos partes principales: verificar el tiempo de actividad del servidor y encontrar el tiempo de actividad histórico de Windows. La primera parte se centrará en determinar cuánto tiempo ha estado encendida la computadora desde su último reinicio. En este artículo, esto se llama tiempo de actividad “actual”.

La segunda parte del artículo se centrará en encontrar el tiempo de actividad “histórico”, es decir, cuánto tiempo estuvo encendido un sistema Windows entre múltiples reinicios. Utilizando PowerShell, aprenderás cómo analizar el registro de eventos de Windows para obtener cifras de tiempo de actividad históricas.

Cómo verificar el tiempo de arranque en Windows 10 y Windows Server

Para comenzar, veamos algunas formas diferentes de encontrar el tiempo de actividad actual de Windows.

Verás una demostración de cómo verificar el tiempo de arranque en Windows 10 ejecutando comandos localmente en un sistema Windows a lo largo de esta sección. Pero ten en cuenta que al usar PowerShell Remoting, también puedes realizar estas comprobaciones de forma remota (excepto en el administrador de tareas).

Administrador de tareas

Una de las formas más simples y directas de encontrar el tiempo de actividad es abrir el Administrador de tareas.

Para verificar el tiempo de actividad de Windows con el Administrador de tareas, haz clic derecho en la barra de tareas de Windows y selecciona Administrador de tareas o presiona CtrlShiftEsc. Una vez que el Administrador de tareas esté abierto, haz clic en la pestaña Rendimiento. Bajo la pestaña Rendimiento, verás una etiqueta de Tiempo de actividad.

Finding Windows uptime with task manager

Visor de eventos

El Visor de eventos es muy utilizado por la mayoría de los administradores del sistema de forma regular, lo que lo convierte en una excelente opción para un método no relacionado con la línea de comandos para obtener el tiempo de actividad. Los ID de evento 6005 y 6006 se pueden utilizar para identificar cuándo inicia o se detiene el servicio de registro de eventos, lo que ocurre durante los tiempos de inicio/apagado. Sigue estos pasos para identificar el tiempo de actividad a través del Visor de eventos:

  • Abre el Menú de inicio y busca Visor de eventos, también puedes acceder a él a través de Administración de equipos.
  • En el lado izquierdo, expande la sección Registros de Windows y selecciona Sistema
  • Ahora que estamos consultando solo eventos relacionados con el Sistema, haz clic en “Filtrar registro actual…” en el lado derecho de la ventana
  • En el campo ID de evento (por defecto, esto estará prellenado con texto que dice “Todos los ID de evento”), necesitamos buscar nuestros ID de evento aplicables, escribe “6005, 6006” y luego haz clic en Aceptar

Luego puedes comparar los dos tiempos para crear un tiempo de actividad total. Además, dado que se almacenan muchas instancias de estos eventos, ¡podemos consultar el historial de tiempos de actividad!

Ahora tienes registros de eventos filtrados que te mostrarán no solo la última vez, sino todos los momentos conocidos en los que ha habido un inicio/apagado del sistema.

PowerShell

PowerShell tiene varias formas de obtener el tiempo de actividad. Puede consultar WMI o utilizar el registro de eventos de Windows.

Al consultar WMI, puede hacer una consulta a la clase Win32_OperatingSystem y seleccionar la propiedad LastBootUpTime, como se muestra a continuación.

PS51> Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime

LastBootUpTime      
--------------      
9/25/2019 9:37:37 PM

Para consultar el Registro de eventos mediante PowerShell, utilice el cmdlet Get-WinEvent. Necesitará buscar los IDs de eventos 6005 o 6006 que indican la última vez que se inició la máquina.

PS51> Get-WinEvent -ProviderName EventLog | Where-Object {$_.Id -eq 6005 -or $_.Id -eq 6006} | Select-Object -First 1 TimeCreated

TimeCreated         
-----------         
9/25/2019 9:37:52 PM

WMIC

WMIC proporciona una interfaz de línea de comandos para WMI y es un método probado y verdadero que se ha utilizado durante muchos años. Para consultar el tiempo de actividad a través de WMIC, puede hacer una consulta a la clase Win32_OperatingSystem de WMI, aunque un poco más en profundidad. Como se muestra a continuación, puede utilizar la sintaxis de WMIC os get lastbootuptime para obtener la última vez que se inició el servidor.

> wmic os get lastbootuptime

LastBootUpTime             

20190925213737.500000-240

No es necesario descargar nada para aprovechar WMIC, ya que viene preinstalado con Windows.

Utilidad de Información del Sistema

El comando systeminfo muestra información detallada de configuración sobre una computadora y se puede utilizar para consultar el tiempo de actividad del sistema. Mediante el herramienta de línea de comandos find incorporada, puede analizar el texto para recuperar los datos que necesita.

Simplemente abra el Símbolo del sistema o PowerShell y escriba systeminfo | find.

> systeminfo | find "System Boot Time:"

System Boot Time:          9/25/2019, 9:37:37 PM

No es necesario descargar nada para aprovechar systeminfo, ya que viene preinstalado con Windows.

Comando Estadísticas de Red

También puedes consultar rápidamente el tiempo de actividad a través de Estadísticas de Red o más comúnmente conocido como net stats. El comando net stats devuelve información general sobre tu sesión. Puedes ver debajo de la línea Estadísticas desde…. Esta fecha indica cuándo se inició la máquina.

> net stats srv

Workstation Statistics for \\NATES-PC


Statistics since 9/25/2019 9:37:52 PM

--SNIP--

The command completed successfully.

Comando Tiempo de Actividad

Si necesitas una pequeña utilidad portátil para encontrar el tiempo de actividad de Windows, no busques más allá del comando Uptime para Windows de NeoSmart Technologies. Esta utilidad es perfecta para consultar rápidamente el tiempo de actividad en cualquier versión de Windows. El mayor beneficio de esta herramienta es el factor de conveniencia. Si te encuentras utilizando esto muchas veces al día, es posible que desees considerar este método.

Después de descargar la herramienta, extrae uptime.exe en %WinDir%\System32. Luego abre un símbolo del sistema y simplemente escribe uptime.

Uptime tool

Para ejecutar esta herramienta de forma remota, primero necesitarías copiar la herramienta a los sistemas Windows en los que estás comprobando el tiempo de actividad.

Presentando el script Get-ServerUptimeReport

Para que no tengas que escribir el PowerShell tú mismo, descarga un script de la comunidad llamado Get-ServerUptimeReport.ps1.

PS51> Install-Script -Name Get-ServerUptimeReport

Este script te permite proporcionar un nombre de equipo como parámetro. Luego analizará el registro de eventos del sistema del equipo y encontrará tanto un evento de inicio como un evento de finalización para compararlos. Luego devolverá el tiempo total en que el servidor estuvo en línea hasta que el registro de eventos se haya reiniciado.

A continuación se muestra un ejemplo de cómo usar este script en un servidor. Devolverá el tiempo total de actividad para todos los eventos que el servidor tiene en el registro de eventos, incluida la actividad actual.

PS51> ./Get-ServerUptimeReport.ps1 -ComputerName sqlsrv1

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:40:00 PM 9/22/2017 4:20:11 PM 6.15 8860.18
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:20:11 PM 6.04 8697.98

Encontrar el tiempo de actividad de Windows en varios servidores

Este script es una forma rápida de encontrar el tiempo de actividad de un solo servidor a lo largo de varios días. Pero, ¿qué sucede si necesitas esta información para muchos servidores a la vez? Para hacer esto, puedes recopilar una lista de servidores y luego pasar cada nombre de equipo, uno a la vez, a este script.

Como ejemplo, define todos tus servidores en una matriz en la consola de PowerShell. En este ejemplo, la variable de matriz se llamará $servers.

En realidad, sin embargo, es posible que extraigas los nombres de los servidores de Active Directory, Hyper-V o un archivo de texto. Mientras puedas construir una matriz de nombres de servidores, estarás bien.

Define todos los nombres de servidores y luego itera sobre cada uno con un bucle, como se muestra a continuación.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server
}

Startup Shutdown Uptime (Days) Uptime (Min)
------- -------- ------------- ------------
9/16/2017 12:45:48 PM 9/22/2017 4:25:39 PM 6.15 8859.86
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7
9/16/2017 2:42:17 PM 9/22/2017 4:25:39 PM 6.07 8743.38
9/16/2017 12:40:00 PM 9/22/2017 4:25:39 PM 6.16 8865.65
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79
9/16/2017 3:22:12 PM 9/22/2017 4:25:39 PM 6.04 8703.46

Este código funciona, pero no puedes determinar a qué servidor se refiere cada fila. Agrega un nombre de servidor a la salida como se muestra a continuación utilizando una propiedad calculada.

$servers = 'WEBSRV1','SQLSRV1'
foreach ($server in $servers) {
	Get-ServerUptimeReport.ps1 -ComputerName $server | Select-Object -Property *,@{n='ServerName';e={$server}}
}

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:45:48 PM 9/22/2017 4:34:59 PM 6.16 8869.19 WEBSRV1
9/16/2017 10:42:52 AM 9/16/2017 12:42:34 PM 0.08 119.7 WEBSRV1
9/16/2017 2:42:17 PM 9/22/2017 4:34:59 PM 6.08 8752.71 WEBSRV1

Startup Shutdown Uptime (Days) Uptime (Min) ServerName
------- -------- ------------- ------------ ----------
9/16/2017 12:40:00 PM 9/22/2017 4:35:01 PM 6.16 8875.01 SQLSRV1
9/16/2017 10:22:49 AM 9/16/2017 12:22:36 PM 0.08 119.79 SQLSRV1
9/16/2017 3:22:12 PM 9/22/2017 4:35:01 PM 6.05 8712.81 SQLSRV1

¡Ahora tenemos una excelente herramienta que nos puede proporcionar un informe rápido sobre el tiempo de actividad de nuestros servidores a lo largo del tiempo!

Resumen

Has visto ahora muchas formas diferentes de encontrar el tiempo de actividad de Windows. Independientemente de la opción que elijas, recibirás la misma información. Elige la mejor para tu propio contexto.

Y recuerda, si necesitas un informe histórico del historial de tiempo de actividad, ¡no te olvides del script PowerShell Get-ServerUptimeReport!

Source:
https://adamtheautomator.com/windows-uptime/