Obter o tempo de funcionamento do computador usando PowerShell
uptime do computador é uma estatística importante na gestão de sistemas. Aqui estão várias das maneiras que podemos determinar o tempo de funcionamento do sistema para um computador (note que esta lista não é de modo algum exaustiva):
1. A página de desempenho do Gestor de Tarefas mostra o tempo de funcionamento do computador como dias, horas, minutos e segundos.2. A ferramenta de linha de comandos Systeminfo mostra a última vez de arranque do computador.3. O ID de Evento mais recente 6005 no registro de eventos do sistema do computador registra a última vez de inicialização do computador.4., A classe WMI Win32_ operatingsystem tem uma propriedade LastBootUpTime que contém a última hora de arranque do computador.cada uma destas técnicas tem os seus prós e contras. Por exemplo, o Gerenciador de Tarefas fornece visibilidade rápida para o tempo de funcionamento de um único computador, e o log de Eventos contém informações adicionais em torno do evento 6005 que podem fornecer uma visão sobre uma falha do sistema. As três primeiras escolhas provavelmente não são as melhores para fins de automação (por exemplo, questionando uma lista de servidores para uptime), então vamos olhar para WMI. Primeiro, no entanto, precisamos dar uma olhada em como WMI retorna informações de uptime.,
usando WMI para obter Uptime do computador
Existem várias maneiras que podemos recuperar o uptime de um computador usando WMI. Uma das maneiras mais óbvias, antes do Windows PowerShell, era usar o comando WMIC. Por exemplo:
Este comando recupera a propriedade LastBootUpTime da instância de classe Win32_ operatingsystem no computador., Em PowerShell, usaríamos o cmdlet Get-WmiObject em vez de WMIC:
tente estes comandos você mesmo, e você verá que o resultado não é necessariamente” fácil de usar ” porque a data e hora expressa na propriedade LastBootUpTime é formatada como uma cadeia de dados CIM (modelo de informação comum). Por exemplo:
12, 2016, 15:48:36 (3:48pm). 125599 é o número de microssegundos (vamos ignorar esses), e o -360 representa o número de minutos offset do GMT., Neste exemplo, -360 significa que o tempo está 6 horas atrás GMT. (Similarmente, + 180 significaria ” 3 horas antes do GMT.”)
para tornar a string DateTime CIM mais utilizável, precisaremos convertê-la em uma data utilizável (um objeto DateTime). Felizmente, PowerShell faz isso simples: o método de ToDateTime estático do sistema.Gestao.A classe ManagementDateTimeConverter. net converte a string DateTime CIM para um objeto DateTime que podemos usar mais facilmente em PowerShell. A figura 1 mostra um exemplo.,
Figura 1 – Conversão da última vez de arranque do computador em uma DateTime
Na Figura 1, a variável $dateTime contém a data e hora em que o computador atual foi reiniciado. Para obter o resultado do uptime (ao invés da data e hora do último boot), podemos subtraí-lo da hora atual (Get-Date), o que resulta em um objeto de tempo que contém a diferença. A figura 2 mostra um exemplo disso.,
Figura 2 – Conversão do computador de última hora do boot em um legíveis tempo de atividade
O primeiro comando na Figura 2 cria um objeto TimeSpan contendo a diferença entre a data atual e a hora e a última inicialização do tempo ($objeto dateTime que criou na Figura 1). O segundo comando emite o objeto de tempo-Espan, e o comando final usa o operador-f para emitir o tempo-Espan como uma cadeia formatada legível que nos diz que o computador atual está ligado há 4 dias, 19 horas, 56 minutos e 44 segundos.,
obter a última inicialização a partir de um computador remoto
os exemplos nas Figuras 1 e 2 visam o computador local. Como podemos atingir um computador remoto? Felizmente o WMI nos permite recuperar informações sobre um computador remoto usando o parâmetro-ComputerName. WMI também nos permitirá especificar credenciais alternativas para um computador remoto em um objeto PSCredential. A figura 3 mostra um exemplo de obter o último tempo de arranque para um computador chamado server1.,
Figura 3 – o último tempo de inicialização a partir de um computador remoto
O primeiro comando na Figura 3 obtém um objeto PSCredential para a variável $cred, e o segundo comando obtém o CIM datetime string contendo o último tempo de inicialização do computador server1 (repare-ComputerName e -Credencial de parâmetros). O terceiro comando converte o último tempo de inicialização em um objeto DateTime, e o último comando retorna o último tempo de inicialização para o computador.
Juntando tudo – o tempo de Get-Up.,script ps1
os exemplos mostrados nas Figuras 1 e 2 mostram como obter a última hora de arranque do computador e mostrar como uma string fácil de ler, e a Figura 3 mostra como obter a última hora de arranque de um computador remoto. Claro, não há necessidade de lembrar todas as nuances se encapsularmos a lógica em um script fácil de usar. O script do Get-Up.ps1 faz todo o trabalho duro para nós. A sintaxe do script é a seguinte:
o parâmetro-ComputerName é opcional e nomeia o(S) Computador (s) para o qual você deseja obter a informação de uptime., Este parâmetro suporta múltiplos objetos, entrada de pipeline, e objetos que têm uma propriedade computacional. O nome do parâmetro-ComputerName é opcional. Se você omitir este parâmetro, o padrão é a saída de informações de uptime para o computador atual.
O parâmetro-credencial fornece credenciais alternativas se você quiser consultar um ou mais computadores remotos e sua conta registrada atual não tem acesso. Questionar o tempo de funcionamento não requer privilégios de administrador no computador local, mas é necessário para computadores remotos.,
the script outputs objects with three properties: ComputerName (the computer’s name), LastBootTime (a DateTime containing the computer’s last bootup time), and Uptime (an easy-to-read uptime string).
obter tempo de Funcionamento para vários computadores
a Figura 4 ilustra obter o tempo de funcionamento para três computadores remotos de duas formas diferentes.,
Figura 4 – o tempo de atividade para três computadores remotos duas maneiras diferentes
O primeiro comando na Figura 4 especifica os três computadores como um parâmetro para o tempo de atividade do script, e o segundo comando especifica a três computadores, como entrada do pipeline. Note que ambos os comandos produzem uma saída idêntica (exceto que as cadeias de uptime na saída do segundo comando são ligeiramente mais tarde).
porque o script suporta a entrada de pipeline, você pode até mesmo usar a saída do cmdlet do Get-Adcomputador para relatar o tempo de funcionamento de todos os computadores em um OU., Por exemplo, considere o seguinte comando:
(dividi o comando em várias linhas para facilitar a leitura.) Este comando recupera os nomes de todos os computadores nos servidores OU, selecciona apenas a propriedade Nome de cada computador (Select-Object-ExpandProperty), ordena a lista de nomes dos computadores e, finalmente, obtém o tempo de funcionamento de cada computador.
o tempo de funcionamento do computador tornou-se fácil
o tempo de funcionamento do computador é uma métrica importante. Há uma variedade de maneiras de começar o uptime mas não uma maneira simples em PowerShell. A Hora De Acordar.,script ps1 preenche esta lacuna e torna mais fácil obter o tempo de funcionamento do computador, não importa se você quer obter o tempo de funcionamento do computador atual ou o tempo de funcionamento para computadores remotos.