scomskills > blog

never mind the theory, feel the data.

Monitor Percent Memory Used

I’ve seen this in the forums quite a bit, so I felt I should write a pack that monitor for Windows % memory used. I basically just took the script from the Windows packs, that claims (in the script comments) to work across all base Windows OS’s, and plugged it into a data source. Then [...]

Find base class, hosting class, and all properties using powershell

A few years ago, I wrote a powershell script that returns the entire base and host class path for a given class, including all available properties on each of the classes. This can be useful in a few different scenarios, including management pack development. I haven’t used the script in a while, but the other [...]

Automate management packs using powershell

I’ve been asked on a few occasions to automate management packs. Unfortunately, there isn’t much information about how to do to do this using Powershell in the MSDN development kit. I am providing a couple Powershell functions you can add to your automation process that will generate a new management pack. Just update the output [...]

Is ComputerName really an option?

I was creating a custom event data source module today, using the Microsoft.Windows.BaseEventProvider, and ran into a problem. After importing the pack into the management group, I saw these events on all targeted agents. Log Name:      Operations Manager Source:        HealthService Date:          5/15/2014 4:38:34 PM Event ID:      4511 Task Category: Health Service Level:         Error Keywords:      Classic [...]

Best Practices–Logging Script Events

Scripts are a part of monitoring, and those scripts sometimes may fail for any number of reasons. When a monitoring script fails, it is essential to capture those failures. In this post, I will briefly go over two types of events that every management pack developer should consider for script-based modules.   Exception Event These [...]

Grey Agents With Reason (gray agents)

A few years ago I wrote some TSQL to return all grey agents with the reason code. This worked fine in SCOM 2007, but it doesn’t work in 2012 environments for some reason. I basically just modified the WHERE clause, removing a bunch of SELECT statements – I’m not sure why I added those additional [...]

Agent Management–List Primary and Failover Configuration

Something I don’t like about using the SDK (powershell) to manage agents, are the get* member cmdlet’s to return information – large scale queries take too long! The SDK is typically pretty slow in this regard, and that’s a shame because I find myself writing TSQL to accomplish tasks that the SDK should be able [...]

New MatchCount Configuration in SCOM 2012

I’ve been meaning to write about this for a while, because I was thrilled when I found this new configuration element in the expression filter module when SCOM 2012 hit the press. For reference, here are the differences in the expression filters: SCOM 2007: SCOM 2012: Previously, the System.ExpressionFilter did not include suppression [...]

Report Fragment–Visual Studio Authoring Extensions

Developing reports in SCOM is quite a bit different than developing any type of monitoring workflow. You really need to ramp up your skills on a couple different tools and languages to become a good report developer. In this post, I will cover a typical VSAE fragment that provides for deploying the report and stored [...]

Best Practices – Display Names

Hello everyone! In this addition to the best practices category I will discuss the entity display name. These articles are essentially free thinking to paper – not to diminish the the message, as these are a culmination of my experiences over the years. Think of it as a brain dump of learning experiences that have [...]

Best Practices – Targeting Introduction

Hello everyone! I recently started a best practices category on my blog – use the category selector to view the entire collection. In this article I will discuss “targeting”. This is intended to be an introduction, because there are many different aspects in SCOM where targeting needs to be considered. Note: Check back if you [...]

Best Practices – Namespace

Hello everyone! I recently started a best practices category on my blog – use the category selector to view the entire collection. In this article I will discuss namespaces in SCOM and things you should consider when developing monitoring packs. Note: Check back if you find yourself thinking about this stuff later, because I may [...]

Best Practices – Introduction #scom

Hello everyone! I’m starting a best practices category on my blog today – use the category selector to see the entire collection. I’m doing this because I want to engage a thought process with a paradigm on considerations and decision-making – the foundation of operational management and supportability. This is in contrast to the typical [...]

Just pushed a huge update to scomskills > projects

Can you take 30 seconds to check it out and let me know what you think? By the way, I’m trying twitterfeed for the first time, so I apologize in advance if you see an ‘out of order’ update from me. List of updates: user registration and sign in with OpenID and Google, Twitter Bootstrap [...]

New site launched: scomskills > projects (search v1 is ready)

Hello there, System Center community! This is an announcement of a new site that was launched today. The three main objectives of this site are to: provide interactive tools and information to the System Center community, serve as a development platform in order to share ideas and learn new things, and highlight some of [...]

This is HUGE!

If you have tried to reach the SCOMskills blog over the past day, you would have seen the maintenance and redirect page. That’s because there has been a lot of changes happening on the back-end, but everything should be running fine now. Here’s what has happened over the past couple days: SCOMskills website moved, redesigned, [...]

Management Pack Documentation

I’ve known about this site for years, but it seems not a lot of others have knowledge of it. It’s a great resource for loads of management pack documentation. They publish information about discoveries, monitors, rules, classes, knowledge (maml), everything! They even have a nice service and health model diagram for each management pack, as [...]

Get Recursive Group Membership

Sometimes it is necessary to not only return a list of objects contained in a group, but also return all or specific objects nested in a group at different levels. For this we can leverage a built-in store procedure that is in your Operations Manager Data Warehouse. This procedure is used under the hood for [...]

Event Description Pattern Matching (with minimal impact)

One thing to think about when authoring rules and monitors is performance, and Windows event monitoring is no exception. If you need to search for a string in an event description, and if said event description is not parameterized, this post is for you. You could add this logic while creating a rule in the [...]

Computer and Instance Group Fragments in VSAE

I’m updating my Technet posts about creating groups in the R2 Authoring Console. Here are the same examples using the Visual Studio Authoring Extensions. You can add these as templates to your fragment library for use in future development projects.   How to create a computer group using VSAE   Original post: How to create [...]

Dependency Monitor

If you’ve been following the series, you should have two classes and a unit monitor. As discussed earlier in the series, the base class types used are Local Application and Application Component, and these do not automatically rollup health to its hosting class. If you want unit monitors targeting the application component class to rollup [...]

Two-State Event Detection

This fragment demonstrates how you can use one of the built-in, two-state Windows event modules to compose a unit monitor. This fragment is the next example in the VSAE Fragment category; the xml fragment below should work as described if you have been following the series. Module Type used in this post: Microsoft.Windows.2SingleEventLog2StateMonitorType Scenario Change [...]

Timed Script Discovery (vbscript part 2)

Referring back to the previous VSAE Fragment post regarding the Windows Timed Script Discovery Provider, you can see this module can be implemented directly in a new discovery. In most cases, this works very well. In some cases, you may want to create a custom discovery provider in order to expose configuration elements as separate [...]

Logical Disk Free Space monitor doesn’t cookdown

I haven’t looked at the internals of this monitor in a long time. But recently I was working on a modified disk free space monitoring solution for a customer, and to my surprise uncovered the fact that the built-in logical disk space monitor in the Windows management packs do not utilize cookdown. This had changed [...]

Health Explorer – Scope is only unhealthy child monitors

This is misleading, as it’s only true sometimes. Let me show you a clear example with pictures.   The examples below can be reproduced with OpsMgr 2012 SP1 by opening Health Explorer for the Windows Computer object. Example 1 Two unhealthy instances; one critical and the other warning. Health Explorer default behavior Instance in warning [...]

The Unleashed book is…well, UNLEASHED!

When I was asked to contribute to this book, I didn’t hesitate at the opportunity to be a part of what is considered to be the most comprehensive technical resource for System Center engineers and enthusiasts around the world. This is the first official publication I’ve been involved in, and am proud to have had [...]

Namespace prefix ‘maml’ is not defined

If you include knowledge articles in your management pack and fail to reference the maml schema, you’ll see this error during build time.   Error      80           Namespace prefix ‘maml’ is not defined     It’s a very easy fix. Simply add the highlighted below to the management pack fragment and build away. <ManagementPackFragment SchemaVersion="2.0" xmlns:xsd="" [...]

Dual-Home Unix/Linux Agent (multi-home)

I ran into this request recently, but couldn’t find any official documentation on this. I’m sure this information is out there somewhere, but figured it’s a 2 minute post so here it is. Turns out it’s actually quite easy, as long as you have your certificates lined up. You’ll need to have all SCX certificates [...]

Timed Script Discovery (vbscript)

AKA: Microsoft.Windows.TimedScript.DiscoveryProvider If you are following these VSAE Fragment posts in order, you’ll see they are tied together in the same example management pack. This fragment demonstrates the timed script discovery provider, and discovers the application component class discussed in the previous post. What does it do? This discovery uses a script to read a [...]

Microsoft Windows Application Component class type

AKA: Microsoft.Windows.ApplicationComponent Here is another post in the VSAE Fragment category, building on the Microsoft Windows Local Application class in the previous example. This is another common class type to use while authoring a custom management pack, as discuss here. Use this class to discover components hosted on your custom Local Application class. This could [...]

Filtered Registry Discovery Provider

AKA: Microsoft.Windows.FilteredRegistryDiscoveryProvider This is the third post in the new VSAE Fragment category. The provider is used to discover a class type and its properties by reading keys and values from the Windows registry. What does it do? This particular fragment can be used to discover the class type discuss here. It demonstrates how to [...]

Microsoft Windows Local Application class type

AKA: Microsoft.Windows.LocalApplication This is the second post in the new VSAE Fragment category. The purpose of these types of posts is to provide a practical demonstration of how to create your own fragment library. I find this useful in management pack authoring, because it’s much easier to add and modify an existing fragment than to [...]

Visual Studio Authoring Extensions – Fragments, fragments, fragments!

All management pack authoring I do is by using fragments. In my opinion, fragments are the most flexible authoring element in the VSAE, as they offer full visibility into the XML code and the ability to create a library of useful fragments that can later be reused in other management packs. I’m kicking off a [...]

Create a Group of Health Service Watcher Objects Using VSAE

Plenty of bloggers have written about creating groups of health service watcher objects. The purpose of these types of groups is primarily for notification subscriptions. The reason why we need to include Health Service Watcher objects in our subscription criteria is so recipients also receive notifications about Health Service Heartbeat Failures and Computer Not Reachable [...]

Install SCOM Agent on Red Hat Enterprise Linux 6 (linux agent installation)

This is a step-by-step article on installing the OpsMgr agent on a RHEL6 system, both from an OpsMgr and Linux administrator perspective. Everything in this demonstration assumes a new installation of RHEL6 with no additional configuration. It is also assumed there are no firewalls between the OpsMgr management servers and the RHEL system. Windows Firewall [...]

Output list of scripts contained in a management pack

I was perusing my library of powershell scripts today and stumbled across this neat little gem. I do not recall writing it, so probably cannot take the credit. But I wanted to post it here in case anyone else can make use of it. If the original author is here, please raise your hand! $xml [...]

Query SQL Server using Powershell

Just provide the required parameters to query your SQL Server. $dbConnection: FQDN[,Port] $dbName: database name Param([string]$dbConnection, [string]$dbName) function QuerySqlDatabase {     # Setup the SQL connection     $connection = new-object"Data Source=$dbConnection;Initial Catalog=$dbName;Integrated Security=SSPI;");     # Define TSQL     [string]$query =                 "                 your SQL statement here                 "         # Create the [...]

Starting a Fragment Library using Visual Studio Authoring Extensions

Started using Visual Studio Authoring Extensions recently for all MP authoring, and leaving the Authoring Console behind since it is no longer supported. I still can’t get used to the templates that are included with VSAE, so I like to create empty management pack fragments. I do this in order to create a library of [...]

Detected malicious verification code when verifying element

Quick post here. Hopefully you find this before spending an hour on it like I did. It ended up being a typo in a write action type id. Basically, it simply came down to changing this: <WriteAction ID=”WA” TypeID=”MyMp.MyWriteActin”> To this: <WriteAction ID=”WA” TypeID=”MyMp.MyWriteAction”> Lesson learned – be careful when authoring XML directly and use [...]


I updated my getClassPath script to work with OpsMgr 2012 cmdlet’s. Original OpsMgr 2007 script is here: #begin ##This script accepts a class name, and returns the entire ##Base class path. It also returns Host Class for each ##Base class returned. Essentially, you’ll see the entire ##class path for the given class. ##Jonathan Almquist [...]

Data warehouse configuration failed to install

Had a problem today installing an additional management server using the installation wizard. Installation stopped and rolled back at the Data Warehouse Configuration step (Data warehouse configuration failed to install). I didn’t see anything too unusual in the logs, so it was a bit confusing. I asked Boklyn Wong (MCS) to check into the problem, [...]

Switch Management Group in Command Shell

New-SCOMManagementGroupConnection <management server fqdn> Get-SCOMManagementGroupConnection -ManagementGroupName <mg name> | Set-SCOMManagementGroupConnection

Troubleshooting network device discovery–snmputil

  One of the first things you might want check while troubleshooting network device discovery in OpsMgr 2012 is to verify whether the network discovery server can connect to to the SNMP agent on the device. There are a few reasons why a network discovery server cannot connect to the device via SNMP, and one [...]

Service Principal Name Configuration Status – SQL Server cannot authenticate using Kerberos

Marnix did a post on this a while back, but I wanted to supplement what he wrote with some additional information. If your SQL Service account exists in another domain, this monitor will not work because line 597 of the data source script queries LDAP instead of GC. Set oRootDse = GetObject(“LDAP://RootDSE”) should be Set [...]

Having fun with

I’m working on a new page here.  This is just me testing out some hobby web authoring and imaging experience. All comments and suggestions are welcome.

List of all current SCOM management pack guides

If you’ve ever dealt with, then you know how frustrating it can be to find the latest management pack and guide.  So, I was elated when I found this url.  I hope these pages are updated for years to come.

Health Service Heartbeat Failure

I’ve seen plenty of questions come up in the forums and from customers regarding the Health Service Heartbeat Failure monitor, and its associated diagnostics and recoveries. I spent a little time digging further into these workflows and thought I’d share what I found here. Hope this helps those curious about what’s happening under the hood. [...]


There’s a lot of confusion about SPN’s (service principal name) when it comes to OpsMgr. How are SPN’s registered? When are SPN’s registered? Why aren’t SPN’s registering? The purpose of this post is to give a snapshot of all the SPN’s that should be in your environment so you know you’ve get them all right. [...]

SCOM–seal a management pack

Sealing a Management Pack is easy. Although, it can be frustrating the first time through. It’s a process that requires a few different pieces to interact, so preparation is key. Going through some simple steps now will save time in the future. Create a directory somewhere on a workstation where you’ll be sealing MP’s. For [...]

How to Create a Simple Dashboard in Service Level Dashboard

  In this example, we’ll create a dashboard that show health of all critical disks for Application X. Create group Create dashboard by adding SLO’s Scope to group Create SLO’s Disk Space SLO Disk Queue Length SLO Disk Seconds Per Transfer SLO Results

Previous Posts