Running Actions Based on #ConfigMgr Status Filter Rules with #PowerShell

Here is an example of running a custom action when an Application is deployed (based on status filter rule).

Save this script as “C:\Scripts\StatusFilter\NoSecretDeployments.ps1”

#status filter variables: http://technet.microsoft.com/en-us/library/bb693758.aspx
#New Deployment of Application
#Source: SMS Provider
#Message ID: 30226
#Run Command (combine the next three lines, replace the # with a space:
#C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
#-command "& {c:\scripts\statusfilter\nosecretdeployments.ps1
#-computername '%msgsys' -msgdesc '%msgdesc'}"

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True)]
   [string]$ComputerName,

  [Parameter(Mandatory=$True)]
   [string]$MSGDesc,

   [Parameter()]
   [string]$AdditionalInfo
)

function write-log ($string)
{
    $string + " " + (get-date) `
    | Out-File C:\scripts\StatusFilter\NoSecretDeployments.log -Append
}

write-log ("Source " + $ComputerName)
write-log ($MSGDesc)

Now create a new application, and observe NoSecretDeployments.log in c:\scripts\statusfilter. You can also debug the execution by reviewing statmgr.log:

NewDeploymentOfApps_SFR_3

In this example, you see how we can easily write the information to a log file. You can take this basic example, and leverage the Send-MailMessage cmdlet so that the script automatically notifies a distribution list each time an application deployment is created.

Learn more about Status Filter Rules: http://technet.microsoft.com/en-us/library/cc181208.aspx

Learn more about command-line parameters for Status Filter Rules: http://technet.microsoft.com/en-us/library/bb693758.aspx

 

Happy Scripting!

 

Greg