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

telegram

Интересуешься IT и системным администрированием? Подпишись на наш канал, где мы делимся инсайдами, новостями и практическими советами! Прокачай свои навыки вместе с нами!

Как проверить работоспособности Exchange Server с помощью скрипта PowerShell

Иногда в работе Exchange Server возникают проблемы или инциденты, и вам нужно убедиться, что сервер функционирует корректно. Особенно важно это перед добавлением нового сервера в среду. Как это сделать максимально эффективно? Один из лучших способов – воспользоваться мощным PowerShell-скриптом для проверки работоспособности Exchange Server.

Готовы? Давайте разберём, как это сделать!

Онлайн-курс: Планирование и установка Exchange Server 2016 с нуля до запуска в Production.

Курс охватывает все ключевые аспекты управления почтовым сервером: от установки и настройки до обеспечения безопасности и автоматизации. Курс подходит как для начинающих, так и для опытных администраторов.

Зачем нам нужно проверить работоспособность Exchange Server

Проверка работоспособности сервера Exchange особенно важна в следующих ситуациях:

  • Когда возникают инциденты или проблемы с сервером, требующие диагностики.
  • Перед обновлением Exchange Server до последнего кумулятивного обновления (CU).
  • Перед установкой мастера гибридной конфигурации для миграции в Office 365.
  • Перед созданием группы доступности баз данных (DAG) между серверами Exchange.
  • При добавлении нового сервера Exchange в существующую организацию.

Такая проверка помогает убедиться, что система работает корректно, и снизить вероятность ошибок при внесении изменений.

PowerShell скрипт для проверки работоспособности Exchange Server

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

Почему я рекомендую использовать этот PowerShell-скрипт:

  • Поддерживает Exchange Server 2013, 2016 и 2019.
  • Содержит журнал изменений с информацией обо всех исправлениях и новых функциях.
  • Разработан и поддерживается инженерами Microsoft, что гарантирует надежность.
  • Постоянно дорабатывается и совершенствуется.
  • Открыт для предложений и добавления новых функций.
  • Полностью написан на PowerShell, что делает его гибким и прозрачным.

Важно: скрипт может работать с Exchange Server 2007 и 2010, но официально не поддерживается.

Загрузка и подготовка скрипта проверки работоспособности Exchange

Скачайте PowerShell-скрипт для проверки производительности Exchange Server с официального репозитория GitHub. На момент написания статьи я буду тестировать скрипт проверки работоспособности Exchange Server Performance версии 24.11.20.2104

Скорее всего, к моменту чтения этой статьи версия уже обновилась, так как команда регулярно выпускает новые обновления, обычно пару раз в месяц — это действительно здорово! Если у вас возникли ошибки, есть идеи для новых функций или вы хотите оставить отзыв, отправьте сообщение на адрес Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript..

Поместите скрипт PowerShell HealthChecker.ps1 в каталог C:\scripts на вашем сервере Exchange. Если папка scripts ещё не создана, просто создайте её. Также убедитесь, что файл не заблокирован, чтобы избежать проблем при запуске. Если столкнетесь с ошибкой о цифровой подписи, посмотрите подробное решение в статье о её устранении.

Перед запуском скрипта убедитесь в его подлинности, проверив цифровую подпись с помощью командлета Get-AuthenticodeSignature.


[PS] C:\>Get-AuthenticodeSignature -FilePath "C:\Scripts\HealthChecker.ps1" | ft -AutoSize


    Directory: C:\Scripts


SignerCertificate                        Status Path
-----------------                        ------ ----
ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B Valid  HealthChecker.ps1

Запуск PowerShell скрипта для проверки работоспособности сервера Exchange

Откройте Exchange Management Shell с правами администратора на сервере Exchange. Перейдите в каталог C:\scripts. Затем выполните скрипт HealthChecker.ps1, указав сервер Exchange. Если сервер не будет указан, скрипт автоматически выполнит проверку локального хоста, то есть того сервера, где вы работаете.


[PS] C:\scripts>.\HealthChecker.ps1 -Server "EX01-2016"
Exchange Health Checker version 3.1.1
Virtual Machine detected.  Certain settings about the host hardware cannot be detected from the virtual machine.  Verify on the VM Host that:

    - There is no more than a 1:1 Physical Core to Virtual CPU ratio (no oversubscribing)
    - If Hyper-Threading is enabled do NOT count Hyper-Threaded cores as physical cores
    - Do not oversubscribe memory or use dynamic memory allocation

Although Exchange technically supports up to a 2:1 physical core to vCPU ratio, a 1:1 ratio is strongly recommended for performance reasons.  Certain third party Hyper-Visors such as VMWare have their own guidance.

VMWare recommends a 1:1 ratio.  Their guidance can be found at https://www.vmware.com/files/pdf/Exchange_2013_on_VMware_Best_Practices_Guide.pdf.
Related specifically to VMWare, if you notice you are experiencing packet loss on your VMXNET3 adapter, you may want to review the following article from VMWare:  http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2039495.

For further details, please review the virtualization recommendations on Microsoft Docs at the following locations:
Exchange 2013: https://learn.microsoft.com/en-us/exchange/exchange-2013-virtualization-exchange-2013-help#requirements-for-hardware-virtualization.
Exchange 2016/2019: https://learn.microsoft.com/en-us/exchange/plan-and-deploy/virtualization?view=exchserver-2019.


Exchange Information
--------------------
        Name: EX01-2016
        Version: Exchange 2016 CU17
        Build Number: 15.1.2044.4
                Error: Out of date Cumulative Update. Please upgrade to one of the two most recently released Cumulative Updates. Currently running on a build that is 194 days old.
        Server Role: Mailbox
        MAPI/HTTP Enabled: True
        Exchange Server Maintenance: Server is not in Maintenance Mode

Operating System Information
----------------------------
        Version: Microsoft Windows Server 2016 Standard Evaluation
        System Up Time: 2 day(s) 16 hour(s) 34 minute(s) 28 second(s)
        Time Zone: W. Europe Standard Time
        Dynamic Daylight Time Enabled: True
        .NET Framework: 4.8
        Page File Size: Error: System is set to automatically manage the pagefile size.
        Power Plan: Balanced --- Error
        Http Proxy Setting: 
        Visual C++ 2012: Redistributable is outdated
        Visual C++ 2013: Redistributable is outdated
                Note: For more information about the latest C++ Redistributeable please visit: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
                This is not a requirement to upgrade, only a notification to bring to your attention.
        Server Pending Reboot: False

Processor/Hardware Information
------------------------------
        Type: VMWare
        Processor: Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
        Number of Processors: 4
                Note: Please make sure you are following VMware's performance recommendation to get the most out of your guest machine. VMware blog 'Does corespersocket Affect Performance?' https://blogs.vmware.com/vsphere/2013/10/does-corespersocket-affect-performance.html
        Number of Physical Cores: 4
        Number of Logical Cores: 4
        Hyper-Threading: Disabled
        All Processor Cores Visible: Passed
        Max Processor Speed: 2304
        Physical Memory: 12 GB

NIC Settings Per Active Adapter
-------------------------------
        Interface Description: vmxnet3 Ethernet Adapter [Ethernet0]
                Driver Date: 2019-07-11
                Driver Version: 1.8.16.0
                MTU Size: 1500
                RSS Enabled: True
                Link Speed: 10000 Mbps --- This may not be accurate due to virtualized hardware
                IPv6 Enabled: True
                IPv4 Address:
                        Address: 192.168.1.52\24 Gateway: 192.168.1.1
                IPv6 Address:
                DNS Server: 192.168.1.51
                Registered In DNS: True
                Sleepy NIC Disabled: False --- Warning: It's recommended to disable NIC power saving options
                        More Information: http://support.microsoft.com/kb/2740020
                Packets Received Discarded: 0

Frequent Configuration Issues
-----------------------------
        TCP/IP Settings: Not Set
                Error: Without this value the KeepAliveTime defaults to two hours, which can cause connectivity and performance issues between network devices such as firewalls and load balancers depending on their configuration.
                More details: https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/Checklist-for-troubleshooting-Outlook-connectivity-in-Exchange/ba-p/604792
        RPC Min Connection Timeout: 0
                More Information: https://blogs.technet.microsoft.com/messaging_with_communications/2012/06/06/outlook-anywhere-network-timeout-issue/
        CTS Processor Affinity Percentage: 0
        Credential Guard Enabled: False

Security Settings
-----------------
        LmCompatibilityLevel Settings: 3
                Description: Clients use only NTLMv2 authentication, and they use NTLMv2 session security if the server supports it. Domain controllers accept LM, NTLM, and NTLMv2 authentication.
        TLS 1.0
                Server Enabled: True
                Server Disabled By Default: False
                Client Enabled: True
                Client Disabled By Default: False
        TLS 1.1
                Server Enabled: True
                Server Disabled By Default: False
                Client Enabled: True
                Client Disabled By Default: False
        TLS 1.2
                Server Enabled: True
                Server Disabled By Default: False
                Client Enabled: True
                Client Disabled By Default: False
        Certificate:
                FriendlyName: Microsoft Exchange Server Auth Certificate
                Thumbprint: 96AC7BAD02F000A6C9B0DFEB5F15A59FE396D5F2
                Lifetime in days: 1758
                Key size: 2048
                Bound to services: SMTP
                Current Auth Certificate: True
                SAN Certificate: False
                Namespaces:
                        Microsoft Exchange Server Auth Certificate
        Certificate:
                FriendlyName: Microsoft Exchange
                Thumbprint: 8CF11037A346A3BE602E99171FFB32C07F3F2196
                Lifetime in days: 1784
                Key size: 2048
                Bound to services: IMAP, POP, IIS, SMTP
                Current Auth Certificate: False
                SAN Certificate: True
                Namespaces:
                        EX01-2016
                        EX01-2016.exoip.local
        Certificate:
                FriendlyName: mail.exoip.com @ 2020/10/3 16:46:13
                Thumbprint: 11A8E3212103DD17734E46F5F4DFEA1ABC41AD35
                Lifetime in days: 5
                Key size: 3072
                Bound to services: IIS, SMTP
                Current Auth Certificate: False
                SAN Certificate: True
                Namespaces:
                        autodiscover.exoip.com
                        mail.exoip.com
        Certificate:
                FriendlyName: WMSVC-SHA2
                Thumbprint: A520A23C9032B0D2B62BA812F2DBF91BB580D228
                Lifetime in days: 3555
                Key size: 2048
                Bound to services: None
                Current Auth Certificate: False
                SAN Certificate: False
                Namespaces:
                        WMSvc-SHA2-EX01-2016
        Valid Auth Certificate Found On Server: True
        SMB1 Installed: True
        SMB1 Blocked: False
                SMB1 should be uninstalled SMB1 should be blocked
                More Information: https://techcommunity.microsoft.com/t5/exchange-team-blog/exchange-server-and-smbv1/ba-p/1165615
        Security Vulnerability: CVE-2020-16875
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-16875 for more information.
        Security Vulnerability: CVE-2020-16969
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-16969 for more information.
        Security Vulnerability: CVE-2020-17083
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17083 for more information.
        Security Vulnerability: CVE-2020-17084
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17084 for more information.
        Security Vulnerability: CVE-2020-17085
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17085 for more information.
        Security Vulnerability: CVE-2020-17117
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17117 for more information.
        Security Vulnerability: CVE-2020-17132
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17132 for more information.
        Security Vulnerability: CVE-2020-17141
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17141 for more information.
        Security Vulnerability: CVE-2020-17142
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17142 for more information.
        Security Vulnerability: CVE-2020-17143
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-17143 for more information.
        Security Vulnerability: CVE-2020-1147
                See: https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-1147 for more information.

Exchange Web App Pools
----------------------
        Web App Pool: GC Server Mode Enabled | Status
        MSExchangeServicesAppPool: False | Started
        MSExchangeMapiFrontEndAppPool: False | Started
        MSExchangeOWAAppPool: False | Started
        MSExchangeRestAppPool: False | Started
        MSExchangeMapiAddressBookAppPool: False | Started
        MSExchangeRpcProxyFrontEndAppPool: False | Started
        MSExchangePowerShellAppPool: False | Started
        MSExchangePowerShellFrontEndAppPool: False | Started
        MSExchangeRestFrontEndAppPool: False | Started
        MSExchangeMapiMailboxAppPool: False | Started
        MSExchangeOABAppPool: False | Started
        MSExchangePushNotificationsAppPool: False | Started
        MSExchangeOWACalendarAppPool: False | Started
        MSExchangeAutodiscoverAppPool: False | Started
        MSExchangeECPAppPool: False | Started
        MSExchangeSyncAppPool: True | Started
        MSExchangeRpcProxyAppPool: False | Started

Output file written to .\HealthCheck-EX01-2016-20201227132103.txt
Exported Data Object Written to .\HealthCheck-EX01-2016-20201227132103.xml

Скрипт Exchange HealthChecker.ps1 создаст два файла, которые будут сохранены в том же каталоге, где находится скрипт. В данном примере это папка C:\scripts.

  1. TXT-файл: Этот файл содержит такой же вывод, как и отображаемый в PowerShell. Его удобно использовать для отправки по электронной почте или для хранения в документации.
  2. XML-файл: Этот файл можно использовать для более детального анализа. Чтобы просмотреть его в удобном формате, потребуется выполнить дополнительную команду для создания отчета (подробнее об этом см. ниже).

Создание отчета о состоянии одного Exchange сервера


[PS] C:\scripts>.\HealthChecker.ps1 -BuildHtmlServersReport -HtmlReportFile "EX01-2016Report.html"

В каталоге со скриптом будет создан новый файл EX01-2016Report.html. Этот отчет представляет данные в удобном формате для просмотра через браузер.

Откройте отчет о состоянии Exchange EX01-2016Report. В нем вы увидите элементы, выделенные разными цветами:

  • Серый: Информационные данные для справки.
  • Зеленый: Настройки, соответствующие рекомендациям — всё в порядке.
  • Желтый: Настройки с предупреждениями, которые стоит внимательно изучить.
  • Красный: Настройки, которые могут негативно повлиять на производительность.

Особое внимание уделите красным элементам. Они требуют приоритетного решения, так как могут существенно повлиять на работу системы.

Обратите внимание, что большинство рекомендаций из отчета актуальны только для версий Exchange 2013, 2016 и 2019. Хотя скрипт может выполняться на Exchange 2010 и 2007, вывод будет менее информативным и ограниченным.

Если у вас работает несколько серверов Exchange, и вы хотите получить отчет по каждому из них, давайте разберем, как это сделать, на следующем шаге.

Создание отчета о состоянии Exchange для нескольких серверов Exchange

Сформируем отчет о состоянии другого сервера Exchange. В качестве примера рассмотрим сервер EX02-2016.


[PS] C:\scripts>.\HealthChecker.ps1 -Server "EX02-2016"

В результате работы скрипта в папке, где он находится, будут созданы два файла.

Для создания общего отчета о работоспособности Exchange выполните скрипт с параметром -BuildHtmlServersReport. Этот параметр собирает все XML-файлы в папке C:\scripts и генерирует сводный HTML-отчет. Команда будет выглядеть так:


[PS] C:\scripts>.\HealthChecker.ps1 -BuildHtmlServersReport

В результате выполнения команды в папке со скриптом создается новый файл ExchangeAllServersReport.html, который содержит сводный отчет о состоянии всех серверов Exchange, данные которых были собраны из XML-файлов.

Создание отчета о состоянии Exchange для всех серверов Exchange

Альтернативный способ — использовать командлет для создания отчета по всем серверам Exchange. При этом будет сгенерирован HTML-отчет, который откроется автоматически. Для этого выполните следующую команду:


[PS] C:\scripts>Get-ExchangeServer | ?{$_.AdminDisplayVersion -Match "^Version 15"} | .\HealthChecker.ps1; .\HealthChecker.ps1 -BuildHtmlServersReport -HtmlReportFile "ExchangeAllServersReport.html"; .\ExchangeAllServersReport.html

Если отчет не открылся автоматически, вы можете найти его в папке C:\scripts. Файл называется ExchangeAllServersReport.html. Откройте его в любом браузере, чтобы просмотреть сводное состояние серверов Exchange.

Если в отчете все элементы отображаются зеленым, значит система настроена правильно, и дополнительных действий не требуется. Желтые элементы указывают на предупреждения, которые стоит проверить и оценить. Если же в отчете присутствуют красные элементы, обязательно обратите на них внимание и устраните их, так как они могут негативно повлиять на производительность или стабильность Exchange.

Заключение

В этой статье мы рассмотрели, как проверить состояние Exchange Server с помощью скрипта PowerShell HealthChecker.ps1. В сети существует множество других скриптов для проверки работоспособности Exchange, но немногие из них обновляются так регулярно и качественно, как этот.

В мире технологий важно постоянно внедрять новые функции, исправлять ошибки и адаптировать инструменты, чтобы раскрыть полный потенциал программного обеспечения. Именно поэтому я рекомендую использовать HealthChecker.ps1 для проверки состояния Exchange Server. Это мощный и надежный скрипт PowerShell, который обязательно должен быть в вашем арсенале.

Вам понравилась эта статья? Тогда вам, вероятно, будет интересна статья Как при удалении Exchange исправить ошибку «Обнаружена неполная установка».

Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в Телеграмм или Макс, чтобы узнавать обо всем первым!

Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

0 Значки
Вложения (0 / 5)
Поделитесь своим местоположением