Поиск по сайту:

PowerShell: Показать время работы всех серверов Windows


Допустим, вы хотите получить обзор времени работы всех серверов Windows в вашем домене. Эта информация очень важна, и вы должны регулярно проверять время работы своих сервисов. Вы помните 5 девяток? Я говорю о 99,999% времени работы сервисов. Это значение хорошо известно как основа для качественных услуг.

Цель

Мне нравится начинать с цели. Читатель имеет возможность увидеть, в чем состоит цель, и решить, стоит ли читать дальше. Как и обещал, я дам вам команду PowerShell, которая получает все время работы всех включенных присоединенных к домену серверов Windows. Я создал небольшую функцию без параметров, названную Get-UpTimeAllServer.

Вывод будет выглядеть так:

Если один из ваших серверов недоступен из-за сетевой ошибки, отсутствующей конфигурации WinRM или по любой другой причине, то сервер будет отмечен как «Сервер не может быть достигнут».

Функция

Все вышеперечисленное обернуто в функцию. Вот она:


function Get-UpTimeAllServer {

.SYNOPSIS
Get-UpTimeAllServer is an advanced Powershell function. It shows the uptime of all domain joined and enabled Windows servers.

.DESCRIPTION
Uses Get-CimInstance and a Try/Catch block.

.PARAMETER
None

.EXAMPLE
Get-UpTimeAllServer

.NOTES
Author: Patrick Gruenauer
Web: https://active-directory.ru

$servers=(Get-ADComputer -Filter 'operatingsystem -like "*server*"-and enabled -eq "true"').Name
$result=@()

Foreach ($s in $servers) {

Try {

$up=(Get-CimInstance -ClassName win32_operatingsystem -ComputerName $s -ErrorAction Stop).LastBootUpTime
$uptime=((Get-Date) - $up)
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'=$up
'Days'=$uptime.Days
'Hours'=$uptime.Hours
'Minutes'=$uptime.Minutes
'Seconds'=$uptime.Seconds
})
}
Catch {

$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$s
'LastBootUpTime'='Server could not be reached'
})

}
}
}

Вы можете скачать функцию здесь:

ПолучитьВремяСработкиВсехСерверов

Запустите этот скрипт в PowerShell или скопируйте его в

C:\Программные файлы\WindowsPowerShell\Модули

Создайте там папку Get-UpTimeAllServer и сохраните загруженный файл как PSM1. Затем команда будет доступна каждый раз при запуске PowerShell.

Увидимся в следующий раз с крутыми штуками на Powershell!

Статьи по данной тематике