PowerShell script for SCCM (System Center Configuration Manager) cleanup activities:
# Specify the SCCM site code
$SiteCode = "PS1"
# Set the site server name
$SiteServer = "SCCMSERVER01"
# Connect to the SCCM site server
$Site = [Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine]::Connect("$SiteServer\$SiteCode")
# Delete expired client records
$ExpiredClients = Get-WmiObject -Namespace "root\sms\site_$SiteCode" -Class "SMS_R_System" -Filter "Client = 0 AND LastMPServerName = '$SiteServer' AND DATEDIFF(dd, LastDDR, GETDATE()) > 90"
foreach ($ExpiredClient in $ExpiredClients) {
$Site.DeleteObject($ExpiredClient)
}
# Delete obsolete packages
$ObsoletePackages = $Site.GetObsoleteUpdates()
foreach ($ObsoletePackage in $ObsoletePackages) {
$Site.DeleteObject($ObsoletePackage)
}
# Delete obsolete advertisements
$ObsoleteAdvertisements = $Site.GetObsoleteAdvertisements()
foreach ($ObsoleteAdvertisement in $ObsoleteAdvertisements) {
$Site.DeleteObject($ObsoleteAdvertisement)
}
# Delete obsolete collections
$ObsoleteCollections = $Site.GetObsoleteCollections()
foreach ($ObsoleteCollection in $ObsoleteCollections) {
$Site.DeleteObject($ObsoleteCollection)
}
# Delete obsolete software metering rules
$ObsoleteSoftwareMeteringRules = $Site.GetObsoleteSoftwareMeteringRules()
foreach ($ObsoleteSoftwareMeteringRule in $ObsoleteSoftwareMeteringRules) {
$Site.DeleteObject($ObsoleteSoftwareMeteringRule)
}
# Delete obsolete status messages
$ObsoleteStatusMessages = $Site.GetObsoleteStatusMessages()
foreach ($ObsoleteStatusMessage in $ObsoleteStatusMessages) {
$Site.DeleteObject($ObsoleteStatusMessage)
}
# Disconnect from the SCCM site server
$Site = $null
This script connects to the SCCM site server, then performs a series of cleanup activities including deleting expired client records, obsolete packages, advertisements, collections, software metering rules, and status messages. It's important to note that this is just an example script and may need to be customized to meet the specific needs of your organization.