OpsMgr: Using a Scriptblock in a PowerShell Monitor Created in the Ops Console

The sample management pack that provides a wizard to create PowerShell script based monitors in the Operations Console was recently updated with the ability to specify script parameters and to apply an Override to modify the script parameter value for the custom PowerShell based monitor that it can create.
For more information, check out my earlier post: New Sample Wizard to Create PowerShell Monitors in the Ops Console

This sample management pack can be downloaded from the TechNet Gallery.


Mr. Ken Hamilton posted a comment in my previous post providing a PowerUser Tip on how to get around the single overrideable parameter limit using a delimited string and a Scriptblock. This is a brilliant idea as multiple variable-value pairs can be assigned to $Arguments as a  ";" delimited string and then convert that into variables within the script with a single command using a PowerShell Scriptblock. 
  

The picture below shows how this can be done by assigning the $Argument variable to a Scriptblock and using the call operator "." to run it and create the variables.
   
image      
     

The picture below demonstrates how this idea can be applied to a PowerShell-based monitor that uses the script parameters feature and created from the custom wizard.

The failing condition for the monitor is when the length of the string value of $ResultStr (which is a combination of values of all the variables created from the Scriptblock) exceeds 3 characters. If this condition is met, change the monitor state to Critical/Warning, else monitor state is Healthy):
   
image

Here is the state change as a result of the total length of the string value of $ResultStr exceeds the threshold of 3 characters. 
As shown below, the output string (in the MessageText PropertyBag) is a combination of values of all the variables created from the “;” delimited string specified in the Parameters page of the monitor configuration, and retrieved from the $Argument variable as a parameter in the script.

   
image
    
    
    
The picture below demonstrates how an override can be applied to the monitor for the a specific object to override the Arguments parameter with a different “;” delimited string value on the Override page:
    
image

       

As a result, the new monitor state change shows that the new output string (in the MessageText PropertyBag) is a combination of values of all the variables created from the “;” delimited string specified in the Overrides page of the monitor for the specific object, and is different from the string specified in the monitor configuration.


 image
    
   
    
    
Thanks for sharing this Ken !

 

Disclaimer:
All information on this blog is provided on an as-is basis with no warranties and for informational purposes only. Use at your own risk. The opinions and views expressed in this blog are those of the author and do not necessarily state or reflect those of my employer.