SCCM Client Health Monitor Script

Description

The SCCM Client Health Monitor Script is a Powershell script which fixes common issues related to SCCM client health.

The script is currently capable of fixing following issues:

  • SCCM client stuck in Provisioning Mode
  • Corrupt Group Policy files (Registry.pol)
  • BITS transfers with errors
  • SCCM client service not running
    • SCCM client service disabled
  • No SCCM client installed

Further to fixing the mentioned issues, the script also supports sending an e-mail or a status to Microsoft Teams if any issues are found. All actions are logged to a local log file: SCCM-ClientHealthMonitor.log in the CCM\Logs folder.

Examples

.\SCCM-ClientHealthMonitor.ps1 -TestProvMode -TestGPOFiles

This will run tests and try to fix issues related to provisioning mode and corrupt group policy files.

.\SCCM-ClientHealthMonitor.ps1 -TestSCCMClient -InstallSCCMClient

This will test for a running ccmexec service and try to start the service if it’s not running. If the service doesn’t exists, the script will try to install the SCCM client.

.\SCCM-ClientHealthMonitor.ps1 -TestProvMode -TestGPOFiles -TestBITS -TestSCCMClient -InstallSCCMClient -EmailStatus -TeamsStatus

This will run the script with all available options.

E-mail

The e-mail being sent with the -EmailStatus parameter looks like below example.

Microsoft Teams

The status messages being sent with the -TeamsStatus parameter will look like below examples.

Logging

The SCCM-ClientHealthMonitor.log file will look like below example when opened with CMtrace.

Requirements

  • The script requires local administrative rights to run
  • Modify the script. I have made a comment with # EDIT here the places that needs editing
    • Modify the -EmailStatus part with your own details such as SMTP server, recipient etc.
    • Modify the -TeamsStatus part with your own details such as URL for webhook, title, text etc.
    • Modify the Install-SCCMClient function with MP and site code details

Running the Script

The best option to run the script, is to do so with a scheduled task.

  • Running as SYSTEM
  • Trigger: Running at log on of any user
  • Action: Starting powershell.exe with argument: -ExecutionPolicy Bypass -File “\\ServerShare\SCCM-ClientHealthMonitor.ps1” -TestProvMode -TestGPOFiles -TestBITS -TestSCCMClient -InstallSCCMClient -EmailStatus -TeamsStatus

Version history

  • 1.0 – Script created
  • 2.0 – Added TestBITS, TestSCCMClient and InstallSCCMClient
  • 3.0 – Added TeamsStatus, making the script able to send status notifications to Microsoft Teams
  • 3.1 – Minor changes to $ComputerModel as well as added more commenting

Download

https://gallery.technet.microsoft.com/SCCM-Client-Health-Monitor-b1189130

Need Help?

I haven’t done the best commenting job in the script itself, so please let me know in the comment section down below if you need any assistance. 🙂

And of course, it goes without saying, but test this thoroughly before putting to use in production.

Also, if you are looking for more details on how to prepare Microsoft Teams for receiving notifications, please take a look at this great post by Michael Mardahl: https://www.scconfigmgr.com/2019/07/10/how-to-notify-a-microsoft-teams-channel-when-a-new-windows-device-has-enrolled-in-microsoft-intune/

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.