Monday, November 24, 2025

SCCM/MECM Package cleanup PowerShell automation scripts

 

Title Options

  1. Automating SCCM Package Cleanup with PowerShell: Step-by-Step Script Explained

  2. How to Remove Packages from MECM Automatically Using PowerShell

  3. PowerShell Script to Clean Up SCCM Packages and DP Groups: A Complete Guide

  4. Streamline Your SCCM Environment with This Package Removal Script


SEO Keywords

  • SCCM package cleanup

  • MECM PowerShell scripts

  • Remove-CMContentDistribution

  • SCCM automation

  • MECM package removal

  • Cleanup unused packages in SCCM

  • PowerShell SCCM examples


Meta Description

Learn how to automate SCCM/MECM package cleanup using a PowerShell script. This guide walks you through removing Distribution Point groups, clearing content, and deleting packages from the MECM database.


Automating SCCM/MECM Package Cleanup Using PowerShell

Managing and maintaining a clean Microsoft Endpoint Configuration Manager (MECM/SCCM) environment is essential for performance, disk optimization, and operational efficiency. Over time, unused or outdated packages accumulate in the SCCM database and Distribution Points (DPs), leading to unnecessary clutter.

To help streamline this process, here’s a PowerShell script that automates the cleanup of SCCM packages—removing DP group associations, clearing content distribution, and deleting the package from the MECM database.


Why Automate SCCM Package Cleanup?

Manual cleanup takes time and is prone to errors. Automation helps you:

  • Remove outdated packages quickly

  • Maintain a clean MECM database

  • Eliminate orphaned content on DPs

  • Reduce overhead on administrators

  • Improve overall SCCM environment performance

If you're dealing with a long list of packages, this script can save hours of manual work.


PowerShell Script for SCCM Package Cleanup

Below is the script used for the cleanup operation:

$PKGID=get-content "C:\Cleanup\Package-List.txt" Write-Host "Package removal initiated, Please wait**" -BackgroundColor -DarkMagenta Remove-CMContentDistribution -Packageld $Packageid DistributionPointGroupName "Distribution Point Group1" -Force foreach ($Packageid in $PKGID) { # Removing associated DP's group from the Packages Write-Host "Removing associated DP's group from the Packages:-" -BackgroundColor Gray Remove-CMContentDistribution -Packageld $Packageid -DistributionPointGroupName "Enter the Dp group Name" -Force Remove-CMContentDistribution -PackageId $Packageid -DistributionPointName "Enter the DP Name" -Force Write-Host "$Packageid, Associated DP's group removed" -BackgroundColor Green Write-Host "Please wait... " -BackgroundColor Gray # Removing the Packages from SCCM DB Write-Host "Removing Package from MECM DB......" -BackgroundColor Gray Remove-CMPackage -Id $Packageid -Force Write-Host "Successfully removed PackageID $Packageid from MECM..." -BackgroundColor Green }

How the Script Works

1. Importing the Package List

The script begins by reading a text file that contains a list of Package IDs to remove.

$PKGID=get-content "C:\Cleanup\Package-List.txt"

This allows bulk operations instead of manually entering each package.


2. Initial Cleanup Message

A simple status message notifies the admin that the removal process has started.

Write-Host "Package removal initiated, Please wait**"

3. Removing Content Distribution

Before a package can be removed, you must clear it from Distribution Point Groups or individual DPs.

Remove-CMContentDistribution -PackageId $Packageid -DistributionPointGroupName "Distribution Point Group1" -Force

4. Looping Through Each Package

The script iterates through every Package ID in the input file:

foreach ($Packageid in $PKGID)

Inside this loop, it performs:

a. Removing DP Group associations

Remove-CMContentDistribution -PackageId $Packageid -DistributionPointGroupName "Enter the Dp group Name" -Force

b. Removing DP-specific content

Remove-CMContentDistribution -PackageId $Packageid -DistributionPointName "Enter the DP Name" -Force

5. Removing Packages from MECM Database

Once DP cleanup is complete, the script deletes the package entirely from MECM:

Remove-CMPackage -Id $Packageid -Force

This ensures a clean database without orphaned references.


Benefits of This Script

  • Time-saving: Removes hundreds of packages in minutes

  • Prevents human error: Avoids accidental deletion of wrong packages

  • Keeps DPs clean: Ensures no leftover content remains

  • Improves SCCM performance: Reduced clutter leads to faster operations

  • Fully automated: Run it once, and it handles everything


Important Notes Before Running

✔ Ensure you have appropriate SCCM permissions
✔ Test in a LAB environment
✔ Backup package info before bulk deletion
✔ Verify Distribution Point names and DP group names
✔ Ensure the path to the package list file is correct


Conclusion

A clean and optimized SCCM/MECM environment ensures smoother deployments and fewer system issues. This PowerShell script greatly simplifies the package cleanup process by automating removal from Distribution Points and the MECM database.

If you manage large-scale SCCM infrastructures, automating repetitive cleanup tasks like this can significantly reduce administrative overhead and improve overall environment health.

No comments: