Как проверить время работы Windows Server с помощью PowerShell

Когда вы говорите об оборудовании, вы имеете в виду компьютеры, клавиатуры, переключатели, кабели и так далее. Только, самый важный компонент для подключения - это сервер!
Серверы, централизованные или удаленные, служат посредниками для передачи информации и, следовательно, составляют важную часть операций. Вот почему у группы инфраструктуры организации часто есть специальные ежедневные или еженедельные задачи для постоянного мониторинга производительности сервера с помощью множества показателей.
Одним из ключевых показателей является время безотказной работы , которое обозначает время, в течение которого система работала без перезапуска или завершения работы. Вы бы не хотели, чтобы система подвела вас в самый разгар жесткой работы с цифрами. Команда ИТ-инфраструктуры может быстро определить работоспособность своей системы и приложений и скорректировать непредвиденные простои.
Время – деньги, поэтому чем короче диагностика, тем быстрее вы сможете устранить любые проблемы и обеспечить эффективную работу вашей компании.
Вот чего достигает утилита Microsoft PowerShell, и вот как. Во-первых, давайте проверим, почему время безотказной работы является таким важным показателем.
Почему вы должны заботиться о времени безотказной работы?
Это потому, что обратное время простоя разрушительно — как с точки зрения стоимости, так и с точки зрения репутации ! Высокие показатели безотказной работы повышают надежность и доступность системы и помогают обеспечить бесперебойное обслуживание ваших клиентов.
Выявление причин простоя также может помочь в принятии решений, составлении бюджета и планировании загрузки.
Принятие решений. Как администратор серверов, вы будете знать, какие системы нуждаются в обновлении для обеспечения работы вашей организации. Соответственно, вы можете рекомендовать дальнейший план действий своему начальству.
Бюджетирование и планирование мощностей. В зависимости от времени безотказной работы вы и ваша команда можете решить, нужны ли дополнительные ресурсы для удовлетворения растущих потребностей организации или требуется замена каких-либо машин. Соответственно, определитесь с бюджетами и планированием мощностей.
Поскольку время безотказной работы влияет на всю вашу бизнес-модель, давайте углубимся в утилиту Microsoft PowerShell и все ее интересные преимущества.
Что такое Microsoft PowerShell?
До PowerShell у Microsoft был только один интерфейс командной строки (CLI), который вы могли использовать для взаимодействия с ОС Windows, и это был CMD. Когда Microsoft представила PowerShell, он изменил правила игры для автоматизации повторяющихся задач и улучшения управления административными задачами. PowerShell легко программировать и развертывать, и это мощный способ взаимодействия с ОС Windows .
Теперь давайте посмотрим, как легко использовать PowerShell для проверки работоспособности системы!
4 способа рассчитать время работы сервера с помощью PowerShell
Перво-наперво: вам нужно понять, что такое инструментарий управления Windows ( WMI ) и общая информационная модель (CIM) .
WMI состоит из множества расширений, которые предоставляют вам информацию об операционной системе. CIM обеспечивает общее определение управляющей информации, включая свойства устройства и приложения в системе. Это похоже на организационный инструмент, который позволяет ИТ-специалистам знать все об инфраструктуре и легко ее находить.
Как эти двое связаны? WMI — это реализация Microsoft CIM на платформе Windows. Другими словами, вы получаете доступ к информации CIM, такой как время безотказной работы, через WMI .
Теперь, когда мы закончили с определениями, давайте проверим 4 способа увеличить время безотказной работы вашего сервера с помощью Microsoft PowerShell.
1. Запрос инструментария управления Windows (WMI)
Один из способов узнать время безотказной работы сервера Windows — запросить WMI.
Расширение WMI для расчета времени безотказной работы — это класс Wi32_OperatingSystem , имеющий множество свойств. Свойство LastBootUpTime сообщает, когда произошла последняя перезагрузка компьютера . Вам также нужна информация CIM для этого, и все готово.
Запросите PowerShell со следующим:
Get-CimInstance -ClassName Win32_OperatingSystem | Выберите LastBootUpTime
Вывод всегда в формате даты и времени, который можно использовать для расчета времени безотказной работы.

2. Журнал событий Windows
Второй вариант, который вы можете использовать, — это журнал событий Windows. Вы можете получить к нему доступ в PowerShell с помощью команды Get-EventLog или Get-WinEvent . Ознакомьтесь с нашим списком всех основных команд PowerShell для получения более подробной информации. Эти команды собирают информацию из журналов событий и файлов журналов трассировки событий, расположенных на локальных и удаленных компьютерах. Вместо просмотра всего файла журнала вы можете просто выбрать нужные вам показатели, которые имеют индивидуальные идентификаторы.
Например, предположим, что событие 1002 или 1003 соответствует времени последнего перезапуска. Используя любой идентификатор, вы можете узнать, когда система перезагружалась в последний раз. Исходя из этого, вы можете рассчитать время безотказной работы.
Код PowerShell для определения времени последнего перезапуска:
Get-WinEvent -ProviderName EventLog | Где-Объект {$_.Id -eq 1002 -или $_.Id -eq 1003} | Select-Object -First 1 TimeCreated
Здесь вы просите PowerShell получить сведения о событии с идентификатором 1002 или 1003 из журнала событий. На выходе будет время последнего перезапуска.

Прежде чем мы перейдем к следующему варианту, давайте быстро рассмотрим некоторые важные параметры, которые вы можете использовать с командлетом Get-WinEvent :
- ComputerName — определяет имя компьютера, с которого этот командлет получает системные журналы.
- Учетные данные — указывает учетную запись пользователя с разрешениями на выполнение этого действия.
- FilterHashtable — принимает запрос в виде хеш-таблицы
- FilterXML — определяет структурированный XML-запрос.
- Принудительно — извлекает журнал отладки, если имя компьютера содержит подстановочные знаки.
- ListLog — указывает журналы событий
- LogName — дает конкретное имя журнала
Вы можете использовать эти параметры, чтобы получить время безотказной работы любого сервера Windows или серверов.
3. Использование Get-Uptime
Если приведенные выше варианты кажутся трудными, вот простой. Просто используйте командлет Get-Uptime , чтобы узнать время, прошедшее с момента последней перезагрузки. Очевидным преимуществом этого командлета является то, что вам не нужно ничего вычислять, так как он напрямую дает время безотказной работы вашего сервера в качестве выходных данных.
Обратите внимание, что этот командлет был представлен в PowerShell 6.0, поэтому, если у вас более старая версия, он вам не подойдет.
Этот командлет принимает два параметра, а именно:
Get-Uptime
[-С]
[<Общие параметры>]
Командлет [-Since] возвращает объект DateTime, чтобы указать дату и время последнего перезапуска сервера. Если вы используете командлет без каких-либо параметров , он возвращает только время безотказной работы.
Вот инфографика, показывающая разницу в результатах вывода.
Примеры
Get-Uptime-С тех пор
Вывод – вторник, 4 января 2021 г., 13:13:49.
Как видите, этот командлет отображает время последнего перезапуска системы. Теперь, если вам нужно только время безотказной работы, вот код для этого.
Get-Uptime
Вывод будет:
Дней: 10
Часы: 4
Минут: 56
Секунды: 32
Миллисекунды: 0
Тики: 8892960000000
Всего дней: 10.03677083333333
Всего часов: 83,2736
Всего минут: 23070,96
Всего секунд: 997364
Всего миллисекунд: 889296000
Эта информация представляет собой время с момента последней перезагрузки; гораздо проще, чем вычислить его, верно! Вы можете проанализировать этот вывод в своем коде или выполнить любое другое действие на его основе.
4. Пользовательские сценарии
Хотя приведенные выше командлеты являются встроенными функциями PowerShell, вы также можете создать свой собственный сценарий или использовать собственные сценарии , разработанные членами и группами сообщества PowerShell. Пример называется Get -ServerUptimeReport .
Как следует из названия, этот сценарий принимает имя компьютера в качестве параметра и анализирует журнал системных событий компьютера, чтобы найти время последнего запуска. Затем он вычисляет общее время работы сервера. Этот командлет также дает исторический отчет о времени запуска и остановки компьютера.
Вы можете использовать этот командлет следующим образом:
Вывод будет:
02.01.2021 15:15:19 20.31 9286.98
Преимущество этих скриптов в том, что вы можете найти время безотказной работы многих серверов Windows с помощью одной и той же команды, так как этот скрипт принимает массив . Например, вы можете иметь массив имен компьютеров и передать этот массив в качестве входных данных. Просто убедитесь, что вы вводите имя компьютера вместе с временем безотказной работы для ясности.
Вы также можете настроить этот сценарий в соответствии с вашими конкретными требованиями. Кроме того, вы можете построить его с нуля!
Заключительные слова
Время безотказной работы измеряет надежность и доступность системы , что жизненно важно для поддержания эффективности. Microsoft PowerShell помогает вам определить время безотказной работы сервера Windows, и вы можете добиться этого четырьмя различными способами.
У вас есть возможность запросить WMI, используя информацию CIM. Кроме того, вы можете использовать встроенные командлеты PowerShell, такие как Get-WinEvent или Get-Uptime , или создать собственный сценарий для получения информации. Вы также можете использовать сценарии PowerShell, созданные сообществом, для пользовательских входных и выходных данных.
В общем, все зависит от того, что вы хотите! Независимо от того, какой вариант вы выберете, PowerShell предлагает быстрые результаты для показателей времени безотказной работы вашей системы .
Часто задаваемые вопросы
Что лучше, Get-WinEvent или Get-EventLog?
Вы можете использовать как Get-WinEvent, так и Get-EventLog для доступа к журналам событий Windows. Они во многом похожи, хотя Get-WinEvent более совершенен , чем Get-EventLog. Основное отличие состоит в том, что командлет Get-WinEvent хорошо работает с более новыми версиями технологии журналов Microsoft. Эта команда также может получить доступ к большему количеству данных, чем Get-EventLog.
Что такое CIM и WMI?
Общая информационная модель (CIM) — это стандарт с открытым исходным кодом для сбора и отображения информации о компьютере. Интерфейс управления Windows (WMI) — это реализация Microsoft CIM для операционной системы Windows.
В чем разница между временем безотказной работы и доступностью?
Время безотказной работы — это время, прошедшее с момента последней перезагрузки, и измеряет надежность системы. Доступность — это вероятность того, что система будет работать в течение определенного времени. Суть в том, что время безотказной работы — это фактические данные, а доступность — ожидаемое значение.
Что такое пользовательские сценарии в PowerShell?
Пользовательские сценарии — это код, который вы пишете в PowerShell для получения определенного результата. Вы можете использовать существующие команды в PowerShell для создания сценария, который выполняет желаемое действие.