Tuesday, December 9, 2025

How to Remove a Specific Package Deployment from a Collection Using PowerShell in Configuration Manager

Removing a Specific Package Deployment from a Collection Using PowerShell

Managing deployments in Microsoft Configuration Manager (SCCM/MECM) is easier and faster when using PowerShell. If you need to remove a package deployment from a specific collection, you can do it with a single command — no console navigation required.


PowerShell Command

To remove a deployment using the package ID and collection name, use:

Remove-CMPackageDeployment -PackageID "XXX" -CollectionName "xxx" -Force

What this does

  • -PackageID specifies the exact package you want to remove.

  • -CollectionName identifies the targeted device or user collection.

  • -Force removes the deployment without prompting for confirmation.


When to Use This Command

This is especially useful when:

  • Cleaning up old or duplicate deployments

  • Updating packages and removing older versions

  • Automating deployment maintenance tasks


Prerequisites

Make sure you:

  • Run PowerShell from the ConfigMgr Console (which loads the proper module)

  • Have permissions to modify deployments in MECM


Summary

With one simple PowerShell command, you can quickly remove a package deployment from a specific collection:

Remove-CMPackageDeployment -PackageID "XXX" -CollectionName "xxx" -Force

This approach saves time, reduces errors, and fits perfectly into automation workflows.

Monday, November 24, 2025

Retrieve All SCCM/MECM Applications That Have No Active Deployments || ConfigMgr

 

Finding Unused SCCM Applications with SQL: A Quick Reporting Query

In every SCCM (Microsoft Endpoint Configuration Manager) environment, unused or unreferenced applications gradually accumulate over time. These unused applications clutter the console, consume storage, and complicate administrative tasks such as audits, cleanup, and migration.

To help identify such applications, here is a SQL query that lists SCCM applications that exist in the environment but are not deployed, not referenced in task sequences, and have no dependent relationships. This report is very useful for cleanup and housekeeping activities.


SQL Query: Identify Unused/Orphaned SCCM Applications

select apps.DisplayName as 'ApplicationName',apps.Description, apps.Softwareversion as 'Version',apps.Manufacturer,apps.createdby, apps.Datelastmodifiedby, pkg.PackageID, CASE pkg.PackageType WHEN 0 THEN 'Package' WHEN 3 THEN 'Driver' WHEN 4 THEN 'TaskSequence' WHEN 5 THEN 'SoftwareUpdate' WHEN 6 THEN 'DeviceSettings' WHEN 7 THEN 'Virtual' WHEN 8 THEN 'Application' WHEN 257 THEN 'Image' WHEN 258 THEN 'BootImage' WHEN 259 THEN 'OSInstall' END AS 'PackageType', apps.NumberOfDeploymentTypes as 'NoofDT', apps.NumberOfDeployments, apps.NumberOfDependentTs from fn_ListLatestApplicationCIs(1033) apps left join v_TaskSequencePackageReferences tspr on tspr.ObjectID = apps.ModelName left join vSMS_ApplicationAssignment ass on ass.AssignedCI_UniqueID = apps.CI_UniqueID left join v_Package pkg on pkg.SecurityKey = apps.ModelName where PackageType = 8 and apps.IsLatest=1 and ass.AssignmentName IS NULL and tspr.PackageID IS NULL and apps.NumberOfDeployments = 0 and apps.NumberOfDependentTs = 0 and apps.IsLatest=1 order by apps.DisplayName

What This Query Does

This SQL query helps you quickly identify SCCM applications that are:

✔ Not deployed to any collection

apps.NumberOfDeployments = 0

✔ Not referenced in any task sequence

tspr.PackageID IS NULL

✔ Not depended on by other task sequences

apps.NumberOfDependentTs = 0

✔ Not assigned to any users or devices

ass.AssignmentName IS NULL

✔ Latest version of the application only

apps.IsLatest = 1

✔ Applications only (not packages, drivers, OS images, etc.)

PackageType = 8

This gives you a clean, filtered list of orphaned or unused applications that can be reviewed for retirement or cleanup.


Columns Returned by the Report

The result includes helpful administrative fields:

  • ApplicationName – Display name of the application

  • Description – App description (if provided)

  • Version – Software version

  • Manufacturer – Vendor or publisher

  • CreatedBy / DateLastModifiedBy – Who created or modified the app

  • PackageID – Package ID associated with the application

  • PackageType – Interpreted using the CASE statement

  • NoofDT – Number of deployment types

  • NumberOfDeployments – Total deployments

  • NumberOfDependentTs – Task sequences that depend on it

These fields help administrators understand the lifecycle and usage of each application.


Why This Report Is Useful

1. Cleanup and Housekeeping

This report helps identify applications that can safely be deleted or reviewed because they are not actively used.

2. Migration Projects

Before migrating to:

  • A new SCCM site

  • Intune

  • A new infrastructure
    This report helps detect unused apps to avoid migrating unnecessary content.

3. Compliance and Inventory

Auditors or admins can verify which apps are actively managed vs. inactive.

4. Environment Optimization

Removing unused apps improves:

  • Console performance

  • Content library organization

  • Storage utilization


How to Run the Query

  1. Open SQL Server Management Studio (SSMS)

  2. Connect to the SCCM site database (e.g., CM_ABC)

  3. Open a new query window

  4. Paste the SQL query

  5. Execute and review the output

How to Pull SCCM Application Content Information Using SQL

 How to pull SCCM application content data using SQL, how to report on SCCM application content through SQL queries: -

Introduction: Why Application Content Reporting Matters

  • In SCCM/MECM environments, applications often contain multiple deployment types and associated content files.

  • Understanding application metadata, deployment technologies, and content size/location is essential for:

    • Application audits

    • Content management and cleanup

    • Migration assessment (SCCM → Intune)

    • Troubleshooting deployment issues

    • Optimizing disk usage on Distribution Points

  • SCCM does not include a built-in report that clearly correlates all this information, so SQL queries become highly useful.


2. Purpose of the SQL Query

Explain what the query is designed to do:

  • Pull a list of all latest SCCM applications.

  • Display their deployment types and priority.

  • Show technology type (MSI, Script, PowerShell, AppX, etc.).

  • Fetch content source (network path or source folder).

  • Retrieve content size from the content library.

  • Provide a single consolidated view of all applications and their content.

This query is popular for application inventory, planning, cleanup, and documentation.


3. SQL Query (Formatted for the Blog)

Select Distinct VApp.Manufacturer, VApp.Displayname, Dts.Displayname As Deploymenttypename, Dts.Priorityinlatestapp, Dts.Technology, V_Contentinfo.Contentsource, V_Contentinfo.Sourcesize From Dbo.Fn_Listdeploymenttypecis(1033) As Dts Inner Join Dbo.Fn_Listlatestapplicationcis(1033) As Vapp On Dts.Appmodelname = App.Modelname Left Outer Join V_Contentinfo On Dt.Contentid = V_Contentinfo.Content_Uniqueid Where (Dts.Islatest = 1)

4. Explanation of Each SCCM SQL Function/Table

▶ fn_ListLatestApplicationCIs (1033)

  • Lists all latest application versions.

  • Key fields:

    • Application Name

    • Manufacturer

    • Model Name (used for joining to deployment types)

▶ fn_ListDeploymentTypeCIs (1033)

  • Returns deployment type CI information.

  • Displays:

    • Deployment Type Name

    • Technology (MSI, Script, etc.)

    • Priority

    • Content ID

▶ V_ContentInfo

  • Correlates deployment types to their content.

  • Shows:

    • Content Source Path

    • Content Size

    • Unique Content ID


5. What the Report Shows

The query returns:

FieldDescription
ManufacturerVendor name (Adobe, Microsoft, etc.)
DisplayNameApplication name
DeploymentTypeNameInstall script, MSI installer, AppX package, etc.
PriorityInLatestAppDT run order
TechnologyMSI, Script, PowerShell, IntuneWin, etc.
ContentSourceOriginal file location used to create the app
SourceSizeTotal size of the application content

This gives admins a complete view of application structure + content details.


6. Use Cases for SCCM Admins

✔ Content Library Cleanup

Identify:

  • Large applications

  • Duplicate content

  • Missing source paths

✔ Application Audit

Get clarity on how applications are built.

✔ Migration Planning

Helpful when moving to:

  • Intune

  • New SCCM infrastructure

  • Application modernization projects

✔ Deployment Troubleshooting

Useful when apps fail because of:

  • Wrong content source

  • Missing files

  • Incorrect deployment type priority

✔ Compliance & Documentation

Generate documentation for audit teams.


7. How to Run the Query in SCCM

Provide steps:

  1. Open SCCM Console

  2. Navigate to Monitoring → Database → SQL Server Views

  3. Open SQL Server Management Studio (SSMS)

  4. Connect to your SCCM site database

  5. Paste the SQL query

  6. Run the query to generate your report

(Optional: include screenshots in your blog.)


8. Enhancing the Report (Optional)

Admins can modify the query to include:

  • App creation date

  • Last updated date

  • User experience details

  • Detection method type

  • Content hash info

  • Distribution status

Mention that these additions depend on needs.


9. Conclusion

Summarize:

  • SCCM does not provide a single built-in report for application + content data.

  • This SQL query provides a clear, detailed overview of:

    • Application metadata

    • Deployment types

    • Technologies

    • Content source

    • Content size

  • Essential for auditing, troubleshooting, and managing application lifecycle.