Client Health Summary Report

This report is a PowerShell script that dynamically generates an overview of client health in your Configuration Manager environment and sends it as an html-styled email. It is intended to be run as a scheduled task to give regular visibility and to help identify any issues. It can be used in conjunction with my Excel-based Configuration Manager Client Health Report, which gives more detailed information.



The script can be downloaded from here.


The script has no command-line parameters to make it easier to run as a scheduled task, however there are some parameters which you need to set in the Parameters region of the code (at the top).

Database Info

Enter your Configuration Manager SQL server name (and Instance name if applicable), and your ConfigMgr database name.

Email Info

These are the emails parameters such as To, From etc.

Reporting Thresholds

The report calculates certain client health indicators as a percentage and displays this in a kind of progress bar to give easy visibility. The colour of the progress bar is determined by the thresholds. The default thresholds are:

90% + | Green | Good

80% – 90% | Amber | Warning

Below 80% | Red | Potential Problem!

In addition, there are separate thresholds defined for Hardware Inventory, Software Inventory and Heartbeat (DDR) health status, as the values here may require some adjustment based on your own environment.  These are the defaults:

85% + | Green | Good

70% – 85% | Amber | Warning

Below 70% | Red | Potential Problem!

Adjust these thresholds as you need in the Parameters code region.

Client Health Indicators

The following indicators of client health are used in the report:

Discovered Systems with Client Installed

All discovered systems in your environment that have the ConfigMgr client installed.

Active Clients

All active ConfigMgr clients. The active status is determined by the evaluation periods set in your Client Status Settings in ConfigMgr.

Active Clients Health Evaluation

Active clients that have passed their built-in client health evaluation.

Active Clients Heartbeat (DDR)

Active Clients that are active for heartbeat discovery.

Active Clients Hardware Inventory

Active Clients that are active for hardware inventory data.

Active Clients Software Inventory

Active Clients that are active for software inventory data.

Active Clients Policy Request

Active Clients that are active for a policy request.

Client Versions

The list of client versions for active systems including the count and percentage.

Systems with No Client

Discovered systems that do not have the ConfigMgr client installed. The list includes those where a Windows or other operating system has been detected, and those that have a last logon timestamp within the last 7 days, indicating activity.

Windows Client Installation Failures

Windows systems where the ConfigMgr client has failed to install. This can be for various reasons so they are grouped together by error code and description. A high number of “the network name cannot be found” errors may indicate that many of these discovered systems are not actually active on the network. Some systems report error code 0 (success) but if they are included in this list then the client is not actually installed and functioning.

Computers Not Rebooted

Active systems grouped by the last bootup time. Not all active systems may be present in this list, but most of them should be. The last bootup time is taken from the current hardware inventory data for the system in the database.

Computers that are not being rebooted regularly will sooner or later have issues, especially with Software Update compliance reporting, where many software updates are not considered installed until the system has been restarted.

Client Status Settings

These are the Client Status Settings as defined in your Configuration Manager console. These thresholds are used by ConfigMgr to determine client activity / inactivity.

Running as a Scheduled Task

To run as a scheduled task, use a command like the following in the task:

Powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File “<path>\New-CMClientHealthSummaryReport.ps1”