How To: Enable the “Suppress Program Notifications” Checkbox for all Programs in a Package

In a previous post, I wrote how to enable the “Suppress Program Notifications” Checkbox for Program Properties for all programs in your environment. By request, in this post we’re going to modify the script slightly to modify all programs for one package, given the PackageID.

#Select all programs for one package
#(Update MySiteServer and LAB with your ConfigMgr Server name and Site code, and PackageID with a valid packageID)
$prgs = get-wmiobject sms_program -computername MySiteServer -namespace root\sms\site_LAB -filter "PackageID='LAB0023C'"
$prgs | foreach {
#ProgramFlags are a lazy property, so make explicit call.
$prg = [wmi] $_.__Path
if ($prg.ProgramFlags -band ([math]::pow(2,10)))
{
# Suppress already enabled
}
else
{
# Not suppressed - display programname and packageID
$prg.Programname + "`t" + $prg.PackageiD
# flip the programflags bit to enable suppression
$prg.ProgramFlags = $prg.ProgramFlags -bor ([math]::pow(2,10))
# use Put to save changes
$prg.put()
}
#rinse and repeat
}

The only change we had to make was to add the filter command to the get-wmiobject cmdlet. -filter “PackageID=’LAB0023C'”

 Read more about SMS_Program and ProgramFlags.

Greg

Unknown's avatarAbout Greg Ramsey
Greg Ramsey is a Senior Distinguished Engineer for Dell Digital - Services. He has a B.S. in Computer Sciences and Engineering from The Ohio State University and has co-authored many books over the years. Greg is also a board member of the Northwest System Center User Group and the Midwest Management Summit. ​Greg has been a Microsoft Endpoint Manager (ConfigMgr, Intune) MVP for over 18 years.

Leave a comment