<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Gowdhaman Karthikeyan's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/gk_blog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/gk_blog/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 06:20:04 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Windows Automatic Services Monitoring using SCOM</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/windows-automatic-services-monitoring-using-scom</link>
      <pubDate>Mon, 01 Feb 2016 01:34:24 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2016/02/01/windows-automatic-services-monitoring-using-scom/</guid>
      <description><![CDATA[Monitoring services in windows computers is available out of box in SCOM through Service Monitoring...]]></description>
      <content:encoded><![CDATA[<p align="justify">Monitoring services in windows computers is available out of box in SCOM through Service Monitoring Template. But in a large enterprise with over 1000s of windows computers and 100s of applications, it is difficult to list out all services that needs to be monitored in each computer and create monitoring using template. Consider monitoring on average 30 services in 1000 computers would result on 30,000 instances added to SCOM DB. This will create numerous classes, discoveries and cause bloating of instance space which will make SCOM less responsive.</p> <p align="justify">Also, we cannot create a monitor for each service and target it across all computers as each service may be present on bunch of computers and not on others. Thus targeting unanimously will result in false alarms and again, we may need 30+ windows service monitors targeted to all windows computers which will create overhead on agents and thus on the computers running the agent.</p> <p align="justify"><strong><u>So, What is the solution?</u></strong></p> <p align="justify">Optimal solution would be creating a single rule to monitor all automatic services in each computer and alert on those which are not running. This can be accomplished using Powershell script with property bag output. </p> <p align="justify">The rule runs on each computer at specific time interval, creates property bags for each service which is set to automatic but not running and an alert is generated for each property bag. </p> <p align="justify">A catch to note in this monitoring scenario is not to alert on services that are stopped only for a moment. To overcome the issue, we will use consolidator condition. So only if the service is failed for ‘n’ consecutive samples, we will alert.</p> <p align="justify">This solution, though optimal pose another challenge – What if we do not want to monitor a service which is set to automatic in one or few of computers. </p> <p align="justify">This can be handled using a centrally located file with details of service and the computers to be excluded from monitoring.</p> <p align="justify">We will see how to construct the Management Pack XML to accomplish this. You can also create MP using Visual Studio, MP Studio or Authoring Console.</p> <p align="justify"><strong><u>Step 1:</u></strong></p> <p align="justify">Add references to the Management pack.</p> <p></p> <p></p> <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:83a6c2cc-48db-4868-b4f0-2dec852b596d" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:650px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#0000FF">&lt;</span><span style="color:#800000">ManagementPack </span><span style="color:#FF0000">ContentReadable</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> xmlns:xsd</span><span style="color:#0000FF">=&quot;https://www.w3.org/2001/XMLSchema&quot;</span><span style="color:#FF0000"> xmlns:xsl</span><span style="color:#0000FF">=&quot;https://www.w3.org/1999/XSL/Transform&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Manifest</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Identity</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab.Windows.Automatic.Service.Monitoring</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">1.0.0.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Identity</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">References</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;SC&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.SystemCenter.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">6.1.7221.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Windows&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.Windows.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">6.1.7221.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Health&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Health.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">6.1.7221.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;System&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">25</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">26</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">6.1.7221.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">27</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">28</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">29</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Performance&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">30</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Performance.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">31</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">6.1.7221.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">32</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">33</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">34</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">References</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">35</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Manifest</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>
<p></p>
<p><strong><u>Step 2:</u></strong></p>
<p align="justify">Now create a Powershell property bag probe script. The Powershell script fetches list for all services that are set to start automatic and checks for the current status. For each service that are set to Automatic but not running, a property bag is created. </p>
<p align="justify">To exclude some services from being monitored, a centrally located CSV file is used and the path of file is passed as parameter to the script. The script reads list of services to be excluded from monitoring from CSV file and compares it with the list of services in the target computer. The property bag for excludes services are not created.</p>
<p></p>
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:f6813727-e256-4c17-9e65-bf57e1cc516f" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:619px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#0000FF">param</span><span style="color:#000000"> (
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    [string] </span><span style="color:#800080">$excludeservicelist</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">)
</span><span style="color:#008080"> 4</span> <span style="color:#000000"></span><span style="color:#0000FF">if</span><span style="color:#000000"> (test</span><span style="color:#000000">-</span><span style="color:#000000">path </span><span style="color:#800080">$excludeservicelist</span><span style="color:#000000">) {
</span><span style="color:#008080"> 5</span> <span style="color:#000000">write</span><span style="color:#000000">-</span><span style="color:#000000">eventlog </span><span style="color:#000000">-</span><span style="color:#000000">logname </span><span style="color:#800000">&quot;</span><span style="color:#800000">Operations Manager</span><span style="color:#800000">&quot;</span><span style="color:#000000"> </span><span style="color:#000000">-</span><span style="color:#000000">Source </span><span style="color:#800000">&quot;</span><span style="color:#800000">Health Service Script</span><span style="color:#800000">&quot;</span><span style="color:#000000"> </span><span style="color:#000000">-</span><span style="color:#000000">EventID </span><span style="color:#000000">776</span><span style="color:#000000"> </span><span style="color:#000000">-</span><span style="color:#000000">Message </span><span style="color:#800000">&quot;</span><span style="color:#800000">WindowsAutomaticServiceMonitoring.ps1 - Accessing Exclusion List CSV</span><span style="color:#800000">&quot;</span><span style="color:#000000"> </span><span style="color:#000000">-</span><span style="color:#000000">EntryType Information
</span><span style="color:#008080"> 6</span> <span style="color:#000000">    </span><span style="color:#800080">$contents</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> Import</span><span style="color:#000000">-</span><span style="color:#000000">Csv </span><span style="color:#800080">$excludeservicelist</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">}
</span><span style="color:#008080"> 8</span> <span style="color:#000000"></span><span style="color:#800080">$TargetComputer</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> hostname
</span><span style="color:#008080"> 9</span> <span style="color:#000000"></span><span style="color:#800080">$api</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> New</span><span style="color:#000000">-</span><span style="color:#000000">Object </span><span style="color:#000000">-</span><span style="color:#000000">comObject &#039;MOM.ScriptAPI&#039;
</span><span style="color:#008080">10</span> <span style="color:#000000"></span><span style="color:#800080">$auto_services</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> Get</span><span style="color:#000000">-</span><span style="color:#000000">WmiObject </span><span style="color:#000000">-</span><span style="color:#000000">Class Win32_Service </span><span style="color:#000000">-</span><span style="color:#0000FF">Filter</span><span style="color:#000000"> </span><span style="color:#800000">&quot;</span><span style="color:#800000">StartMode=&#039;Auto&#039;</span><span style="color:#800000">&quot;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000"></span><span style="color:#0000FF">foreach</span><span style="color:#000000"> (</span><span style="color:#800080">$service</span><span style="color:#000000"> </span><span style="color:#0000FF">in</span><span style="color:#000000"> </span><span style="color:#800080">$auto_services</span><span style="color:#000000">)
</span><span style="color:#008080">12</span> <span style="color:#000000">{
</span><span style="color:#008080">13</span> <span style="color:#000000">    </span><span style="color:#800080">$isExcluded</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#000000">0</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">    </span><span style="color:#800080">$state</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800080">$service</span><span style="color:#000000">.state
</span><span style="color:#008080">15</span> <span style="color:#000000">    </span><span style="color:#800080">$name</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800080">$service</span><span style="color:#000000">.DisplayName
</span><span style="color:#008080">16</span> <span style="color:#000000">    </span><span style="color:#0000FF">If</span><span style="color:#000000"> (</span><span style="color:#800080">$Contents</span><span style="color:#000000">){
</span><span style="color:#008080">17</span> <span style="color:#000000">        </span><span style="color:#800080">$contents</span><span style="color:#000000"> </span><span style="color:#000000">|</span><span style="color:#000000"> </span><span style="color:#0000FF">ForEach</span><span style="color:#000000">-</span><span style="color:#000000">Object{
</span><span style="color:#008080">18</span> <span style="color:#000000">            </span><span style="color:#800080">$ExcludeServiceDisplayName</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800080">$_</span><span style="color:#000000">.ServiceToExclude
</span><span style="color:#008080">19</span> <span style="color:#000000">            </span><span style="color:#800080">$ExcludeComputerName</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800080">$_</span><span style="color:#000000">.ComputersToExclude
</span><span style="color:#008080">20</span> <span style="color:#000000">            </span><span style="color:#0000FF">if</span><span style="color:#000000"> ((</span><span style="color:#800080">$name</span><span style="color:#000000"> </span><span style="color:#008080">-match</span><span style="color:#000000"> </span><span style="color:#800080">$ExcludeServiceDisplayName</span><span style="color:#000000">) </span><span style="color:#008080">-and</span><span style="color:#000000"> ((</span><span style="color:#800080">$TargetComputer</span><span style="color:#000000"> </span><span style="color:#008080">-match</span><span style="color:#000000"> </span><span style="color:#800080">$ExcludeComputerName</span><span style="color:#000000">) </span><span style="color:#008080">-or</span><span style="color:#000000"> (</span><span style="color:#800080">$ExcludeComputerName</span><span style="color:#000000"> </span><span style="color:#008080">-match</span><span style="color:#000000"> </span><span style="color:#800000">&quot;</span><span style="color:#800000">ALL_COMPUTERS</span><span style="color:#800000">&quot;</span><span style="color:#000000">))){
</span><span style="color:#008080">21</span> <span style="color:#000000">                </span><span style="color:#800080">$isExcluded</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#000000">1</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">                </span><span style="color:#008000">#</span><span style="color:#008000">write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 777 -Message &quot;WindowsAutomaticServiceMonitoring.ps1 - Excluded Service Name - $ExcludeServiceDisplayName, Excluded Computer Name - $ExcludeComputerName&quot; -EntryType Information</span><span style="color:#008000">
</span><span style="color:#008080">23</span> <span style="color:#008000"></span><span style="color:#000000">            }
</span><span style="color:#008080">24</span> <span style="color:#000000">        }
</span><span style="color:#008080">25</span> <span style="color:#000000">    }
</span><span style="color:#008080">26</span> <span style="color:#000000">    </span><span style="color:#0000FF">if</span><span style="color:#000000"> ((</span><span style="color:#800080">$isExcluded</span><span style="color:#000000"> </span><span style="color:#008080">-eq</span><span style="color:#000000"> </span><span style="color:#000000">0</span><span style="color:#000000">) </span><span style="color:#008080">-and</span><span style="color:#000000"> (</span><span style="color:#800080">$state</span><span style="color:#000000"> </span><span style="color:#008080">-eq</span><span style="color:#000000"> </span><span style="color:#800000">&quot;</span><span style="color:#800000">Stopped</span><span style="color:#800000">&quot;</span><span style="color:#000000">)){
</span><span style="color:#008080">27</span> <span style="color:#000000">        </span><span style="color:#008000">#</span><span style="color:#008000">write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 778 -Message &quot;WindowsAutomaticServiceMonitoring.ps1 - Windows Service set to Automatic but Not Running - $name&quot; -EntryType Information</span><span style="color:#008000">
</span><span style="color:#008080">28</span> <span style="color:#008000"></span><span style="color:#000000">        </span><span style="color:#800080">$bag</span><span style="color:#000000"> </span><span style="color:#000000">=</span><span style="color:#000000"> </span><span style="color:#800080">$api</span><span style="color:#000000">.CreatePropertyBag()    
</span><span style="color:#008080">29</span> <span style="color:#000000">        </span><span style="color:#800080">$bag</span><span style="color:#000000">.AddValue(</span><span style="color:#800000">&quot;</span><span style="color:#800000">ServiceName</span><span style="color:#800000">&quot;</span><span style="color:#000000">, </span><span style="color:#800080">$name</span><span style="color:#000000">)
</span><span style="color:#008080">30</span> <span style="color:#000000">        </span><span style="color:#800080">$bag</span><span style="color:#000000">.AddValue(</span><span style="color:#800000">&quot;</span><span style="color:#800000">Status</span><span style="color:#800000">&quot;</span><span style="color:#000000">, </span><span style="color:#800080">$state</span><span style="color:#000000">)
</span><span style="color:#008080">31</span> <span style="color:#000000">        </span><span style="color:#800080">$bag</span><span style="color:#000000">
</span><span style="color:#008080">32</span> <span style="color:#000000">    }
</span><span style="color:#008080">33</span> <span style="color:#000000">}</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div><strong><u>Step 3:</u></strong> 
<p></p>
<p>Create a data source module incorporating the above written Powershell script. We will use consolidator condition as discussed in solution part to alert only on valid service failures.</p>
<p></p>
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:f5ff531d-e163-4865-b930-d7d5ca604cb2" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:650px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">TypeDefinitions</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ModuleTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DataSourceModuleType </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;GKLab.Windows.Auto.Service.Monitoring.DataSource&quot;</span><span style="color:#FF0000"> Accessibility</span><span style="color:#0000FF">=&quot;Internal&quot;</span><span style="color:#FF0000"> Batching</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Configuration</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;ExcludeServiceList&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:string&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;IntervalSeconds&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:integer&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;ConsolidationInterval&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:integer&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;Count&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:integer&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Configuration</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameter </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;IntervalSeconds&quot;</span><span style="color:#FF0000"> Selector</span><span style="color:#0000FF">=&quot;$Config/IntervalSeconds$&quot;</span><span style="color:#FF0000"> ParameterType</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameter </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Count&quot;</span><span style="color:#FF0000"> Selector</span><span style="color:#0000FF">=&quot;$Config/Count$&quot;</span><span style="color:#FF0000"> ParameterType</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameter </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;ConsolidationInterval&quot;</span><span style="color:#FF0000"> Selector</span><span style="color:#0000FF">=&quot;$Config/ConsolidationInterval$&quot;</span><span style="color:#FF0000"> ParameterType</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">OverrideableParameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ModuleImplementation </span><span style="color:#FF0000">Isolation</span><span style="color:#0000FF">=&quot;Any&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Composite</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">MemberModules</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DataSource </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Trigger&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;System!System.SimpleScheduler&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/IntervalSeconds$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">00:00</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DataSource</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ProbeAction </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Probe&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;Windows!Microsoft.Windows.PowerShellPropertyBagProbe&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ScriptName</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">WindowsAutomaticServicesMonitoring.ps1</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ScriptName</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ScriptBody</span><span style="color:#0000FF">&gt;</span><span style="color:#0000FF">&lt;![CDATA[</span><span style="color:#808080">
</span><span style="color:#008080">25</span> <span style="color:#808080">param (
</span><span style="color:#008080">26</span> <span style="color:#808080">    [string] $excludeservicelist
</span><span style="color:#008080">27</span> <span style="color:#808080">)
</span><span style="color:#008080">28</span> <span style="color:#808080">if (test-path $excludeservicelist) {
</span><span style="color:#008080">29</span> <span style="color:#808080">write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 776 -Message &quot;WindowsAutomaticServiceMonitoring.ps1 - Accessing Exclusion List CSV&quot; -EntryType Information
</span><span style="color:#008080">30</span> <span style="color:#808080">    $contents = Import-Csv $excludeservicelist
</span><span style="color:#008080">31</span> <span style="color:#808080">}
</span><span style="color:#008080">32</span> <span style="color:#808080">$TargetComputer = hostname
</span><span style="color:#008080">33</span> <span style="color:#808080">$api = New-Object -comObject &#039;MOM.ScriptAPI&#039;
</span><span style="color:#008080">34</span> <span style="color:#808080">$auto_services = Get-WmiObject -Class Win32_Service -Filter &quot;StartMode=&#039;Auto&#039;&quot;
</span><span style="color:#008080">35</span> <span style="color:#808080">foreach ($service in $auto_services)
</span><span style="color:#008080">36</span> <span style="color:#808080">{
</span><span style="color:#008080">37</span> <span style="color:#808080">    $isExcluded = 0
</span><span style="color:#008080">38</span> <span style="color:#808080">    $state = $service.state
</span><span style="color:#008080">39</span> <span style="color:#808080">    $name = $service.DisplayName
</span><span style="color:#008080">40</span> <span style="color:#808080">    If ($Contents){
</span><span style="color:#008080">41</span> <span style="color:#808080">        $contents | ForEach-Object{
</span><span style="color:#008080">42</span> <span style="color:#808080">            $ExcludeServiceDisplayName = $_.ServiceToExclude
</span><span style="color:#008080">43</span> <span style="color:#808080">            $ExcludeComputerName = $_.ComputersToExclude
</span><span style="color:#008080">44</span> <span style="color:#808080">            if (($name -match $ExcludeServiceDisplayName) -and (($TargetComputer -match $ExcludeComputerName) -or ($ExcludeComputerName -match &quot;ALL_COMPUTERS&quot;))){
</span><span style="color:#008080">45</span> <span style="color:#808080">                $isExcluded = 1
</span><span style="color:#008080">46</span> <span style="color:#808080">                write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 777 -Message &quot;WindowsAutomaticServiceMonitoring.ps1 - Excluded Service Name - $ExcludeServiceDisplayName, Excluded Computer Name - $ExcludeComputerName&quot; -EntryType Information
</span><span style="color:#008080">47</span> <span style="color:#808080">            }
</span><span style="color:#008080">48</span> <span style="color:#808080">        }
</span><span style="color:#008080">49</span> <span style="color:#808080">    }
</span><span style="color:#008080">50</span> <span style="color:#808080">    if (($isExcluded -eq 0) -and ($state -eq &quot;Stopped&quot;)){
</span><span style="color:#008080">51</span> <span style="color:#808080">        write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 778 -Message &quot;WindowsAutomaticServiceMonitoring.ps1 - Windows Service set to Automatic but Not Running - $name&quot; -EntryType Information
</span><span style="color:#008080">52</span> <span style="color:#808080">        $bag = $api.CreatePropertyBag()    
</span><span style="color:#008080">53</span> <span style="color:#808080">        $bag.AddValue(&quot;ServiceName&quot;, $name)
</span><span style="color:#008080">54</span> <span style="color:#808080">        $bag.AddValue(&quot;Status&quot;, $state)
</span><span style="color:#008080">55</span> <span style="color:#808080">        $bag
</span><span style="color:#008080">56</span> <span style="color:#808080">    }
</span><span style="color:#008080">57</span> <span style="color:#808080">}
</span><span style="color:#008080">58</span> <span style="color:#808080">             </span><span style="color:#0000FF">]]&gt;</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ScriptBody</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">59</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">60</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">61</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">ExcludeServiceList</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">62</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/ExcludeServiceList$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">63</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">64</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">65</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">TimeoutSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">300</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">TimeoutSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">66</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ProbeAction</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">67</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ConditionDetection </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Consolidator&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;System!System.ConsolidatorCondition&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">68</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Consolidator</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">69</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ConsolidationProperties</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">70</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PropertyXPathQuery</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Target/Property[Type=&quot;Windows!Microsoft.Windows.Computer&quot;]/PrincipalName$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PropertyXPathQuery</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">71</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PropertyXPathQuery</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Property[@Name=&#039;ServiceName&#039;]</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PropertyXPathQuery</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">72</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ConsolidationProperties</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">73</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">TimeControl</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">74</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">WithinTimeSchedule</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">75</span> <span style="color:#000000">                      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Interval</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/ConsolidationInterval$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Interval</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">76</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">WithinTimeSchedule</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">77</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">TimeControl</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">78</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">CountingCondition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">79</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Count</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/Count$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Count</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">80</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">CountMode</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">OnNewItemTestOutputRestart_OnTimerSlideByOne</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">CountMode</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">81</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">CountingCondition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">82</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Consolidator</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">83</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ConditionDetection</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">84</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">MemberModules</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">85</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Composition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">86</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Node </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Consolidator&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">87</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Node </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Probe&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">88</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Node </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Trigger&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">89</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Node</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">90</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Node</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">91</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Composition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">92</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Composite</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">93</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ModuleImplementation</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">94</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OutputType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System!System.ConsolidatorData</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">OutputType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">95</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DataSourceModuleType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">96</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ModuleTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">97</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">TypeDefinitions</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>
<p></p>
<p><strong><u>Step 4:</u></strong></p>
<p>Next we will create a rule using the data source. Below configuration needs to be customized according to the need. </p>
<p>ExcludeServiceList – the UNC path for the excluded services list file (in CSV format). Sample CSV provided below.</p>
<p>CSV has two headers- “ServiceToExclude” which is display name of service.</p>
<p>ComputersToExclude – NetBIOS Name of computer. If two or more computers, it can be specified as individual entry or using regular expression syntax. If need to exclude in all computers, the value should be “ALL_Computers”</p>
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:80867ee8-e2da-4531-86b1-958a8dc30f88" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:110px;background-color:Silver;overflow:scroll"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080">1</span> <span style="color:#000000">ServiceToExclude,ComputersToExclude
</span><span style="color:#008080">2</span> <span style="color:#000000">Distributed Transaction Coordinator,SCOM2012R2
</span><span style="color:#008080">3</span> <span style="color:#000000">Windows Audio,Win2k12-DC
</span><span style="color:#008080">4</span> <span style="color:#000000">Remote Registry,ALL_Computers
</span><span style="color:#008080">5</span> <span style="color:#000000">Software Protection,SCOM2012R2|Win2k12-DC</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>
<p>IntervalSeconds – Polling Interval in Seconds</p>
<p>Count – Number of polls, the service should fail to alert. (Minimum 2)</p>
<p>ConsolidationInterval – The interval time within which the service status fails ‘n’ number of times to generate alert.&nbsp; (Minimum value = (n-1) * IntervalSeconds where n = count)</p>
<p></p>
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:07314a17-a7bf-4df2-bc06-e4997c1e6c32" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:556px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">  &lt;Monitoring</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    &lt;Rules</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      &lt;Rule ID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule</span><span style="color:#800000">&quot;</span><span style="color:#000000"> Enabled</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">true</span><span style="color:#800000">&quot;</span><span style="color:#000000"> Target</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Windows!Microsoft.Windows.Computer</span><span style="color:#800000">&quot;</span><span style="color:#000000"> ConfirmDelivery</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">true</span><span style="color:#800000">&quot;</span><span style="color:#000000"> Remotable</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">true</span><span style="color:#800000">&quot;</span><span style="color:#000000"> Priority</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Normal</span><span style="color:#800000">&quot;</span><span style="color:#000000"> DiscardLevel</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">100</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">        &lt;Category</span><span style="color:#000000">&gt;</span><span style="color:#000000">Alert&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Category</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">        &lt;DataSources</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">          &lt;DataSource ID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">DS</span><span style="color:#800000">&quot;</span><span style="color:#000000"> TypeID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.Auto.Service.Monitoring.DataSource</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">            &lt;ExcludeServiceList</span><span style="color:#000000">&gt;</span><span style="color:#000000">\\SCOM2012R2\Configs\WindowsAutomaticServiceMonitoringExclusionList.csv&lt;</span><span style="color:#000000">/</span><span style="color:#000000">ExcludeServiceList</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">            &lt;IntervalSeconds</span><span style="color:#000000">&gt;</span><span style="color:#000000">300</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">IntervalSeconds</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">            &lt;ConsolidationInterval</span><span style="color:#000000">&gt;</span><span style="color:#000000">600</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">ConsolidationInterval</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">            &lt;Count</span><span style="color:#000000">&gt;</span><span style="color:#000000">2</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Count</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">          &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DataSource</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DataSources</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">        &lt;WriteActions</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">          &lt;WriteAction ID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Alert</span><span style="color:#800000">&quot;</span><span style="color:#000000"> TypeID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Health!System.Health.GenerateAlert</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">            &lt;Priority</span><span style="color:#000000">&gt;</span><span style="color:#000000">1</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Priority</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">            &lt;Severity</span><span style="color:#000000">&gt;</span><span style="color:#000000">2</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Severity</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">            &lt;AlertMessageId</span><span style="color:#000000">&gt;</span><span style="color:#800080">$MPElement</span><span style="color:#000000">[Name</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule.AlertMessage</span><span style="color:#800000">&quot;</span><span style="color:#000000">]</span><span style="color:#000000">$</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">AlertMessageId</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">            &lt;AlertParameters</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">              &lt;AlertParameter1</span><span style="color:#000000">&gt;</span><span style="color:#800080">$Data</span><span style="color:#000000">/</span><span style="color:#000000">Context</span><span style="color:#000000">/</span><span style="color:#000000">DataItem</span><span style="color:#000000">/</span><span style="color:#000000">Property[</span><span style="color:#000000">@</span><span style="color:#000000">Name</span><span style="color:#000000">=</span><span style="color:#000000">&#039;ServiceName&#039;]</span><span style="color:#000000">$</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">AlertParameter1</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">            &lt;</span><span style="color:#000000">/</span><span style="color:#000000">AlertParameters</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">            &lt;Suppression</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">              &lt;SuppressionValue</span><span style="color:#000000">&gt;</span><span style="color:#800080">$Target</span><span style="color:#000000">/</span><span style="color:#000000">Property[Type</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Windows!Microsoft.Windows.Computer</span><span style="color:#800000">&quot;</span><span style="color:#000000">]</span><span style="color:#000000">/</span><span style="color:#000000">PrincipalName</span><span style="color:#000000">$</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">SuppressionValue</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">              &lt;SuppressionValue</span><span style="color:#000000">&gt;</span><span style="color:#800080">$Data</span><span style="color:#000000">/</span><span style="color:#000000">Context</span><span style="color:#000000">/</span><span style="color:#000000">DataItem</span><span style="color:#000000">/</span><span style="color:#000000">Property[</span><span style="color:#000000">@</span><span style="color:#000000">Name</span><span style="color:#000000">=</span><span style="color:#000000">&#039;ServiceName&#039;]</span><span style="color:#000000">$</span><span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">SuppressionValue</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">            &lt;</span><span style="color:#000000">/</span><span style="color:#000000">Suppression</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">25</span> <span style="color:#000000">          &lt;</span><span style="color:#000000">/</span><span style="color:#000000">WriteAction</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">26</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">WriteActions</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">27</span> <span style="color:#000000">      &lt;</span><span style="color:#000000">/</span><span style="color:#000000">Rule</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">28</span> <span style="color:#000000">    &lt;</span><span style="color:#000000">/</span><span style="color:#000000">Rules</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">29</span> <span style="color:#000000">  &lt;</span><span style="color:#000000">/</span><span style="color:#000000">Monitoring</span><span style="color:#000000">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>
<p></p>
<p><strong><u>Step 5:</u></strong></p>
<p>Final step is to construct XML for presentation and language packs. Ensure the close the &lt;ManagementPack&gt; tag.</p>
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:6d1cd22c-190d-4718-bac6-08275dcc2d78" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:600px;height:630px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">  &lt;Presentation</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    &lt;StringResources</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      &lt;StringResource ID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule.AlertMessage</span><span style="color:#800000">&quot;</span><span style="color:#000000"> </span><span style="color:#000000">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">    &lt;</span><span style="color:#000000">/</span><span style="color:#000000">StringResources</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">  &lt;</span><span style="color:#000000">/</span><span style="color:#000000">Presentation</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">  &lt;LanguagePacks</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">    &lt;LanguagePack ID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">ENU</span><span style="color:#800000">&quot;</span><span style="color:#000000"> IsDefault</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">true</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">      &lt;DisplayStrings</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">    &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.Automatic.Service.Monitoring</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">          &lt;Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring Management Pack&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">        &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.Auto.Service.Monitoring.DataSource</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring Data Source&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">          &lt;Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring Data Source&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">        &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">Windows Automatic Services Monitoring Rule&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">          &lt;Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">Windows Automatic Services Monitoring Rule&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">        &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule</span><span style="color:#800000">&quot;</span><span style="color:#000000"> SubElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">Alert</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">Alert&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">        &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule</span><span style="color:#800000">&quot;</span><span style="color:#000000"> SubElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">DS</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">25</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">GKLab Windows Automatic Service Monitoring Data Source&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">26</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">27</span> <span style="color:#000000">        &lt;DisplayString ElementID</span><span style="color:#000000">=</span><span style="color:#800000">&quot;</span><span style="color:#800000">GKLab.Windows.AutomaticService.Monitoring.Rule.AlertMessage</span><span style="color:#800000">&quot;</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">28</span> <span style="color:#000000">          &lt;Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">Windows Automatic Services Monitoring Alert&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Name</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">29</span> <span style="color:#000000">          &lt;Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">Windows Service {</span><span style="color:#000000">0</span><span style="color:#000000">} is set to auto</span><span style="color:#000000">-</span><span style="color:#000000">start but is currently not running.&lt;</span><span style="color:#000000">/</span><span style="color:#000000">Description</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">30</span> <span style="color:#000000">        &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayString</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">31</span> <span style="color:#000000">      &lt;</span><span style="color:#000000">/</span><span style="color:#000000">DisplayStrings</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">32</span> <span style="color:#000000">    &lt;</span><span style="color:#000000">/</span><span style="color:#000000">LanguagePack</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">33</span> <span style="color:#000000">  &lt;</span><span style="color:#000000">/</span><span style="color:#000000">LanguagePacks</span><span style="color:#000000">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">34</span> <span style="color:#000000">&lt;</span><span style="color:#000000">/</span><span style="color:#000000">ManagementPack</span><span style="color:#000000">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div>
<p><strong><u>Step 7:</u></strong></p>
<p>Deploy the MP in lab and check for alerts.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_1E450B85.png"><img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;border-top-width:0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_thumb_5CD8FBAA.png" width="622" height="415" /></a></p>
<p>&nbsp;</p>
<p>I have attached copy of XML which you can import in to any authoring tool. Customize as per your needs and have fun.</p>
<p>Happy SCOMing…</p>
<div id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:030e23b2-3ac2-4d45-8682-4cb6c2f68f01" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><p><div><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/GKLab.Windows.Automatic.Service.Monitoring_0ACD3ECF.xml" target="_self">GKLab.Windows.Automatic.Service.Monitoring.xml</a></div></p></div>]]></content:encoded>
    </item>
    <item>
      <title>SCOM Advanced Authoring : Powershell Discovery from CSV file - Explained using “TCP Port Monitoring” Scenario</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/scom-advanced-authoring-powershell-discovery-from-csv-file-explained-using-tcp-port-monitoring-scenario</link>
      <pubDate>Tue, 01 Dec 2015 04:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2015/12/01/scom-advanced-authoring-powershell-discovery-from-csv-file-explained-using-tcp-port-monitoring-scenario/</guid>
      <description><![CDATA[SCOM is exceptional tool which allows IT Administrators to customize the monitoring scenario to any...]]></description>
      <content:encoded><![CDATA[<p align="justify">SCOM is exceptional tool which allows IT Administrators to customize the monitoring scenario to any extent. To have a customized monitoring solution, one must understand the authoring capabilities in SCOM, so that the solution can be easily implemented, highly optimized and has less overhead on SCOM Management servers and agents.</p> <p align="justify">In this post we will discuss about Powershell Discovery from a centrally located configuration file (CSV format) with an example scenario involving TCP Port monitoring. We will also discuss the impact of this method on end users, IT/SCOM Administrators.</p> <p align="justify"><strong><span style="text-decoration:underline">Basics - Classes, Objects, Targets and Discoveries: </span></strong></p> <p align="justify">An object is the basic unit of management in Operations Manager. An object typically represents something in your computing environment, such as a computer, a logical disk, or a database. A class represents a kind of object, and every object in Operations Manager is considered an instance of a particular class. A target in the Operations console represents all instances of a particular class. A discovery is a special kind of rule to populate the class with instances.</p> <p align="justify"><strong><span style="text-decoration:underline">Scenario: </span></strong></p> <p align="justify">Consider a scenario where you have a datacenter with 1000+ Windows and Unix Servers. We as SCOM Administrators are requested to configure monitoring for various TCP ports from different watcher nodes across various servers in datacenter.</p> <p align="justify">This can be accomplished using <a href="https://technet.microsoft.com/en-US/library/hh457544.aspx" target="_blank">TCP Port Template</a> in Authoring Pane of console. But the <strong><span style="text-decoration:underline">drawbacks</span></strong> of using this template are:</p> <blockquote> <p align="justify">Each port for each server needs to be configured manually.</p></blockquote> <blockquote> <p align="justify">Each entry creates bunch of classes, groups, overrides and number of workflows increase which will impact SCOM performance.</p></blockquote> <blockquote> <p align="justify">There is no central configuration/information on what is being monitored and the monitoring criteria.</p> <p align="justify">Future changes needs to be manually configured in console.</p> <p align="justify">If a watcher node is decommissioned, each port monitored by the watcher node need to be moved to other watcher node manually.</p> <p align="justify">Each time application team has a new request to add/delete or modify, SCOM administrator need to make changes. In real environment, this includes Change requests, approvals etc which can consume considerable time.</p></blockquote> <p align="justify"><strong><span style="text-decoration:underline">Effective Solution: </span></strong></p> <p align="justify">To overcome the issues, it would be better to have a configuration in a central location and pull the information to SCOM at regular intervals. This way, once the initial configuration is setup,</p> <blockquote> <p align="justify">The application team can maintain the list and can follow their own approval process to add/modify/delete.</p> <p align="justify">The list can be mass updated.</p> <p align="justify">The addition/modification/deletion is automatically sync’ed with SCOM at regular intervals.</p> <p align="justify">No new workflows are added to SCOM for every addition and hence the impact on SCOM performance is minimal. Thus with handful of monitors and rules 1000s of objects can be monitored.</p> <p align="justify">The information is available centrally.</p> <p align="justify">The monitoring solution is self supported and cost effective in terms of support hours.</p></blockquote> <p align="justify">Below is step by step process with xml fragments included. The entire MP XML file is attached to the blog which you can download and test it in your lab.</p> <p align="justify"><strong><span style="text-decoration:underline">Step 1:</span></strong> Create a New Management Pack “<strong>GKLab.TCP.Port.Monitoring</strong>”</p> <p align="justify"><strong><span style="text-decoration:underline">Step 2:</span></strong> Add “<strong>Microsoft.SystemCenter.SyntheticTransactions.Library.mp</strong>” as reference.</p> <p align="justify">Here is XML fragment for Step 1 and Step 2</p> <blockquote> <div align="justify"> <div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:8b05e268-7456-4014-bef2-9220ec2701dc" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:400px;height:300px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#0000FF">&lt;?</span><span style="color:#FF00FF">xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;</span><span style="color:#0000FF">?&gt;</span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ManagementPack </span><span style="color:#FF0000">ContentReadable</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> SchemaVersion</span><span style="color:#0000FF">=&quot;2.0&quot;</span><span style="color:#FF0000"> OriginalSchemaVersion</span><span style="color:#0000FF">=&quot;1.0&quot;</span><span style="color:#FF0000"> xmlns:xsd</span><span style="color:#0000FF">=&quot;https://www.w3.org/2001/XMLSchema&quot;</span><span style="color:#FF0000"> xmlns:xsl</span><span style="color:#0000FF">=&quot;https://www.w3.org/1999/XSL/Transform&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Manifest</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Identity</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab.TCP.Port.Monitoring</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">1.0.0.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Identity</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab.TCP.Port.Monitoring</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">References</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;SystemCenter&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.SystemCenter.DataWarehouse.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.1.10226.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Windows&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.Windows.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.5.8501.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;MicrosoftSystemCenterSyntheticTransactionsLibrary&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.SystemCenter.SyntheticTransactions.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.1.10226.1090</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Performance&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">25</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Performance.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">26</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.0.8433.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">27</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">28</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">29</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;System&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">30</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">31</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.5.8501.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">32</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">33</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">34</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;SC&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">35</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Microsoft.SystemCenter.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">36</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.0.8433.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">37</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">38</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">39</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Reference </span><span style="color:#FF0000">Alias</span><span style="color:#0000FF">=&quot;Health&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">40</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System.Health.Library</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ID</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">41</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">7.0.8433.0</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Version</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">42</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">31bf3856ad364e35</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">PublicKeyToken</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">43</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Reference</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">44</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">References</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">45</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Manifest</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div></div></blockquote>
<blockquote>
<p align="justify">&nbsp;</p></blockquote>
<p align="justify"><strong><span style="text-decoration:underline">Step 3:</span></strong> Create a custom class “GKLab.TCP.Port.Monitoring.Class” to store TCP Port monitoring configuration. The base class is “Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckPerspective”</p>
<blockquote>
<div align="justify">
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:d99cce8a-46b2-4c6f-9213-dab27c546849" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:400px;height:210px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">TypeDefinitions</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">EntityTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ClassTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ClassType </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> Accessibility</span><span style="color:#0000FF">=&quot;Internal&quot;</span><span style="color:#FF0000"> Abstract</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Base</span><span style="color:#0000FF">=&quot;MicrosoftSystemCenterSyntheticTransactionsLibrary!Microsoft.SystemCenter.SyntheticTransactions.TCPPortCheckPerspective&quot;</span><span style="color:#FF0000"> Hosted</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> Singleton</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Extension</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Property </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;ServerName&quot;</span><span style="color:#FF0000"> Type</span><span style="color:#0000FF">=&quot;string&quot;</span><span style="color:#FF0000"> AutoIncrement</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Key</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> CaseSensitive</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> MaxLength</span><span style="color:#0000FF">=&quot;256&quot;</span><span style="color:#FF0000"> MinLength</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> Required</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Scale</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Property </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Port&quot;</span><span style="color:#FF0000"> Type</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> AutoIncrement</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Key</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> CaseSensitive</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> MaxLength</span><span style="color:#0000FF">=&quot;256&quot;</span><span style="color:#FF0000"> MinLength</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> Required</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Scale</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Property </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;NoOfRetries&quot;</span><span style="color:#FF0000"> Type</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> AutoIncrement</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Key</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> CaseSensitive</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> MaxLength</span><span style="color:#0000FF">=&quot;256&quot;</span><span style="color:#FF0000"> MinLength</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> Required</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Scale</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Property </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;TimeWindowInSeconds&quot;</span><span style="color:#FF0000"> Type</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> AutoIncrement</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Key</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> CaseSensitive</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> MaxLength</span><span style="color:#0000FF">=&quot;256&quot;</span><span style="color:#FF0000"> MinLength</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> Required</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Scale</span><span style="color:#0000FF">=&quot;0&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ClassType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ClassTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">EntityTypes</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div></div></blockquote>
<p align="justify"><strong><span style="text-decoration:underline">Step 4: </span></strong>Now we need to create discovery data source. Before that we will discuss the CSV file format we will be using to store the configuration data.</p>
<p align="justify">We will name it as “<strong>TCPPortMonitoringList.csv</strong>”. The CSV has ServerName, PortNumber, WatcherNode, IntervalSeconds, NoOfRetries and TimeWindowInSeconds as header.</p>
<blockquote>
<p align="justify"><strong>ServerName</strong> – Monitored Server Name (NetBIOS or FQDN)</p>
<p align="justify"><strong>PortNumber</strong> – Port Number to be monitored in monitored server.</p>
<p align="justify"><strong>WatcherNode</strong> – Computer/SCOM Agent that needs to monitor the port in monitored server.</p>
<p align="justify"><strong>IntervalSeconds</strong> – Monitoring Interval in seconds.</p>
<p align="justify"><strong>NoOfRetries</strong> – Number of times the monitor should fail before the alert is generated. This will reduce the alerts generated due to network latency. (Minimum value – 2)</p>
<p align="justify"><strong>TimeWindowInSeconds</strong> – Total time interval within which the monitor has to fail to generate an alert. (Minimum value = IntervalSeconds)</p></blockquote>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_776C7245.png"><img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;border-top-width:0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_thumb_721D8B94.png" width="598" height="133" /></a></p>
<p align="justify"><strong><span style="text-decoration:underline">Step 5:</span></strong> Since we will use Powershell Script discovery, create a custom data source with a <strong>System.SimpleScheduler</strong> module and a <strong>Microsoft.Windows.PowerShellDiscoveryProbe</strong> probe module.</p>
<p align="justify">Since we have a centralized configuration CSV file, we can run the discovery from any one management server and populate the objects. In SCOM 2012, we will target the discovery against <strong>All Management Server Resource Pool</strong>, so that anyone MS will pick up the workflow. The discovery is thus highly available. The CSV file path should be shared so that it can be accessed from any MS.</p>
<p align="justify">Below is XML fragment for Custom Discovery module with embedded Powershell script.</p>
<div align="justify">
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:821d0413-f201-4ca9-a695-0a842c9b8c0a" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:400px;height:210px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080">  1</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ModuleTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  2</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DataSourceModuleType </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Discovery.DataSource&quot;</span><span style="color:#FF0000"> Accessibility</span><span style="color:#0000FF">=&quot;Internal&quot;</span><span style="color:#FF0000"> Batching</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  3</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Configuration</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  4</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;IntervalSeconds&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:integer&quot;</span><span style="color:#FF0000"> xmlns:xsd</span><span style="color:#0000FF">=&quot;https://www.w3.org/2001/XMLSchema&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  5</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;SyncTime&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:string&quot;</span><span style="color:#FF0000"> xmlns:xsd</span><span style="color:#0000FF">=&quot;https://www.w3.org/2001/XMLSchema&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  6</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">xsd:element </span><span style="color:#FF0000">minOccurs</span><span style="color:#0000FF">=&quot;1&quot;</span><span style="color:#FF0000"> name</span><span style="color:#0000FF">=&quot;filePath&quot;</span><span style="color:#FF0000"> type</span><span style="color:#0000FF">=&quot;xsd:string&quot;</span><span style="color:#FF0000"> xmlns:xsd</span><span style="color:#0000FF">=&quot;https://www.w3.org/2001/XMLSchema&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  7</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Configuration</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  8</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">  9</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameter </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;IntervalSeconds&quot;</span><span style="color:#FF0000"> Selector</span><span style="color:#0000FF">=&quot;$Config/IntervalSeconds$&quot;</span><span style="color:#FF0000"> ParameterType</span><span style="color:#0000FF">=&quot;int&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 10</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OverrideableParameter </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;FilePath&quot;</span><span style="color:#FF0000"> Selector</span><span style="color:#0000FF">=&quot;$Config/filePath$&quot;</span><span style="color:#FF0000"> ParameterType</span><span style="color:#0000FF">=&quot;string&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 11</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">OverrideableParameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 12</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ModuleImplementation </span><span style="color:#FF0000">Isolation</span><span style="color:#0000FF">=&quot;Any&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 13</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Composite</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 14</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">MemberModules</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 15</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DataSource </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;DS&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;System!System.SimpleScheduler&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 16</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/IntervalSeconds$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 17</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/SyncTime$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 18</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DataSource</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 19</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ProbeAction </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Probe&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;Windows!Microsoft.Windows.PowerShellDiscoveryProbe&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 20</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ScriptName</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">TCPPortMonitoringConfigDiscovery.ps1</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ScriptName</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 21</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">ScriptBody</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 22</span> <span style="color:#000000">param(
</span><span style="color:#008080"> 23</span> <span style="color:#000000">[string] $sourceId,
</span><span style="color:#008080"> 24</span> <span style="color:#000000">[string] $managedEntityId,
</span><span style="color:#008080"> 25</span> <span style="color:#000000">[string] $filePath  )
</span><span style="color:#008080"> 26</span> <span style="color:#000000">
</span><span style="color:#008080"> 27</span> <span style="color:#000000">#Initialize SCOM API 
</span><span style="color:#008080"> 28</span> <span style="color:#000000">
</span><span style="color:#008080"> 29</span> <span style="color:#000000">$api = new-object -comObject &#039;MOM.ScriptAPI&#039;
</span><span style="color:#008080"> 30</span> <span style="color:#000000">$discoveryData = $api.CreateDiscoveryData(0, $SourceId, $ManagedEntityId) 
</span><span style="color:#008080"> 31</span> <span style="color:#000000">write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 999 -Message &quot;TCP Port Monitoring: looking for CSV file&quot; -EntryType Information
</span><span style="color:#008080"> 32</span> <span style="color:#000000"># $filePath variable contains UNC path of CSV Config file
</span><span style="color:#008080"> 33</span> <span style="color:#000000">if (test-path $filePath) {
</span><span style="color:#008080"> 34</span> <span style="color:#000000">    write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 999 -Message &quot;TCP Port Monitoring: Accessing CSV file&quot; -EntryType Information
</span><span style="color:#008080"> 35</span> <span style="color:#000000">       $contents = Import-Csv $filePath
</span><span style="color:#008080"> 36</span> <span style="color:#000000">       try{
</span><span style="color:#008080"> 37</span> <span style="color:#000000">       $Path = (Get-ItemProperty &quot;HKLM:SOFTWARE\Microsoft\System Center Operations Manager\12\Setup\Powershell\V2&quot;).InstallDirectory
</span><span style="color:#008080"> 38</span> <span style="color:#000000">    $Path1 = $Path + &quot;OperationsManager\OperationsManager.psm1&quot;
</span><span style="color:#008080"> 39</span> <span style="color:#000000">    if (Test-Path $Path1)
</span><span style="color:#008080"> 40</span> <span style="color:#000000">    {
</span><span style="color:#008080"> 41</span> <span style="color:#000000">        Import-Module $Path1
</span><span style="color:#008080"> 42</span> <span style="color:#000000">    }
</span><span style="color:#008080"> 43</span> <span style="color:#000000">    else
</span><span style="color:#008080"> 44</span> <span style="color:#000000">    {
</span><span style="color:#008080"> 45</span> <span style="color:#000000">        Import-Module OperationsManager
</span><span style="color:#008080"> 46</span> <span style="color:#000000">    }
</span><span style="color:#008080"> 47</span> <span style="color:#000000">           New-SCOMManagementGroupConnection
</span><span style="color:#008080"> 48</span> <span style="color:#000000">        #Retrieve all windows computers which can be used as watcher nodes
</span><span style="color:#008080"> 49</span> <span style="color:#000000">           $allServers = Get-SCClass | where { $_.Name -eq (&quot;Microsoft.Windows.Computer&quot;)} | get-scommonitoringobject
</span><span style="color:#008080"> 50</span> <span style="color:#000000">    }
</span><span style="color:#008080"> 51</span> <span style="color:#000000">    catch{
</span><span style="color:#008080"> 52</span> <span style="color:#000000">    write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 999 -Message &quot;TCP Port Monitoring: $_&quot; -EntryType Information
</span><span style="color:#008080"> 53</span> <span style="color:#000000">    }
</span><span style="color:#008080"> 54</span> <span style="color:#000000">    #Read line by line from configuration file and create instance of TCP Port Monitoring Class
</span><span style="color:#008080"> 55</span> <span style="color:#000000">    $contents | ForEach-Object{
</span><span style="color:#008080"> 56</span> <span style="color:#000000">        $ServerName = $_.ServerName
</span><span style="color:#008080"> 57</span> <span style="color:#000000">        $PortNumber = $_.PortNumber
</span><span style="color:#008080"> 58</span> <span style="color:#000000">        $WatcherNode = $_.WatcherNode
</span><span style="color:#008080"> 59</span> <span style="color:#000000">        $NoOfRetries = $_.NoOfRetries
</span><span style="color:#008080"> 60</span> <span style="color:#000000">        $TimeWindowInSeconds = $_.TimeWindowInSeconds
</span><span style="color:#008080"> 61</span> <span style="color:#000000">        $Config = &quot;$ServerName&quot;+&quot;:&quot;+&quot;$PortNumber&quot; # Will be used as display name
</span><span style="color:#008080"> 62</span> <span style="color:#000000">        write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 555 -Message &quot;Checking servers&quot; -EntryType Information
</span><span style="color:#008080"> 63</span> <span style="color:#000000">        $allServers | ForEach-Object{
</span><span style="color:#008080"> 64</span> <span style="color:#000000">            #Create instance only if the watcher node is managed by SCOM as the instance will hosted by the watcher node.
</span><span style="color:#008080"> 65</span> <span style="color:#000000">            #The hosting object is windows computer whose display name is equal to watcher node value from CSV
</span><span style="color:#008080"> 66</span> <span style="color:#000000">            #If there is no matching windows computer managed by SCOM, then the instance cannot be hosted. Hence the instance is not discovered.
</span><span style="color:#008080"> 67</span> <span style="color:#000000">            if((($_.DisplayName).toLower()).contains($WatcherNode.toLower())){
</span><span style="color:#008080"> 68</span> <span style="color:#000000">                write-eventlog -logname &quot;Operations Manager&quot; -Source &quot;Health Service Script&quot; -EventID 555 -Message &quot;Creating Instance for $Config&quot; -EntryType Information
</span><span style="color:#008080"> 69</span> <span style="color:#000000">                $instance = $discoveryData.CreateClassInstance(&quot;$MPElement[Name=&#039;GKLab.TCP.Port.Monitoring.Class&#039;]$&quot;)
</span><span style="color:#008080"> 70</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;GKLab.TCP.Port.Monitoring.Class&#039;]/ServerName$&quot;, $ServerName)
</span><span style="color:#008080"> 71</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;GKLab.TCP.Port.Monitoring.Class&#039;]/Port$&quot;, $PortNumber)
</span><span style="color:#008080"> 72</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;GKLab.TCP.Port.Monitoring.Class&#039;]/NoOfRetries$&quot;, $NoOfRetries)
</span><span style="color:#008080"> 73</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;GKLab.TCP.Port.Monitoring.Class&#039;]/TimeWindowInSeconds$&quot;, $TimeWindowInSeconds)
</span><span style="color:#008080"> 74</span> <span style="color:#000000">                #The hosting object is windows computer whose display name is equal to watcher node value from CSV
</span><span style="color:#008080"> 75</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;Windows!Microsoft.Windows.Computer&#039;]/PrincipalName$&quot;, $_.DisplayName)
</span><span style="color:#008080"> 76</span> <span style="color:#000000">                $instance.AddProperty(&quot;$MPElement[Name=&#039;System!System.Entity&#039;]/DisplayName$&quot;, $Config)
</span><span style="color:#008080"> 77</span> <span style="color:#000000">                $discoveryData.AddInstance($instance)
</span><span style="color:#008080"> 78</span> <span style="color:#000000">                return
</span><span style="color:#008080"> 79</span> <span style="color:#000000">            }
</span><span style="color:#008080"> 80</span> <span style="color:#000000">        }
</span><span style="color:#008080"> 81</span> <span style="color:#000000">    }
</span><span style="color:#008080"> 82</span> <span style="color:#000000">}
</span><span style="color:#008080"> 83</span> <span style="color:#000000">$discoveryData
</span><span style="color:#008080"> 84</span> <span style="color:#000000">Remove-variable api
</span><span style="color:#008080"> 85</span> <span style="color:#000000">Remove-variable discoveryData
</span><span style="color:#008080"> 86</span> <span style="color:#000000"></span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ScriptBody</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 87</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 88</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 89</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">sourceId</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 90</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$MPElement$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 91</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 92</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 93</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">managedEntityId</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 94</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Target/Id$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 95</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 96</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 97</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">filePath</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 98</span> <span style="color:#000000">                    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">$Config/filePath$</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Value</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 99</span> <span style="color:#000000">                  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameter</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">100</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Parameters</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">101</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">TimeoutSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">300</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">TimeoutSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">102</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ProbeAction</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">103</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">MemberModules</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">104</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Composition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">105</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Node </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;Probe&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">106</span> <span style="color:#000000">                </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Node </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;DS&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080">107</span> <span style="color:#000000">              </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Node</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">108</span> <span style="color:#000000">            </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Composition</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">109</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Composite</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">110</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ModuleImplementation</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">111</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">OutputType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">System!System.Discovery.Data</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">OutputType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">112</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DataSourceModuleType</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">113</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ModuleTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">114</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">TypeDefinitions</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div></div>
<p align="justify"><strong><span style="text-decoration:underline">Step 6:</span></strong> Now that we have created discovery data source, we will create a discovery <strong>GKLab.TCP.Port.Monitoring.Discovery. </strong></p>
<p align="justify">Below is the discovery xml fragment. The UNC Path is mentioned in <strong>filePath. </strong></p>
<div align="justify">
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:da49a576-6813-482d-9d61-a459c166b1ca" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:400px;height:210px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Monitoring</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Discoveries</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Discovery </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Discovery&quot;</span><span style="color:#FF0000"> Enabled</span><span style="color:#0000FF">=&quot;false&quot;</span><span style="color:#FF0000"> Target</span><span style="color:#0000FF">=&quot;SC!Microsoft.SystemCenter.AllManagementServersPool&quot;</span><span style="color:#FF0000"> ConfirmDelivery</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> Remotable</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#FF0000"> Priority</span><span style="color:#0000FF">=&quot;Normal&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Category</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Discovery</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Category</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DiscoveryTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DiscoveryClass </span><span style="color:#FF0000">TypeID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> </span><span style="color:#0000FF">/&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DiscoveryTypes</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DataSource </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;DS&quot;</span><span style="color:#FF0000"> TypeID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Discovery.DataSource&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">500</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">IntervalSeconds</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">00:00</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">SyncTime</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">filePath</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">\\SCOM2012R2\Configs\TCPMonitoringConfig.csv</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">filePath</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DataSource</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Discovery</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Discoveries</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Monitoring</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div></div>
<p align="justify"><strong><span style="text-decoration:underline">Step 8:</span></strong> Add Language Packs and close the ManagementPack tag.</p>
<div align="justify">
<div id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:e336cd04-9cfd-4b8d-93a2-f679826d6d4a" class="wlWriterEditableSmartContent" style="float:none;padding-bottom:0px;padding-top:0px;padding-left:0px;margin:0px;padding-right:0px"><pre style="width:400px;height:210px;background-color:Silver;overflow:auto"><div><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

--><span style="color:#008080"> 1</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">LanguagePacks</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 2</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">LanguagePack </span><span style="color:#FF0000">ID</span><span style="color:#0000FF">=&quot;ENU&quot;</span><span style="color:#FF0000"> IsDefault</span><span style="color:#0000FF">=&quot;true&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 3</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayStrings</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 4</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 5</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab TCP Port Monitoring</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 6</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">This Management pack monitors the list of ports discovered from config file.</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 7</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 8</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080"> 9</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab TCP Port Monitoring Class</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">10</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Class Contains Instances of TCP Ports that needs to be monitored from specific watcher nodes</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">11</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">12</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> SubElementID</span><span style="color:#0000FF">=&quot;NoOfRetries&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">13</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">No Of Retries</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">14</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">15</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> SubElementID</span><span style="color:#0000FF">=&quot;Port&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">16</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Port</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">17</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">18</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> SubElementID</span><span style="color:#0000FF">=&quot;ServerName&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">19</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Server Name</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">20</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">21</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Class&quot;</span><span style="color:#FF0000"> SubElementID</span><span style="color:#0000FF">=&quot;TimeWindowInSeconds&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">22</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Time Window In Seconds</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">23</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">24</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Discovery&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">25</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab TCP Port Monitoring Discovery</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">26</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Discovers TCP Port Monitoring Configs from given CSV file.</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">27</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">28</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">DisplayString </span><span style="color:#FF0000">ElementID</span><span style="color:#0000FF">=&quot;GKLab.TCP.Port.Monitoring.Discovery.DataSource&quot;</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">29</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">GKLab TCP Port Monitoring Discovery Data Source</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Name</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">30</span> <span style="color:#000000">          </span><span style="color:#0000FF">&lt;</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">Data Source used by TCP Port Monitoring Discovery Rule</span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">Description</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">31</span> <span style="color:#000000">        </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayString</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">32</span> <span style="color:#000000">      </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">DisplayStrings</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">33</span> <span style="color:#000000">    </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">LanguagePack</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">34</span> <span style="color:#000000">  </span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">LanguagePacks</span><span style="color:#0000FF">&gt;</span><span style="color:#000000">
</span><span style="color:#008080">35</span> <span style="color:#000000"></span><span style="color:#0000FF">&lt;/</span><span style="color:#800000">ManagementPack</span><span style="color:#0000FF">&gt;</span></div></pre><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  https://dunnhq.com --></div></div>
<p align="justify"><strong><span style="text-decoration:underline">Step 9:</span></strong> Now import the management pack in SCOM and check if the configuration from CSV are discovered. </p>
<p align="justify">Go to Discovered Inventory in SCOM Console and change target to <strong>“GKLab TCP Port Monitoring Class” </strong>to view the discovered items.</p>
<p align="justify"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_75C0C7D3.png"><img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;border-top-width:0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/34/metablogapi/image_thumb_25123D5E.png" width="599" height="53" /></a></p>
<p align="justify"></p>
<p align="justify"></p>
<p align="justify"><strong><span style="text-decoration:underline">Step 10: </span></strong>Now you can develop custom monitors and rules targeting this class.</p>
<p align="justify">Thus the entire configuration can be maintained in a CSV file located in a shared location. For any new or modification in requirement, the CSV file can be updated accordingly. There is no changes required in SCOM side unless any additional headers are added and need to be absorbed in SCOM.</p>
<p align="justify">I will post details about monitors and rules for TCP Port monitoring in future posts.</p>
<p>&nbsp;</p>
<p>Happy SCOMing!!!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/10434/00/00/03/65/76/63/GKLab.TCP.Port.Monitoring.xml">GKLab.TCP.Port.Monitoring.xml</a></p>]]></content:encoded>
    </item>
    <item>
      <title>PowerShell: Retrieve Group Policy details for Remote Computer</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/powershell-retrieve-group-policy-details-for-remote-computer</link>
      <pubDate>Wed, 23 Sep 2015 10:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2015/09/23/powershell-retrieve-group-policy-details-for-remote-computer/</guid>
      <description><![CDATA[&nbsp;
There are multiple scenarios as a part of AD management where we need to retrieve Group...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>There are multiple scenarios as a part of AD management where we need to retrieve Group Policy information for managed computers. There are generally two methods to get the information.</p>
<p><b><span style="text-decoration:underline;"><span style="font-size:medium;">Method 1:</span></span></b></p>
<p>Most common method is to use <b>gpresult.exe </b>command which is detailed in <a href="https://technet.microsoft.com/en-us/library/bb490915.aspx">this technet article</a>. This works well only if that <b>User</b> executing the command has logged-in once at-least in the target computer. Else it throws below error.</p>
<p align="center"><strong><em>The user does not have RSOP Data</em></strong></p>
<p><strong><span style="text-decoration:underline;"><span style="font-size:medium;">Method 2:</span></span></strong></p>
<p>Method 2 is to use <strong>Get-GPResultantSetOfPolicy</strong> PowerShell command-let which is detailed <a href="https://technet.microsoft.com/en-us/library/ee461048.aspx" target="_blank">here</a>. This command also works similar to Method 1 and requires User to login at-least once.</p>
<p>Using <strong>Method 1</strong> and <strong>Method 2, </strong>even if we want the group policy information only for the computer irrespective of user, it is not possible without the user logged in at-least once as the command retrieves resulting set of policies that are enforced for specified user on the target computer.</p>
<p><b><span style="text-decoration:underline;"></span></b>&nbsp;</p>
<p><span style="font-size:large;"><b><span style="text-decoration:underline;"><span style="font-size:medium;">Solution:</span></span></b> </span></p>
<p>To overcome these issues, using Group Policy Management COM Object which is the base for <strong>gpresult.exe</strong> and <strong>Get-ResultantSetOfPolicy</strong> PS command-let serves better. We can use the COM object in VB or PS scripting. Here we will discuss about using it in PS Scripting.</p>
<blockquote>
<p>#Initialize Variables</p>
</blockquote>
<blockquote>
<p><strong><em>$OutputFile = &ldquo;C:\Temp\GPOExport.html&rdquo;</em></strong></p>
</blockquote>
<blockquote>
<p><strong><em>$ComputerName = &ldquo;test.contoso.com&rdquo;</em></strong></p>
</blockquote>
<blockquote>
<p><strong><em>$UserName = &ldquo;john&rdquo;</em></strong></p>
</blockquote>
<p>The first thing we do is create an instance of the <b>GPMgmt.GPM </b>object. We can use this object if the Group Policy Management Console is installed in the computer.</p>
<blockquote>
<p><b><i>$gpm = New-Object -ComObject GPMgmt.GPM</i></b></p>
</blockquote>
<p>Next step is to obtain all constants and save it in a variable.</p>
<blockquote>
<p><b><i>$constants = $gpm.GetConstants()</i></b></p>
</blockquote>
<p>Now create reference RSOP object using required constants.</p>
<blockquote>
<p><b><i>$gpmRSOP = $GPM.GetRSOP($Constants.RSOPModeLogging,$null,0)</i></b></p>
</blockquote>
<p>Next step is to specify Target Computer and User.</p>
<blockquote>
<p><b><i>$gpmRSOP.LoggingComputer = $ComputerName</i></b></p>
</blockquote>
<blockquote>
<p><b><i>$gpmRSOP.LoggingUser = $UserName</i></b></p>
</blockquote>
<p><strong><span style="text-decoration:underline;">Note:</span></strong> If we need the RSOP data for only Computer without considering User imposed Group Policy data, we need to use &ldquo;RsopLoggingNoUser&rdquo; constant value instead of <b><i>$gpmRSOP.LoggingUser</i></b>.</p>
<blockquote>
<p><b><i>$gpmRSOP.LoggingFlags = $Constants.RsopLoggingNoUser</i></b></p>
</blockquote>
<p>Next step is to query the target computer for RSOP GPO data.</p>
<blockquote>
<p><b><i>$gpmRSOP.CreateQueryResults()</i></b></p>
</blockquote>
<p>To export data to a output file below command is used.</p>
<p><b><i>HTML: </i></b></p>
<blockquote>
<p><b><i>$gpmRSOP.GenerateReportToFile($constants.ReportHTML,$outputfile)</i></b></p>
</blockquote>
<p><b><i>XML:</i></b></p>
<blockquote>
<p><b><i>$gpmRSOP.GenerateReportToFile($constants.ReportXML,$outputfile)</i></b></p>
</blockquote>
<p>Thus using GPMgmt.GPM COM object, we can obtain Resulting Set of Group Policies for Target Computer with or without considering the User and also without requirement of user logging at-least once.</p>
<p>&nbsp;</p>
<p>Happy Scripting :-)</p>]]></content:encoded>
    </item>
    <item>
      <title>SCOM: Unix/Linux Shell Command Monitoring - Unique Requirement</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/scom-unixlinux-shell-command-monitoring-unique-requirement</link>
      <pubDate>Thu, 12 Mar 2015 04:44:00 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2015/03/12/scom-unixlinux-shell-command-monitoring-unique-requirement/</guid>
      <description><![CDATA[When I was working with a customer recently, I came across an requirement, to execute a Shell...]]></description>
      <content:encoded><![CDATA[<p>When I was working with a customer recently, I came across an requirement, to execute a <em>Shell Command</em> and based on the results, the monitor state needs to be set for <em>Target Server</em>. One of the best example solution available in web is <a href="https://operatingquadrant.com/2010/02/04/operations-manager-cross-platform-authoring-invoke-action-monitor/">this</a>.</p>
<p><span style="text-decoration:underline;"><strong>THE PROBLEM:</strong></span></p>
<p>But the uniqueness however&nbsp; in this requirement is that the computer where the <em>Shell Command</em> needs to be executed and the <em>Target Server</em> are not the same.</p>
<p style="text-align:center;"><a href="https://scomgk.files.wordpress.com/2014/05/5-14-2014-17-56-031.png"><img width="300" height="158" class="alignnone size-medium wp-image-33" alt="5-14-2014 17-56-03" src="https://scomgk.files.wordpress.com/2014/05/5-14-2014-17-56-031.png?w=300" /></a></p>
<p style="text-align:left;">As Illustrated above, The monitor is targeted to a &quot;Class A&quot; which has several instances including &quot;Server A&quot;. The <em>Shell Command</em> however needs to be executed on &quot;Server B&quot; and the results needs to be manipulated and the state of &quot;Monitor A&quot; needs to be set.</p>
<p style="text-align:left;"><span style="text-decoration:underline;"><strong>THE SOLUTION:</strong></span></p>
<p style="text-align:left;">The &quot;Microsoft.Unix.WSMan.Invoke.ProbeAction&quot; probe based on which the Unix/Linux monitoring data sources are built in SCOM , has a parameter called &quot;TargetSystem&quot;.</p>
<p style="text-align:left;">In normal scenarios, the value would always be &quot;$Target/Property[Type=&quot;MicrosoftUnixLibrary!Microsoft.Unix.Computer&quot;]/NetworkName$&quot;. Thus the <em>Shell Command</em> would be executed in &quot;Server A&quot; and the &quot;Monitor A&quot; would have a state based on results.</p>
<p style="text-align:left;">But the value of &quot;TargetSystem&quot; certainly need not to be <em>Target Server&#39;</em>s name. This can be changed to any server which has a SCOM Unix Agent installed with valid certificate for authentication. Then the <em>Shell Command</em> will be executed in the &quot;Server B&quot; rather than in <em>Target Server</em>.</p>
<p style="text-align:left;">Additionally you can pass the <em>Target Server&#39;</em>s name along with <em>Shell Command </em>as parameter if you have used the Promote Option for Shell Command</p>
<p style="text-align:left;"><strong>Find the XML code in PDF file here -- [View:~/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-34/1033.Example.Unix.ShellCommand.Monitoring.pdf:550:0]</strong></p>
<p style="text-align:left;">Have great SCOMing!!!</p>]]></content:encoded>
    </item>
    <item>
      <title>PowerShell Script to Simulate Outlook Web Access URL User Logon</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/powershell-script-to-simulate-outlook-web-access-url-user-logon</link>
      <pubDate>Thu, 12 Mar 2015 04:03:00 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2015/03/12/powershell-script-to-simulate-outlook-web-access-url-user-logon/</guid>
      <description><![CDATA[Recently I came across with a requirement to do user logon synthetic transaction on Outlook Web...]]></description>
      <content:encoded><![CDATA[<p>Recently I came across with a requirement to do user logon synthetic transaction on Outlook Web Access URL and capture its performance. This can be accomplished using <a href="https://technet.microsoft.com/en-us/library/hh849901.aspx" target="_blank">Invoke-WebRequest</a> PowerShell command let. The command let returns form elements which needs to be filled with username and password and the login page is invoked with the post data. The output is analyzed for successful login and logon results are returned.&nbsp;</p>
<div style="padding:5px;border:1px solid black;width:750px;overflow:auto;font-family:Consolas,Lucida Console;font-size:10pt;">
<table border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td valign="Top">
<div style="background:#cecece;padding:5px;font-family:Consolas,Lucida Console;font-size:10pt;">001<br />002<br />003<br />004<br />005<br />006<br />007<br />008<br />009<br />010<br />011<br />012<br />013<br />014<br />015<br />016<br />017<br />018<br />019<br />020<br />021<br />022<br />023<br />024<br />025<br />026<br />027<br />028<br />029<br />030<br />031<br />032<br />033<br />034<br />035<br />036<br />037<br />038<br />039<br />040<br />041<br />042<br />043<br />044<br />045<br />046<br />047<br />048<br />049<br />050<br />051<br />052<br />053<br />054<br />055<br />056<br />057<br />058<br />059<br />060<br />061<br />062<br />063<br />064<br />065<br />066<br />067<br />068<br />069<br />070<br />071<br />072<br />073<br />074<br />075<br />076<br />077<br />078<br />079<br />080<br />081<br />082<br />083<br />084<br />085<br />086<br />087<br />088<br />089<br />090<br />091<br />092<br />093<br />094<br />095<br />096<br />097<br />098<br />099<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120</div>
</td>
<td nowrap="nowrap" valign="Top">
<div style="background:#fcfcfc;padding:5px;font-family:Consolas,Lucida Console;font-size:10pt;"><span style="color:darkgreen;">#Parameters Block</span><br /> <br /> <span style="color:darkgreen;">#URL = &quot;https://myserver.mydoamin.com/owa</span><br /> <br /> <span style="color:darkblue;">param</span><span style="color:black;">(</span><br /> <br /> <span style="color:black;">&nbsp;</span><span style="color:darkgray;">[</span><span style="color:darkcyan;">Parameter</span><span style="color:black;">(</span><span style="color:black;">Mandatory</span><span style="color:darkgray;">=</span><span style="color:red;">$true</span><span style="color:black;">)</span><span style="color:darkgray;">]</span><br /> <span style="color:black;">&nbsp;</span><span style="color:red;">$URL</span><span style="color:darkgray;">,</span><br /> <br /> <span style="color:black;">&nbsp;</span><span style="color:darkgray;">[</span><span style="color:darkcyan;">Parameter</span><span style="color:black;">(</span><span style="color:black;">Mandatory</span><span style="color:darkgray;">=</span><span style="color:red;">$true</span><span style="color:black;">)</span><span style="color:darkgray;">]</span><br /> <span style="color:black;">&nbsp;</span><span style="color:red;">$Domain</span><span style="color:darkgray;">,</span><br /> <br /> <span style="color:black;">&nbsp;</span><span style="color:darkgray;">[</span><span style="color:darkcyan;">Parameter</span><span style="color:black;">(</span><span style="color:black;">Mandatory</span><span style="color:darkgray;">=</span><span style="color:red;">$true</span><span style="color:black;">)</span><span style="color:darkgray;">]</span><br /> <span style="color:black;">&nbsp;</span><span style="color:red;">$Username</span><span style="color:darkgray;">,</span><br /> <br /> <span style="color:black;">&nbsp;</span><span style="color:darkgray;">[</span><span style="color:darkcyan;">Parameter</span><span style="color:black;">(</span><span style="color:black;">Mandatory</span><span style="color:darkgray;">=</span><span style="color:red;">$true</span><span style="color:black;">)</span><span style="color:darkgray;">]</span><br /> <span style="color:black;">&nbsp;</span><span style="color:red;">$Password</span><br /> <span style="color:black;">)</span><br /> <br /> <span style="color:darkgreen;">#Initialize default values</span><br /> <br /> <span style="color:red;">$Result</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$False</span><br /> <span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">0</span><br /> <span style="color:red;">$Latency</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">0</span><br /> <br /> <span style="color:red;">$Username</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Domain</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">+</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;\&quot;</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">+</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Username</span><br /> <br /> <span style="color:darkblue;">try</span><span style="color:black;">{</span><br /> <span style="color:darkgreen;">#########################</span><br /> <span style="color:darkgreen;">#Work around to Trust All Certificates is is from this post</span><br /> <br /> <span style="color:blue;">add-type</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">@&quot;<br /> &nbsp;&nbsp;&nbsp;&nbsp;using System.Net;<br /> &nbsp;&nbsp;&nbsp;&nbsp;using System.Security.Cryptography.X509Certificates;<br /> &nbsp;&nbsp;&nbsp;&nbsp;public class TrustAllCertsPolicy : ICertificatePolicy {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public bool CheckValidationResult(<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServicePoint srvPoint, X509Certificate certificate,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebRequest request, int certificateProblem) {<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /> &nbsp;&nbsp;&nbsp;}<br /> &quot;@</span><br /> <span style="color:darkcyan;">[System.Net.ServicePointManager]</span><span style="color:darkgray;">::</span><span style="color:black;">CertificatePolicy</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">New-Object</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">TrustAllCertsPolicy</span><br /> <br /> <span style="color:darkgreen;">#Initialize Stop Watch to calculate the latency.</span><br /> <br /> <span style="color:red;">$StopWatch</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkcyan;">[system.diagnostics.stopwatch]</span><span style="color:darkgray;">::</span><span style="color:black;">startNew</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <br /> <span style="color:darkgreen;">#Invoke the login page</span><br /> <span style="color:red;">$Response</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Invoke-WebRequest</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Uri</span><span style="color:black;">&nbsp;</span><span style="color:red;">$URL</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-SessionVariable</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">owa</span><br /> <br /> <span style="color:darkgreen;">#Login Page - Fill Logon Form</span><br /> <br /> <span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><span style="color:darkgray;">.</span><span style="color:black;">id</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;logonform&quot;</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><br /> <span style="color:red;">$Form</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">Forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><br /> <span style="color:red;">$Form</span><span style="color:darkgray;">.</span><span style="color:black;">fields</span><span style="color:darkgray;">.</span><span style="color:black;">username</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Username</span><br /> <span style="color:red;">$form</span><span style="color:darkgray;">.</span><span style="color:black;">Fields</span><span style="color:darkgray;">.</span><span style="color:black;">password</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Password</span><br /> <span style="color:red;">$authpath</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;$URL/auth/owaauth.dll&quot;</span><br /> <span style="color:darkgreen;">#Login to OWA</span><br /> <span style="color:red;">$Response</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Invoke-WebRequest</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Uri</span><span style="color:black;">&nbsp;</span><span style="color:red;">$authpath</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-WebSession</span><span style="color:black;">&nbsp;</span><span style="color:red;">$owa</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Method</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">POST</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Body</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Form</span><span style="color:darkgray;">.</span><span style="color:black;">Fields</span><br /> <span style="color:darkgreen;">#SuccessfulLogin </span><br /> <span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><span style="color:darkgray;">.</span><span style="color:black;">id</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;frm&quot;</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Retrieve Status Code</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">StatusCode</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;"># Logoff Session</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$logoff</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;$URL/auth/logoff.aspx?Cmd=logoff&amp;src=exch&quot;</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Response</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Invoke-WebRequest</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Uri</span><span style="color:black;">&nbsp;</span><span style="color:red;">$logoff</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-WebSession</span><span style="color:black;">&nbsp;</span><span style="color:red;">$owa</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Calculate Latency</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">stop</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Latency</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">Elapsed</span><span style="color:darkgray;">.</span><span style="color:black;">TotalSeconds</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Result</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$True</span><br /> <span style="color:black;">}</span><br /> <span style="color:darkgreen;">#Fill Out Language Form, if it is first login</span><br /> <span style="color:darkblue;">elseif</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><span style="color:darkgray;">.</span><span style="color:black;">id</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;lngfrm&quot;</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Form</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">Forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><br /> <br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Set Default Values</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Form</span><span style="color:darkgray;">.</span><span style="color:black;">Fields</span><span style="color:darkgray;">.</span><span style="color:black;">add</span><span style="color:black;">(</span><span style="color:darkred;">&quot;lcid&quot;</span><span style="color:darkgray;">,</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">ParsedHtml</span><span style="color:darkgray;">.</span><span style="color:black;">getElementById</span><span style="color:black;">(</span><span style="color:darkred;">&quot;selLng&quot;</span><span style="color:black;">)</span><span style="color:darkgray;">.</span><span style="color:black;">value</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Form</span><span style="color:darkgray;">.</span><span style="color:black;">Fields</span><span style="color:darkgray;">.</span><span style="color:black;">add</span><span style="color:black;">(</span><span style="color:darkred;">&quot;tzid&quot;</span><span style="color:darkgray;">,</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">ParsedHtml</span><span style="color:darkgray;">.</span><span style="color:black;">getElementById</span><span style="color:black;">(</span><span style="color:darkred;">&quot;selTZ&quot;</span><span style="color:black;">)</span><span style="color:darkgray;">.</span><span style="color:black;">value</span><span style="color:black;">)</span><br /> <br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$langpath</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;$URL/lang.owa&quot;</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Response</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Invoke-WebRequest</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Uri</span><span style="color:black;">&nbsp;</span><span style="color:red;">$langpath</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-WebSession</span><span style="color:black;">&nbsp;</span><span style="color:red;">$owa</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Method</span><span style="color:black;">&nbsp;</span><span style="color:red;">$form</span><span style="color:darkgray;">.</span><span style="color:black;">Method</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Body</span><span style="color:black;">&nbsp;</span><span style="color:red;">$form</span><span style="color:darkgray;">.</span><span style="color:black;">fields</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Retrieve Status Code</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">StatusCode</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;"># Logoff Session</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$logoff</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;$URL/auth/logoff.aspx?Cmd=logoff&amp;src=exch&quot;</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Response</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Invoke-WebRequest</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Uri</span><span style="color:black;">&nbsp;</span><span style="color:red;">$logoff</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-WebSession</span><span style="color:black;">&nbsp;</span><span style="color:red;">$owa</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Calculate Latency</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">stop</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Latency</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">Elapsed</span><span style="color:darkgray;">.</span><span style="color:black;">TotalSeconds</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Result</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$True</span><br /> <span style="color:black;">}</span><br /> <span style="color:darkblue;">elseif</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">forms</span><span style="color:darkgray;">[</span><span style="color:magenta;">0</span><span style="color:darkgray;">]</span><span style="color:darkgray;">.</span><span style="color:black;">id</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;logonform&quot;</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#We are still in LogonPage</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Retrieve Status Code</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">StatusCode</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Calculate Latency</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">stop</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Latency</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">Elapsed</span><span style="color:darkgray;">.</span><span style="color:black;">TotalSeconds</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Result</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Failed to logon $username. Check the password or account.&quot;</span><br /> <span style="color:black;">}</span><br /> <span style="color:black;">}</span><br /> <br /> <span style="color:black;">}</span><br /> <br /> <span style="color:darkgreen;">#Catch Exception, If any</span><br /> <span style="color:darkblue;">catch</span><br /> <span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Retrieve Status Code</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$Response</span><span style="color:darkgray;">.</span><span style="color:black;">StatusCode</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-notmatch</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;\d\d\d&#39;</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$StatusCode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">0</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:darkgreen;">#Calculate Latency</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">stop</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Latency</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$StopWatch</span><span style="color:darkgray;">.</span><span style="color:black;">Elapsed</span><span style="color:darkgray;">.</span><span style="color:black;">TotalSeconds</span><br /> <span style="color:black;">&nbsp;&nbsp;</span><span style="color:red;">$Result</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">Exception</span><span style="color:darkgray;">.</span><span style="color:black;">Message</span><br /> <span style="color:black;">}</span><br /> <br /> <span style="color:darkgreen;">#Display Results</span><br /> <br /> <span style="color:blue;">Write-Host</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Status Code: $StatusCode`nResult: $Result`nLatency: $Latency Seconds&quot;</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p></p>
<p>Happy Scripting..</p>]]></content:encoded>
    </item>
    <item>
      <title>SCOM: What’s wrong with my Unix agents? Why are they greyed out?</title>
      <link>https://docs.microsoft.com/archive/blogs/gk_blog/scom-whats-wrong-with-my-unix-agents-why-are-they-greyed-out</link>
      <pubDate>Thu, 12 Mar 2015 04:02:00 GMT</pubDate>
      <dc:creator><![CDATA[Gowdhaman Karthikeyan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/gk_blog/2015/03/12/scom-whats-wrong-with-my-unix-agents-why-are-they-greyed-out/</guid>
      <description><![CDATA[&nbsp;
It is quite difficult to work with the Offline Unix agents especially in a large monitoring...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>It is quite difficult to work with the Offline Unix agents especially in a large monitoring environment. Though SCOM offers native heartbeat monitor, it is hard to quickly determine whether the computer is actually down or something wrong with the agent configuration.</p>
<p align="justify">An Unix agent may be down due to various reasons like issue with SCX process not running or a run as account password got changed or certificate got reset or the computer might be down. SCOM has &ldquo;<strong>UNIX/Linux Heartbeat Monitor&rdquo;, &ldquo;WS-Management Run As Account Health</strong><strong>&rdquo; and &ldquo;WS-Management Certificate Health&rdquo;</strong> monitors to monitor each of above mentioned criteria and alert for offline agents. But it would be tedious job for support guy to handle multiple alerts for same issue and correlating them to fix the agent which may cost considerable time.</p>
<p align="justify">Will it not be easy to have only one alert in case of heartbeat failure with the status of all other monitors in the summary?</p>
<p align="justify">But wait, should we also track down the ping status in the alert summary so that the support guy knows what he should do first?</p>
<p align="justify">Yes, that&rsquo;s what we are going to do now using PowerShell. The below script can be scheduled to run in any management server and it logs event in &ldquo;Operations Manager&rdquo; event log.</p>
<p align="justify">You can create a event collection rule targeting the management server to look for the events and create an alert. The alert will indicate the agent which is offline and details of other monitors related with the issue.</p>
<p>&nbsp;</p>
<div style="padding:5px;border:1px solid black;width:750px;overflow:auto;font-family:Consolas,Lucida Console;font-size:10pt;">
<table border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td valign="Top">
<div style="background:#cecece;padding:5px;font-family:Consolas,Lucida Console;font-size:10pt;">001<br />002<br />003<br />004<br />005<br />006<br />007<br />008<br />009<br />010<br />011<br />012<br />013<br />014<br />015<br />016<br />017<br />018<br />019<br />020<br />021<br />022<br />023<br />024<br />025<br />026<br />027<br />028<br />029<br />030<br />031<br />032<br />033<br />034<br />035<br />036<br />037<br />038<br />039<br />040<br />041</div>
</td>
<td nowrap="nowrap" valign="Top">
<div style="background:#fcfcfc;padding:5px;font-family:Consolas,Lucida Console;font-size:10pt;"><span style="color:darkgreen;">#Import SCOM Module</span><br /> <span style="color:blue;">Import-Module</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">OperationsManager</span><span style="color:black;">&nbsp;</span><br /> <br /> <span style="color:darkgreen;">#Establish SCOM Management Group Connection</span><br /> <span style="color:blue;">New-SCOMManagementGroupConnection</span><span style="color:black;">&nbsp;</span><br /> <br /> <span style="color:darkgreen;">#Retrieve all Unix Computers which are grey in console (offline)</span><br /> <span style="color:red;">$mc</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">get-scclass</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-name</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">Microsoft.Unix.Computer</span><br /> <span style="color:red;">$agents</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">get-scommonitoringobject</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-class</span><span style="color:black;">&nbsp;</span><span style="color:red;">$mc</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">isavailable</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-ne</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;True&#39;</span><span style="color:black;">}</span><span style="color:black;">&nbsp;</span><br /> <br /> <span style="color:darkgreen;">#Process Offline Agents</span><br /> <span style="color:darkblue;">foreach</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$agent</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">in</span><span style="color:black;">&nbsp;</span><span style="color:red;">$agents</span><span style="color:black;">)</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$maintmode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$agent</span><span style="color:darkgray;">.</span><span style="color:black;">InMaintenanceMode</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;"># Ignore Servers in Maintenance</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$maintmode</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:red;">$false</span><span style="color:black;">)</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;">#Get Agent Display Name</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$agentname</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$agent</span><span style="color:darkgray;">.</span><span style="color:black;">displayname</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;">#Get Ping Status</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$RespondsToPing</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:blue;">Test-Connection</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-ComputerName</span><span style="color:black;">&nbsp;</span><span style="color:red;">$agentname</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-quiet</span><span style="color:black;">&nbsp;</span><br /> <br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;">#Set Ping Status</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$RespondsToPing</span><span style="color:black;">)</span><span style="color:black;">{</span><span style="color:red;">$pingable</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Pingable&quot;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkblue;">else</span><span style="color:black;">{</span><span style="color:red;">$pingable</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Not Pingable&quot;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;">#Get HeartBeat Monitor Status</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$sh</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$agent</span><span style="color:darkgray;">.</span><span style="color:black;">GetMonitoringStateHierarchy</span><span style="color:black;">(</span><span style="color:black;">)</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$avail_mon</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$sh</span><span style="color:darkgray;">.</span><span style="color:black;">childnodes</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">MonitorDisplayName</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;Availability&#39;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$hb_mon</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$avail_mon</span><span style="color:darkgray;">.</span><span style="color:black;">childnodes</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">MonitorDisplayName</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;Unix/Linux Heartbeat Monitor&#39;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$hb_mon_state</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$hb_mon</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">healthstate</span><span style="color:black;">&nbsp;</span><br /> <br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkgreen;">#Get Configuration Rollup Status</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:darkblue;">if</span><span style="color:black;">&nbsp;</span><span style="color:black;">(</span><span style="color:red;">$hb_mon_state</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-ne</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Success&quot;</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-and</span><span style="color:black;">&nbsp;</span><span style="color:red;">$hb_mon_state</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-ne</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;Uninitialized&quot;</span><span style="color:black;">)</span><span style="color:black;">{</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$config_mon</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$sh</span><span style="color:darkgray;">.</span><span style="color:black;">childnodes</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">MonitorDisplayName</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;Configuration&#39;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$cert_mon</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$config_mon</span><span style="color:darkgray;">.</span><span style="color:black;">childnodes</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">MonitorDisplayName</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;WS-Management Certificate Health&#39;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$runas_mon</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$config_mon</span><span style="color:darkgray;">.</span><span style="color:black;">childnodes</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">|</span><span style="color:black;">&nbsp;</span><span style="color:blue;">where</span><span style="color:black;">&nbsp;</span><span style="color:black;">{</span><span style="color:red;">$_</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">MonitorDisplayName</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">-eq</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;WS-Management Run As Account Health&#39;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$cert_mon_state</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$cert_mon</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">healthstate</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$runas_mon_state</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:red;">$runas_mon</span><span style="color:darkgray;">.</span><span style="color:black;">item</span><span style="color:darkgray;">.</span><span style="color:black;">healthstate</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:red;">$status</span><span style="color:black;">&nbsp;</span><span style="color:darkgray;">=</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;PING_STATUS: $pingable HEARTBEAT_STATUS: $hb_mon_state CERTIFICATE_STATUS: $cert_mon_state, USER_ACCOUNT_STATUS: $runas_mon_state&quot;</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:blue;">write-eventlog</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-LogName</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;Operations Manager&#39;</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-source</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&#39;Health Service Script&#39;</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-id</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">1041</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-entrytype</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">Error</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Category</span><span style="color:black;">&nbsp;</span><span style="color:magenta;">0</span><span style="color:black;">&nbsp;</span><span style="color:darkblue;">-Message</span><span style="color:black;">&nbsp;</span><span style="color:darkred;">&quot;UNIX SCOM agent on $agentname is not sending a heartbeat  $status&quot;</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black;">}</span><br /> <span style="color:black;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:black;">}</span><br /> <span style="color:black;">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><span style="color:#0000ff;"></span></p>
<p><span style="color:#0000ff;"></span></p>
<p>&nbsp;</p>
<p>Happy SCOMing!!!</p>]]></content:encoded>
    </item>
  </channel>
</rss>