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 servidores utilizam para solucionar questões 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. Sinta-se à vontade para usar o método que for mais fácil para você. Utilize este artigo como referência futura.

O artigo será dividido em duas partes principais; verificação do tempo de atividade do servidor e localização do tempo de atividade histórico do Windows. A primeira parte focará em descobrir 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”, significando o tempo que um sistema Windows ficou ligado entre vários reinícios. Usando o PowerShell, você aprenderá a analisar o log de eventos do Windows para extrair números de tempo de atividade históricos.

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

Para começar, vamos explorar 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 por meio desta seção. Mas saiba que usando PowerShell Remoting, você também pode realizar essas verificações remotamente (exceto no 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 do mouse na barra de tarefas do Windows e selecione o Gerenciador de Tarefas ou pressione CtrlShiftEsc. Uma vez aberto o Gerenciador de Tarefas, clique na guia Desempenho. Na guia de 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 não relacionado à linha de comando para recuperar o tempo de atividade. Os IDs 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 estas etapas para identificar o tempo de atividade via Visualizador de Eventos:

  • Abra o Menu Iniciar e simplesmente pesquise por Visualizador de Eventos, você também pode acessá-lo através do Gerenciamento do Computador.
  • No lado esquerdo, expanda a seção 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 do Evento (por padrão, isso será preenchido com o texto indicando “Todos os IDs de Evento”), precisamos procurar por nossos IDs de Evento aplicáveis, digite “6005, 6006” e clique em OK

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

Agora você tem Logs de Eventos filtrados que mostrarão não apenas o último tempo, mas todos os tempos conhecidos em que houve uma inicialização/desligamento.

PowerShell

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

Ao consultar a 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

O WMIC

WMIC fornece uma interface de linha de comando para a WMI e é um método testado e comprovado que tem sido usado por muitos anos. Para consultar via tempo de atividade via WMIC, você consulta novamente a classe WMI Win32_OperatingSystem, embora um pouco mais por baixo dos panos. 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 detalhadas de configuração 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 obter os dados de que precisa.

Basta abrir o Prompt de Comando ou o 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 com o Windows.

Comando Estatísticas da Rede

Você também pode consultar rapidamente o tempo de atividade via Estatísticas da Rede ou mais comumente 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…. Esta 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 um utilitário pequeno e portátil para encontrar o tempo de atividade do Windows, não procure mais do que o Comando de Tempo de Atividade da NeoSmart Technologies para o Windows. Este utilitário é perfeito 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 por dia, pode querer 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, você primeiro precisaria copiar a ferramenta para os sistemas Windows nos quais está verificando o tempo de atividade.

Apresentando o script Get-ServerUptimeReport

Então você não precisa escrever o PowerShell você mesmo, baixe um script da comunidade 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 irá analisar o registro de eventos System do computador e encontrar um evento de início e um evento de parada para comparar os dois. Em seguida, ele retornará o tempo total em que o servidor esteve online até que o registro 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 registrados no log de eventos do servidor, 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 Vários Servidores

Este script é uma maneira rápida de encontrar o tempo de atividade de um único servidor ao longo de vários dias. Mas e se você precisar dessa informação para muitos servidores de uma vez? Para fazer isso, você pode reunir uma lista de servidores e 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 de $servers.

Na realidade, porém, você pode estar obtendo os nomes dos servidores do Active Directory, Hyper-V ou de um arquivo de texto. Contanto que você possa construir uma matriz de nomes de servidores, estará tudo certo.

Defina todos os nomes de servidores e, em seguida, itere sobre cada um deles com um loop, como 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 escolher, 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/