Stefan Stranger's Weblog - Manage your IT Infrastructure

"People are strange when you're a stranger" (The Doors) Link to my personal Lifestream

June, 2008

  • Overrides in separate management packs

    I saw this question in one of our internal maillists and I sometimes also get the question why you aren’t able to select another MP than the one where the custom monitor has been saved.


    Why is this and is there a way to place them in a separate MP?


    This is happening because the monitors are defined in an unsealed MP. When you create an override for a monitor and store it into a separate MP, under the covers there is a reference created from the override MP to the MP which defined the monitor. There can only be references created to sealed MPs. In order to create overrides in a separate MP, you need to first seal the MP which contains the monitor.

  • Goaaaal! MPViewer with export to Excel

    Source: Boris Yanusholsky

    Update:  I found that the that the MPViewer export to HTML functionality didn’t work with the latest version of the E12 MP (Silect MPStudio Lite also has an issue with this MP when you want to document this MP). This was caused by a bug in MPViewer and Boris corrected it ;-) He also added some more minor features such as frequency for performance monitors as well breaking out the monitors by type (unit, dependency, aggregate).

    Download new version on blogpost.

    We (the Dutch) are still in the Euro Soccer Championship as you can see in the subject ;-) But this is what I always wanted to see in the MPviewer and now Boris added exporting to Excel!


    Read for more info on source.

  • OpsMgr Lineage Explorer

    Source: SCOMNIVORE

    Thanks to Rod Trent I found this tool called OpsMgr Lineage Explorer from Vin DiPippo.


    This tool allows you to explore the lineage of OpsMgr MP elements. This tool loads your OpsMgr environment from the database and then allows you to inspect the class types, relationship types, and module types installed.  It allows you to expand them to see their lineage (either their parentage for class types and relationship types or in the case of module types, their composition tree down to the underlying native or managed modules).

    Download and read more on source.

  • Updated OpsMgr Toolbox

    Today I updated the OpsMgr Toolbox with the latest version of the Module Explorer v2 from Boris Yanushpolsky. He added another view which instead groups modules by the MP in which the module is defined. This should help in some scenarios where you just want to find a particular module and see its settings and configuration.


    I wished I was a programmer too ;-) Maybe soon more on this “I’m not a programmer” topic. Because I’ve been busy with trying to create a new OpsMgr Connector for my own learning experiences. Did you know you can even find a small program I’ve written in Delphi on Sourceforge for a opensource monitoring tool?

  • Infrastructure Planning and Design Guides - Now in Beta!

    System Center Virtual Machine Manager 2008; System Center Operations Manager 2007; Microsoft Internet Information Services 7.0

    We are pleased to announce that the Infrastructure Planning and Design (IPD) Beta has been updated! We have added the System Center Virtual Machine Manager 2008, System Center Operations Manager 2007, and Microsoft Internet Information Services 7.0 guides to our beta. Beta members can download the content now.

    If you aren't currently an IPD beta member, follow the instructions below or visit the Infrastructure Planning and Design Website.
    Infrastructure Planning and Design streamlines the planning process by:

    • Defining the technical decision flow through the planning process.
    • Listing the decisions to be made and the commonly available options and considerations.
    • Relating the decisions and options to the business in terms of cost, complexity, and other characteristics.
    • Framing decisions in terms of additional questions to the business to ensure a comprehensive alignment with the appropriate business landscape.

    Join the Beta

    Additional Infrastructure Planning and Design series guides are available as beta releases on the Connect Web site. They are open beta downloads. See below for instructions on how to access the beta guides.
    To join the Infrastructure Planning and Design Beta, follow these steps:

    1. Visit the Infrastructure Planning and Design Beta on the Microsoft Connect Web site.
    2. Sign in using a valid Windows Live ID to continue to the Invitations page.
    3. Scroll down to Infrastructure Planning and Design.
    If you have not previously registered with Microsoft Connect, you might be required to register before continuing with the invitation process.
    If the link in step 1 does not work for you, copy the link and paste it into the Web browser address bar.
  • MP Guide Library complete

    Source: Jeanie Decker

    The guides for Windows operating systems and technologies and the guides for server products are all online now.

    Read more on source.

  • OpsMgr 2007 Event 21402

    A colleague of mine Dirk van Coeverden has written an excellent article about troubleshooting OpsMgr 2007 Event 21402. With this article you can see how you can use the Workflow name from the Event details to trace which rule/discovery/monitor is causing the error.


    This article describes how to troubleshoot OpsMgr 2007 Event 21402, which indicates a script error or warning. However the article is intended to be an example for other events, since a lot of details are also in other events (like Workflow name).

            Event Type: Warning
            Event Source: Health Service Modules
            Event ID: 21402
                    Forced to terminate the following process started 
                    at 12:08:50 PM because it ran past the configured 
                    timeout 120 seconds.

    With this article you will find

    • The discovery, monitor or rule which causes the event
    • Retrieve the script content in a SQL table (limited by SQL2005 Studio)
    • How it looks in XML and understand the workflow

    The query to find the discovery, monitor or rule should work for every event where the workflow name is listed. The script content is more specific to 21402 but might give an impression on how to retrieve content from an XML columns (of NVARCHAR type).

    The queries aren't tested for performance, so the best course is to import the MP of the customer in your test environment and run them on your own machine.


    21402 details

    An example of 21402 is

            Event Type: Warning
            Event Source: Health Service Modules
            Event Category: None
            Event ID: 21402
            Date: 7-4-2008
            Time: 4:05:34
            User: N/A
            Computer: server01
            Forced to terminate the following process started at 
            04:05:04 because it ran past the configured timeout 30 
            Command executed: "C:\WINDOWS\system32
            \cscript.exe" /nologo "C:\Program Files\System Center 
            Operations Manager 2007\Health Service State\Monitoring Host 
            Temporary Files 297\177
            Working Directory: C:\Program Files\System Center Operations 
            Manager 2007\Health Service State\Monitoring Host Temporary 
            Files 297\177\ 
            One or more workflows were affected by this.  
            Workflow name: Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineName_does_not_match_computer_name.rule 
            Instance name: 
            Instance ID: {3B3FA6E2-BB6B-CD49-274A-8722250C3D0C} 
            Management group: OpsMgrdemo
            For more information, see Help and Support Center at 

    Important Event Elements

    Command Executed:

    "C:\WINDOWS\system32cscript.exe" /nologo "C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 297\177\CheckVirtualMachineNameMatchComputerName.vbs"

    Working Directory:

    C:\Program Files\System Center Operations Manager 2007\Health Service State\Monitoring Host Temporary Files 297\177\





    Which discovery monitor or rule?

    To find out which discovery monitor or rule the script belongs to run the following SQL script (based on the example event above) on the OperationsManager database.

     DECLARE @ObjectName NVARCHAR(256)
     SET @ObjectName = 'Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineName_does_not_match_computer_name.rule'
     IF EXISTS (SELECT 1 FROM DiscoveryView WITH (NOLOCK) WHERE Name = @ObjectName) 
                    'Discovery' As 'Object Type',
                    d.DisplayName AS 'Displayname in Console',
                    d.Name AS 'Internal Monitor Name',
                    d.Id AS 'MonitorId',
                    p.Displayname AS 'ManagementPack',
                    p.Version AS 'ManagementPack Version',
                    p.Name AS 'Management Pack Library Name'
            FROM DiscoveryView d WITH (NOLOCK)
            INNER JOIN ManagementPackView p WITH (NOLOCK) ON d.ManagementPackId = p.Id
            WHERE d.Name = @ObjectName
     ELSE IF EXISTS (SELECT 1 FROM MonitorView WITH (NOLOCK) WHERE Name = @ObjectName) 
                    'Monitor' AS 'Object Type',
                    m.DisplayName AS 'Displayname in Console',
                    m.Name AS 'Internal Monitor Name',
                    m.Id AS 'MonitorId',
                    p.Displayname AS 'ManagementPack',
                    p.Version AS 'ManagementPack Version',
                    p.Name AS 'Management Pack Library Name'
            FROM MonitorView m WITH (NOLOCK) 
            INNER JOIN ManagementPackView p WITH (NOLOCK) ON m.ManagementPackId = p.Id
            WHERE m.Name = @ObjectName
     ELSE IF EXISTS (SELECT 1 FROM RuleView WITH (NOLOCK) WHERE Name = @ObjectName) 
                    'Rule' AS 'Object Type',
                    r.DisplayName AS 'Displayname in Console',
                    r.Name AS 'Internal Rule Name',
                    r.Id AS 'RuleId',
                    p.Displayname AS 'ManagementPack',
                    p.Version AS 'ManagementPack Version',
                    p.Name AS 'Management Pack Library Name'
            FROM RuleView r WITH (NOLOCK) 
            INNER JOIN ManagementPackView p WITH (NOLOCK) ON r.ManagementPackId = p.Id
            WHERE r.Name = @ObjectName

    This will give the following results

    Object Type Displayname_in_Console Internal Rule Name RuleId ManagementPack ManagementPack Version Management Pack Library Name
    Rule Virtual Machine: Virtual machine name does not match computer name Microsoft.Virtualization.VirtualServer.2005R2. VirtualMachineName.rule E465679D-BC55-C4D3-FEF0-C108DF37DFD9 Microsoft Virtual Server 2005 R2 1.0.2627.0 Microsoft.Virtualization.VirtualServer.2005R2

    In the OpsMgr Console / Authoring you can find the Discovery, Monitor or Rule (depending on Object Type) in Management Pack Objects.

    Retrieve the script content

    To retrieve the script you can run the following SQL query on the OperationsManager database.

     FROM (        
                     Script.Col.value('(Name/text())[1]', 'NVARCHAR(128)') AS ScriptName,
                     Script.Col.value('(Contents/text())[1]', 'NVARCHAR(MAX)') AS ScriptFile
             FROM (SELECT ManagementPackId, CONVERT(XML, MPXML) AS MPXMLFormat, MPName FROM ManagementPack) p 
             CROSS APPLY p.MPXMLFormat.nodes('//File') Script(Col)
             WHERE p.MPName LIKE '%2005R2%') s
     WHERE s.ScriptName = 'CheckVirtualMachineNameMatchComputerName.vbs'

    Take note that SQL 2005 Studio has a limit of (about) 8000 char for its return results. Also since the MPXML field of the ManagementPack table is not of type XML but NVARCHAR, the formatting isn't really fancy. However it might give you a quick impression of what the script is about.

    If people find this a useful query, I can work out one which gives a nice formatted output of the script content.

    In XML

    If you want to see how it is build up and configured in XML than

    • Export MP (Powershell Export-ManagementPack)
    • In .xml search for <Rule ID="Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineName_does_not_match_computer_name.rule"

    This looks like

           <Rule ID="Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineName_does_not_match_computer_name.rule" Enabled="true" Target="Windows! Microsoft.Windows.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
               <DataSource ID="DS" TypeID="Microsoft.Virtualization.VirtualServer.2005R2.CheckVirtualMachineName">
                           <XPathQuery Type="String">Property[@Name='IsVirtualMachine']</XPathQuery>
                           <Value Type="String">True</Value>

    Here you find all the properties of the (in this case) the rule. Actually you can read the workflow of this object here. One part of the workflow is the Databasource ModuleType

     <DataSource ID="DS" TypeID="Microsoft.Virtualization.VirtualServer.2005R2.CheckVirtualMachineName">

    This points to the ModulesType part of the XML file

           <DataSourceModuleType ID="Microsoft.Virtualization.VirtualServer.2005R2.VirtualServerVirtualMachineDiscovery" Accessibility="Internal" Batching="false">
           <DataSourceModuleType ID="Microsoft.Virtualization.VirtualServer.2005R2.RelVirtualMachineComputerDiscovery" Accessibility="Internal" Batching="false">
           <DataSourceModuleType ID="Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineComputerDiscovery" Accessibility="Internal" Batching="false">
           <DataSourceModuleType ID="Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachineState" Accessibility="Internal" Batching="false">
           <DataSourceModuleType ID="Microsoft.Virtualization.VirtualServer.2005R2.CheckVirtualMachineName" Accessibility="Internal" Batching="false">
              <xsd:element name="IntervalInSeconds" type="xsd:integer" xmlns:xsd="" />
              <xsd:element name="Expression" type="ExpressionType" xmlns:xsd="" />
              <OverrideableParameter ID="IntervalInSeconds" Selector="$Config/IntervalInSeconds$" ParameterType="int" />

    Here you will find the Module itself which is executed

                   <DataSource ID="DS" TypeID="System!System.CommandExecuterPropertyBagSource">
                     <WorkingDirectory />
                     <CommandLine>/nologo $file/CheckVirtualMachineNameMatchComputerName.vbs$</CommandLine>
     ' Copyright (c) Microsoft Corporation. All rights reserved.
     ' VBScript source code
     ' CheckVirtualMachineNameMatchComputerName.vbs
     ' Arg 0 : SourceID
     Option Explicit 
     Const StrVMMManagementGroupInstallationRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Setup\InstallPath"
     Const StrVirtualServerRegKey = "HKLM\System\CurrentControlSet\Services\Virtual Server\Start"
     Const StrVMMServerInstallationRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Setup\InstallPath"
     Const StrVMMServerVersionRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Setup\ProductVersion"
     Const StrVMMSelfServiceServerInstallationRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Self-Service  Portal\Setup\InstallPath"
     Const StrVMMSSsiteEngineMachineRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Self-Service  Portal\Settings\VmmServerName"
     Const StrVMMDatabaseServerRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Settings\Sql\OnRemoteServer"
     Const StrVMMDatabaseNameRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Settings\Sql\DatabaseName"
     Const StrVMMDatabaseInstanceRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Server\Settings\Sql\InstanceName"
     Const StrVMMRemoteDatabaseMachineFQDNRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007  Server\Settings\Sql\MachineFQDN"
     Const StrVMMConsoleInstallationRegKey = "HKLM\SOFTWARE\Microsoft\Microsoft System Center Virtual Machine Manager 2007 Administrator Console\Setup\InstallPath"
     Const StrVMNameRegKey = "HKLM\SOFTWARE\Microsoft\Virtual Machine\Guest\Parameters\VirtualMachineName"
     Const StrWebsitDisplayName = "Microsoft System Center Virtual Machine Manager 2007 Self-Service Portal"
     Const StrSQLServerDefaultInstance = "MSSQLSERVER"
     Const StrEmpty = ""
     Const StrFolderSeparator = "\"
     Const StrLocationHost = "Host"
     Const StrLocationLibrary = "Library"
     ' Method:       ReadRegistry
     ' Description:  This function read the regiestry, return true if the registry exit; otherwise return false
     Function ReadRegistry(ByVal regString, ByRef regValue)
         Dim bHasRegistry
         Dim oReg
         Set oReg = CreateObject("WScript.Shell")   
         On Error Resume Next    
         regValue = oReg.RegRead(regString)
         If Err.number &lt;> 0 Then
             bHasRegistry = False
             bHasRegistry = True
         End If
         On Error Goto 0 
         ReadRegistry = bHasRegistry
     End Function 
     Call Main()
  • Savision ready for Microsoft Teched Orlando

    Today I got an email from Douwe and Dennis from Savision with their first impression on TechEd Orlando. There are ready to show their product so if you have some time visit their booth.


    I really like their Dutch orange jackets ;-) Did you know the Dutch won from Italy yesterday with 3 – 0 in the European Football Championship?

  • New System Center Branding

    The System Center products have a new logo.



    Check out the Microsoft System Center Home Page

  • New version of System Center Content Search Gadget

    Chris Scoville has created a new version of the System Center Content Gadget. This is one of the best tools I’ve been using for OpsMgr and other System Center tools. I’ve added it to my OpsMgr Toolbox article.


    • New System Center branding in the UI.
    • When you select a specific product in the settings/options for the gadget, the UI will now reflect what product you selected.
    • Fixed a bug that people with slow internet connections were seeing (the search results pane would not load correctly when there was a slow internet connection).  Now, users will see the flyout pane and the words “Loading…” in the search box while the search results are gathered.
    • Now, when you click the X to close the results pane, the whole flyout pane will also close.
    • When System Center DPM is selected from the settings, the results will contain a tab for DPM 2007 and DPM 2006 on Technet (previously it was just DPM on TechNet with no separate for the versions).
    • When “All System Center products” is selected in the settings (the default setting), the following tabs will be available on the results pane:
    • TechNet, MSDN,, Downloads, Videos/Media, Webcasts, Blogs, Forums, Microsoft Learning, and Web.  The Web tab allows you to search the entire web.

    Go download the latest version.

    Great work from Chris Scoville!

  • Microsoft Product Support Lifecycle for MOM 2005

    Now OpsMgr 2007  is released for almost a year you may want to know what the Product Support Lifecycle for MOM 2005 is.

    Those of you who are not familiar, the Microsoft Support Lifecycle is the set of policies that governs the length of support for all Microsoft products.  Or, as described by our website, "provides consistent and predictable guidelines for product support availability when a product releases and throughout that product’s life".  The Microsoft Support Lifecycle website is the authoritative source for information on the policy.  There is also a blog site where you can find info on Microsoft Support Lifecycle.

    Still interested in the MOM 2005 Support Lifecycle? Click here.

  • Sysinternals tools are now available via a Live service

    Source: Doug Finke and Marc van Orsouw

    The Sysinternals tools are now accessible using a direct UNC link ( \\\Tools\ ), so if your in need of a Sysinternals tool and you have an internet connection you can just type :

    CD  \\\Tools\

    And all the tools are at your disposal :


    If you added a new function to my $profile just like Doug.

    function sysinternals {CD  \\\Tools\}

    How cool is this? You can just run Procmon on every machine with an internet connection without having to install the program!! Great for troubleshooting...