Tempo de inicialização e tempo de atividade do Windows 10: Insights do PowerShell

O tempo de atividade do Windows é uma medida que muitos administradores de servidor usam para solucionar problemas do dia a dia que possam surgir no ambiente. Neste artigo, você aprenderá como verificar o tempo de inicialização no Windows 10 e no Windows Server. Você está livre para usar o método que for mais fácil para você. Use este artigo como referência futura.

O artigo será dividido em duas partes principais; verificando o tempo de atividade do servidor e encontrando o tempo de atividade histórico do Windows. A primeira parte se concentrará em encontrar quanto tempo o computador está ligado desde o último reinício. Isso é chamado de tempo de atividade “atual” neste artigo.

A segunda parte do artigo se concentrará em encontrar o tempo de atividade “histórico”, ou seja, quanto tempo um sistema Windows ficou ligado entre vários reinícios. Usando o PowerShell, você aprenderá como analisar o log de eventos do Windows para extrair números de tempo de atividade histórico.

Como Verificar o Tempo de Inicialização no Windows 10 e no Windows Server

Para começar, vamos agora ver algumas maneiras diferentes de encontrar o tempo de atividade atual do Windows.

Você verá uma demonstração de como verificar o tempo de inicialização no Windows 10 executando comandos localmente em um sistema Windows através desta seção. Mas saiba que usando Remoção do PowerShell, você também pode realizar essas verificações remotamente (excluindo o gerenciador de tarefas).

Gerenciador de Tarefas

Uma das maneiras mais simples e diretas de encontrar o tempo de atividade é simplesmente abrir o Gerenciador de Tarefas.

Para verificar o tempo de atividade do Windows com o Gerenciador de Tarefas, clique com o botão direito na barra de tarefas do Windows e selecione Gerenciador de Tarefas ou pressione CtrlShiftEsc. Uma vez que o Gerenciador de Tarefas esteja aberto, clique na aba Desempenho. Sob a aba Desempenho, você verá um rótulo de Tempo de Atividade.

Finding Windows uptime with task manager

Visualizador de Eventos

O Visualizador de Eventos é muito comumente usado pela maioria dos sysadmins regularmente, o que o torna uma ótima opção para um método de recuperação de tempo de atividade sem relacionado a linha de comando. O ID de Evento 6005 e 6006 podem ser usados para identificar quando o serviço de log de eventos inicia ou para, o que ocorre durante os tempos de inicialização/desligamento. Siga estes passos para identificar o tempo de atividade via Visualizador de Eventos:

  • Acesse o Menu Iniciar e simplesmente procure por Visualizador de Eventos, você também pode chegar até ele via Gerenciamento do Computador.
  • No lado esquerdo, expanda a seção de Logs do Windows e selecione Sistema
  • Agora que estamos consultando apenas eventos relacionados ao Sistema, clique em “Filtrar Log Atual…” no lado direito da sua janela
  • No campo ID de Evento (por padrão isso será preenchido com texto dizendo “Todos os IDs de Evento”) precisamos buscar pelos nossos IDs de Evento aplicáveis, digite “6005, 6006” e então clique em OK

Você pode então comparar os dois tempos para criar um tempo total de atividade. Além disso, como muitas instâncias desses eventos são armazenadas, podemos consultar o histórico de tempos de atividade!

Você agora tem Logs de Evento filtrados que mostrarão a você não apenas a última vez, mas todos os tempos conhecidos nos quais houve uma inicialização/desligamento.

PowerShell

O PowerShell tem algumas maneiras diferentes de você recuperar o tempo de atividade. Você pode consultar o WMI ou usar o log de eventos do Windows.

Ao consultar o WMI, você pode consultar a classe Win32_OperatingSystem e selecionar a propriedade LastBootUpTime como mostrado abaixo.

PS51> Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime

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

Para consultar o Log de Eventos via PowerShell, use o cmdlet Get-WinEvent. Você precisará procurar pelos IDs de evento 6005 ou 6006 que indicam a última vez que a máquina foi iniciada.

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 fornece uma interface de linha de comando para o WMI e é um método testado e verdadeiro que tem sido usado há muitos anos. Para consultar o tempo de atividade via WMIC, você consulta novamente a classe WMI Win32_OperatingSystem embora um pouco nos bastidores. Você pode ver abaixo que pode usar a sintaxe do WMIC os get lastbootuptime para retornar a última vez que o servidor foi iniciado.

> wmic os get lastbootuptime

LastBootUpTime             

20190925213737.500000-240

Você não precisa baixar nada para aproveitar o WMIC, pois ele vem pré-instalado com o Windows.

Utilitário de Informações do Sistema

O comando systeminfo exibe informações de configuração detalhadas sobre um computador e pode ser usado para consultar o tempo de atividade do sistema. Usando a ferramenta de linha de comando find integrada, você pode analisar o texto para recuperar os dados de que precisa.

Basta abrir o Prompt de Comando ou PowerShell e digitar systeminfo | find.

> systeminfo | find "System Boot Time:"

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

Não é necessário baixar nada para aproveitar o systeminfo, pois ele vem pré-instalado no Windows.

Comando Estatísticas Net

Você também pode consultar rapidamente o tempo de atividade via Comando Estatísticas Net, mais conhecido como net stats. O comando net stats retorna informações gerais sobre sua sessão. Você pode ver abaixo da linha Estatísticas desde…. Essa data indica quando a máquina foi iniciada.

> net stats srv

Workstation Statistics for \\NATES-PC


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

--SNIP--

The command completed successfully.

Comando de Tempo de Atividade

Se você precisa de uma pequena ferramenta portátil para encontrar o tempo de atividade do Windows, não procure mais do que o comando Uptime da NeoSmart Technologies para o Windows. Essa ferramenta é perfeita para consultar rapidamente o tempo de atividade em qualquer versão do Windows. O principal benefício desta ferramenta é o fator de conveniência. Se você se pegar usando isso várias vezes ao dia, pode considerar este método.

Após baixar a ferramenta, extraia uptime.exe para %WinDir%\System32. Em seguida, abra um prompt de comando e simplesmente digite uptime.

Uptime tool

Para executar esta ferramenta remotamente, primeiro você precisaria copiar a ferramenta para os sistemas Windows nos quais está verificando o tempo de atividade.

Apresentando o script Get-ServerUptimeReport

Para que você não precise escrever o PowerShell, baixe um script comunitário chamado Get-ServerUptimeReport.ps1.

PS51> Install-Script -Name Get-ServerUptimeReport

Este script permite que você forneça um nome de computador como parâmetro. Ele analisará o log de eventos do sistema (System) do computador e encontrará tanto um evento de início quanto um evento de parada para compará-los. Em seguida, ele retornará o tempo total em que o servidor esteve online até que o log de eventos tenha sido rolado.

Abaixo está um exemplo de uso deste script em um servidor. Ele retornará o tempo total de atividade para todos os eventos que o servidor tem no log de eventos, incluindo a atividade atual.

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

Encontrando o Tempo de Atividade do Windows em Muitos Servidores

Este script é uma maneira rápida de encontrar o tempo de atividade de um único servidor ao longo de muitos dias. Mas e se você precisar dessas informações para muitos servidores de uma vez? Para fazer isso, você pode reunir uma lista de servidores e depois passar cada nome de computador, um de cada vez, para este script.

Como exemplo, defina todos os seus servidores em uma matriz no console do PowerShell. Neste exemplo, a variável da matriz será chamada $servidores.

Na realidade, no entanto, você pode estar obtendo nomes de servidores do Active Directory, Hyper-V ou de um arquivo de texto. Contanto que você possa construir uma matriz de nomes de servidor, está tudo bem.

Defina todos os nomes dos servidores e, em seguida, itere sobre cada um com um loop, conforme mostrado abaixo.

$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, mas você não pode determinar a qual servidor cada linha se refere. Adicione um nome de servidor à saída como mostrado abaixo, usando uma propriedade 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

Agora temos uma excelente ferramenta que pode nos fornecer um relatório rápido sobre o tempo de atividade de nossos servidores ao longo do tempo!

Resumo

Você já viu muitas maneiras diferentes de encontrar o tempo de atividade do Windows. Independentemente da opção que você escolher, você receberá as mesmas informações. Escolha a melhor para o seu próprio contexto.

E lembre-se, se precisar de um relatório histórico do tempo de atividade, não se esqueça do script PowerShell Get-ServerUptimeReport!

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