<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jonathan Almquist on Operations Manager</title><link>http://blogs.technet.com/jonathanalmquist/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>AD Integration LDAP Queries</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/11/19/ad-integration-ldap-queries.aspx</link><pubDate>Thu, 19 Nov 2009 07:50:10 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3294990</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3294990.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3294990</wfw:commentRss><description>&lt;p&gt;Here are some useful scripts to check and update AD Integration settings using the Command Shell.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Check current Ldap query&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;get-managementserver | where {$_.name -eq &amp;quot;&lt;font color="#ff0000"&gt;fqdn&lt;/font&gt;&amp;quot;} | foreach-object {$_.getAgentAssignments()} | select LdapQuery&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Update LDAP Query&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;$LdapQuery = &amp;quot;&lt;font color="#ff0000"&gt;ldap_query&lt;/font&gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;$ms = get-managementserver | where {$_.name -eq &amp;quot;&lt;font color="#ff0000"&gt;fqdn&lt;/font&gt;&amp;quot;}&lt;/p&gt;  &lt;p&gt;$currentassignment = $ms.GetAgentAssignments() | where {$_.domain -eq &amp;quot;&lt;font color="#ff0000"&gt;dn&lt;/font&gt;&amp;quot;}&lt;/p&gt;  &lt;p&gt;$ms.EditAgentAssignment($currentAssignment.Domain, $LdapQuery, $currentAssignment.ExcludeList)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/17/operations-manager-2007-command-shell.aspx"&gt;Command Shell Main Menu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3294990" width="1" height="1"&gt;</description></item><item><title>Set failover management server for Gateway role</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/11/11/set-failover-management-server-for-gateway-role.aspx</link><pubDate>Thu, 12 Nov 2009 05:54:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3293284</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3293284.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3293284</wfw:commentRss><description>&lt;p&gt;This will set a failover Management Server for a Gateway role, leaving the currently configured primary Management Server.&lt;/p&gt;  &lt;p&gt;Beware of word wrap on the last two lines (should be one line).&lt;/p&gt;  &lt;p&gt;$gw = get-GatewayManagementServer | where {$_.Name -eq &amp;quot;&lt;font color="#ff0000"&gt;gw_fqdn&lt;/font&gt;&amp;quot;}    &lt;br /&gt;$pms = $gw | get-PrimaryManagementServer    &lt;br /&gt;$fms = get-ManagementServer | where {$_.Name -eq &amp;quot;&lt;font color="#ff0000"&gt;failover_fqdn&lt;/font&gt;&amp;quot;}    &lt;br /&gt;set-ManagementServer -GatewayManagementServer: $gw -PrimaryManagementServer: $pms -FailoverServer: $fms&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Verify primary and failover Management Servers with the following.&lt;/p&gt;  &lt;p&gt;$gw | foreach-object {   &lt;br /&gt;$_.getPrimaryManagementServer() | select Name    &lt;br /&gt;$_.getFailoverManagementServers() | select Name}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/17/operations-manager-2007-command-shell.aspx"&gt;command shell main menu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3293284" width="1" height="1"&gt;</description></item><item><title>Error 25351 – Failed to stop services</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/10/10/error-25351-failed-to-stop-services.aspx</link><pubDate>Sat, 10 Oct 2009 18:35:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3285983</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3285983.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3285983</wfw:commentRss><description>&lt;p&gt;So, here’s a quick post on this error.&amp;#160; I did a quick web search for this, just to see if anyone posted the same, and didn’t get any hits (something I always do before posting).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Problem&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is very common during an upgrade from SP1 to R2.&amp;#160; In fact, I don’t remember ever upgrading and not seeing this error.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_hGLdDuB2Hjc/StDPM0SC7PI/AAAAAAAAAS4/-EN-E5St-ww/s1600-h/image6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_hGLdDuB2Hjc/StDPNbob2AI/AAAAAAAAAS8/NfFekfosNVA/image_thumb2.png?imgmax=800" width="337" height="159" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Take a look at the text in the error dialog.&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;Error 25351 .Failed to stop services. Error Code: –2147023835 (The service cannot accept control messages at this time.).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Kind of funky, right?&amp;#160; I don’t know who’s putting these strings together, but I would think we’d have better sentence structure than this. ;-)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Solution&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Click Ok.&amp;#160; This is a known issue in the setup process, and can be ignored.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;More Information&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you take a look at the Application event log, you’ll see the event details shown in the error dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_hGLdDuB2Hjc/StDPNui7elI/AAAAAAAAATA/Da6A-1XhY0A/s1600-h/Capture12.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture" border="0" alt="Capture" src="http://lh3.ggpht.com/_hGLdDuB2Hjc/StDPN5w_iXI/AAAAAAAAATE/MloyuSrqKSM/Capture_thumb6.jpg?imgmax=800" width="454" height="502" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What was happening when this error occurred?&amp;#160; Take a look at the Operations Manager event log.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_hGLdDuB2Hjc/StDPOE-E6XI/AAAAAAAAATI/6gezLpH3q3k/s1600-h/Capture8.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Capture" border="0" alt="Capture" src="http://lh4.ggpht.com/_hGLdDuB2Hjc/StDPOq1FzmI/AAAAAAAAATM/LeRocUURL-0/Capture_thumb4.jpg?imgmax=800" width="519" height="457" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3285983" width="1" height="1"&gt;</description></item><item><title>Windows Server 200x Operating System Class</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/09/23/windows-server-200x-operating-system-class.aspx</link><pubDate>Wed, 23 Sep 2009 08:48:09 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3282609</guid><dc:creator>jtalmquist</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3282609.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3282609</wfw:commentRss><description>&lt;p&gt;While creating some content late last year and playing around with the &lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/01/get-monitoringclass.aspx"&gt;getClassPath script&lt;/a&gt;, I put together this chart of the Windows Server 200x Operating System class structure.&amp;#160; I stumbled across it while perusing my file system and, since I had put a fair amount of effort into it, I figured I would post it out here for everyone else to see.&amp;#160; I hope this will help in solidifying the concept of classes and hosting relationships.&lt;/p&gt;  &lt;p&gt;Graphical display of each of the Windows Operating System classes.&lt;/p&gt;  &lt;p&gt;* Microsoft.Windows.Server.2000.OperatingSystem   &lt;br /&gt;* Microsoft.Windows.Server.2003.OperatingSystem    &lt;br /&gt;* Microsoft.Windows.Server.2008.OperatingSystem    &lt;br /&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="493"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="491"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/WindowsServer200xOperatingSystemClass_AC8/Microsoft.Windows.Server.200x.OperatingSystem_Class_Diagram_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Microsoft.Windows.Server.200x.OperatingSystem_Class_Diagram" border="0" alt="Microsoft.Windows.Server.200x.OperatingSystem_Class_Diagram" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/WindowsServer200xOperatingSystemClass_AC8/Microsoft.Windows.Server.200x.OperatingSystem_Class_Diagram_thumb.jpg" width="519" height="698" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3282609" width="1" height="1"&gt;</description></item><item><title>Enable Agent Proxy for a Class (ClassProxyEnabler)</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/09/22/enable-agent-proxy-for-a-class-classproxyenabler.aspx</link><pubDate>Wed, 23 Sep 2009 01:20:06 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3282587</guid><dc:creator>jtalmquist</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3282587.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3282587</wfw:commentRss><description>&lt;p&gt;Agent Proxy needs to be enabled for several different management packs features to work properly.&amp;#160; Active Directory, Cluster and Exchange are few common management packs requiring Agent Proxy to be enabled, just to name a few.&amp;#160; Enabling the Agent Proxy security setting allows an agent to submit data on behalf of another source.&amp;#160; By default, this setting is not enabled for any agents.&amp;#160; So when we import a management pack which expects an agent to submit data not originating from that agent (other sources), we need to enable this security feature in order for some workflows to function.&lt;/p&gt;  &lt;p&gt;There are several scripts available in various posts which help accomplish this task, as it can be quite tedious selecting individual agents and configuring this manually.&amp;#160; There are even a couple tools published that have helped many administrators accomplish this task, both &lt;a href="http://blogs.msdn.com/boris_yanushpolsky/archive/2007/08/02/enabling-proxying-for-agents.aspx" target="_blank"&gt;GUI&lt;/a&gt; and &lt;a href="http://blogs.technet.com/cliveeastwood/archive/2007/08/30/operations-manager-2007-agent-proxy-command-line-tool-proxycfg.aspx" target="_blank"&gt;command line&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Since it’s usually a particular type or role which an agent hosts that requires Agent Proxy to be enabled, I thought it would be nice if we could run a script that would enumerate all agents that host a particular type or role and enable Agent Proxy in one pass.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="513"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="22"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Exclamation_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Exclamation" border="0" alt="Exclamation" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Exclamation_thumb_1.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="489"&gt;Test this script thoroughly in your lab environment before attempting to use in production to avoid mistakenly enabling or disabling agent proxy on unintended targets.&amp;#160; If you choose to run it against Windows Computer class, it will enable or disable it for all agents in the management group.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="19"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Note_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note" border="0" alt="Note" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Note_thumb.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="495"&gt;This script works its way up the parent class path, until it finds a Windows Computer object.&amp;#160; It then resolves the Agent Base Managed Entity Id and sets the Agent Proxy property.&amp;#160; If the class you choose does not resolve to a Windows Computer object, the script will fail.          &lt;br /&gt;          &lt;br /&gt;Keep in mind, this is a fairly raw script without error handling and many bells and whistles.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/GreenCircle_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="GreenCircle" border="0" alt="GreenCircle" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/GreenCircle_thumb.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="504"&gt;Here are a few classes I tested the script against, enabling Agent Proxy on agents which commonly need it enabled.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;         &lt;br /&gt;* &lt;strong&gt;&lt;em&gt;Microsoft.Windows.Server.DC.Computer&lt;/em&gt;&lt;/strong&gt; – all domain controllers&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;* &lt;strong&gt;&lt;em&gt;Microsoft.Windows.Cluster.Node&lt;/em&gt;&lt;/strong&gt; – all cluster nodes&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;* &lt;strong&gt;&lt;em&gt;Microsoft.Exchange.ServerRole.2003&lt;/em&gt;&lt;/strong&gt; – all exchange 2003 server roles&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;* &lt;strong&gt;&lt;em&gt;Microsoft.Exchange2007.ServerRole&lt;/em&gt;&lt;/strong&gt; – all exchange 2007 server roles&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;         &lt;br /&gt;If you want to return a list of all classes, run the following command:&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;         &lt;br /&gt;&lt;font face="Tunga"&gt;Get-MonitoringClass | Select DisplayName,Same | Sort DisplayName&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="20"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Question_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Question" border="0" alt="Question" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/Question_thumb.jpg" width="29" height="29" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="494"&gt;&lt;strong&gt;&lt;em&gt;Usage:&lt;/em&gt;&lt;/strong&gt;           &lt;br /&gt;          &lt;br /&gt;Copy the entire script below, everything between &lt;strong&gt;##--Begin&lt;/strong&gt; and &lt;strong&gt;##--End&lt;/strong&gt;, and paste into a text file in some location.&amp;#160; Name the file ClassProxyEnabler.ps1.           &lt;br /&gt;          &lt;br /&gt;Open Operations Manager Command Shell and type in the path to the script and the required parameters, and hit enter.           &lt;br /&gt;          &lt;br /&gt;&lt;strong&gt;Parameters&lt;/strong&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;strong&gt;Class Name:&lt;/strong&gt; This is the class system name, not the friendly name.           &lt;br /&gt;&lt;strong&gt;$True/$False:&lt;/strong&gt; $true to enable, $false to disable           &lt;br /&gt;&lt;strong&gt;Output directory:&lt;/strong&gt; The script logs all actions to this directory, with file name “class_date_time.txt”.&amp;#160; This directory must exist.&amp;#160; If there are spaces in the path, the path must be enclosed in quotes.           &lt;br /&gt;          &lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;           &lt;br /&gt;          &lt;br /&gt;&lt;font face="Tunga"&gt;c:\ClassProxyEnabler.ps1 Microsoft.Windows.Server.DC.Computer $true c:\out\&lt;/font&gt;           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/image_thumb_1.png" width="464" height="33" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Tunga"&gt;##--Begin ClassProxyEnabler.ps1 &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Tunga"&gt;Param($className,$bTF,$fileDir)      &lt;br /&gt;##--Get the class in which you want to set Agent Proxing       &lt;br /&gt;$class = Get-MonitoringClass | Where {$_.Name -eq $className}       &lt;br /&gt;##--Get all objects in that class       &lt;br /&gt;$objects = Get-MonitoringObject -monitoringClass:$class       &lt;br /&gt;##--Create an array of BME's       &lt;br /&gt;$arrBME = @()       &lt;br /&gt;Foreach ($object in $objects)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Do       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $parent = $object.getParentPartialMonitoringObjects()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Foreach ($oParent in $parent) {If ($oParent.FullName -match &amp;quot;Microsoft.Windows.Computer:&amp;quot;) {$object = $oParent}}       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Until ($object.FullName -match &amp;quot;Microsoft.Windows.Computer&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $arrBME += $object.Id.ToString()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;##--Create an array of agents to help script performance.       &lt;br /&gt;$agentArray = @()       &lt;br /&gt;Foreach ($agent in Get-Agent)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $agentArray += $agent       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;##--Create output file       &lt;br /&gt;$localTime = (get-date).ToLocalTime()       &lt;br /&gt;$year = $localTime.year.ToString()       &lt;br /&gt;$month = $localTime.month.ToString()       &lt;br /&gt;$day = $localTime.day.ToString()       &lt;br /&gt;$hour = $localTime.hour.ToString()       &lt;br /&gt;$min = $localTime.minute.ToString()       &lt;br /&gt;$fileName = $class.name + &amp;quot;_&amp;quot; + $year + &amp;quot;-&amp;quot; + $month + &amp;quot;-&amp;quot; + $day + &amp;quot;_&amp;quot; + $hour + &amp;quot;-&amp;quot; + $min + &amp;quot;.txt&amp;quot;       &lt;br /&gt;$filePath = $fileDir + $fileName       &lt;br /&gt;##--Walk through the array and set Agent Proxying for each agent       &lt;br /&gt;Foreach ($BME in $arrBME)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $i=0       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; While ($i -ne $agentArray.count)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If ($BME -eq $agentArray[$i].Id.ToString())       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ##--Screen formatting       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ##--If already set to preference, skip with message.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If ($agentArray[$i].ProxyingEnabled.Value -eq $bTF)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].ComputerName + &amp;quot;`tNo action taken&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].ComputerName + &amp;quot;`tNo action taken&amp;quot; | out-file $filePath -append       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $i = $agentArray.count       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ##--Allow operator to track screen output       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Start-Sleep -m 200       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ##--If not set to preference, modify with message.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].ComputerName + &amp;quot;`tModifying...&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].ComputerName + &amp;quot;`tModifying...&amp;quot; | out-file $filePath -append       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].set_proxyingEnabled($bTF)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $agentArray[$i].applyChanges()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $i = $agentArray.count       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ##--Allow operator to track screen output       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Start-Sleep -m 200       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $i+=1       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}       &lt;br /&gt;Write-Host &amp;quot;`n`n`n`nResults saved to $filePath`n`n`n&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Tunga"&gt;##--End ClassProxyEnabler.ps1&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Tunga"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Tunga"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="24"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/tip_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="tip" border="0" alt="tip" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/EnableAgentProxyforaClassClassProxyEnabl_11B39/tip_thumb.jpg" width="54" height="54" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="490"&gt;Schedule this script to run on a regular basis for the domain controller or cluster classes.&amp;#160; Whenever new domain controllers or cluster nodes come online, Agent Proxy will be enabled automatically.          &lt;br /&gt;          &lt;br /&gt;This script ONLY makes modifications if required.&amp;#160; In other words, there is no harm in running this multiple times.&amp;#160; Agent Proxy will only be modified if it does not match the $true or $false parameter supplied.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3282587" width="1" height="1"&gt;</description></item><item><title>Return SMTP Channel Email Addresses</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/09/11/return-smtp-channel-email-addresses.aspx</link><pubDate>Fri, 11 Sep 2009 09:15:31 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3280525</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3280525.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3280525</wfw:commentRss><description>&lt;p&gt;Get-NotificationRecipient | foreach-object {$_.devices | where {$_.protocol -eq &amp;quot;smtp&amp;quot;}} | select name,address&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/17/operations-manager-2007-command-shell.aspx"&gt;Command Shell Main Menu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3280525" width="1" height="1"&gt;</description></item><item><title>Domain Controllers not monitored state</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/09/04/domain-controllers-not-monitored-state.aspx</link><pubDate>Fri, 04 Sep 2009 20:29:23 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3279286</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3279286.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3279286</wfw:commentRss><description>&lt;p&gt;Do you have some domain controllers that are appearing in a “not monitored” state?&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/image_thumb_1.png" width="103" height="47" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="504"&gt;There are several reasons why an object would have a “not monitored” state.&amp;#160; There are two very common reasons why a domain controller appears in this state if you are running the AD MP.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;br /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;1.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;The domain controller does not have an agent installed.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;2.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;The domain controller has an agent installed, but it doesn’t report to this Management Group.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;blockquote&gt;&lt;/blockquote&gt;  &lt;p&gt;There is an option to remove these domain controllers that appear in a “not monitored” state.&amp;#160; You can refer to the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=008f58a6-dc67-4e59-95c6-d7c7c34a1447" target="_blank"&gt;Active Directory Management Pack Guide&lt;/a&gt; for details on this, but there are a couple points I will note here that will help answer some lingering questions.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="18"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note" border="0" alt="Note" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_thumb.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="496"&gt;&lt;em&gt;This is not intended to explain when or why you should remove this discovered inventory, rather some observations and notes I ran across while performing these steps in my lab.&amp;#160; Refer to official documentation to help determine if you really want to remove these not monitored domain controllers.&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_6.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note" border="0" alt="Note" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_thumb_2.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="509"&gt;&lt;em&gt;As of the date of this post, the current version of the AD MP is 6.0.6452.0.&amp;#160; The AD MP may change in subsequent versions.&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;How these object get discovered&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Forests, Domains, sites, site links, subnets, and domain controllers are all seeded in the &lt;strong&gt;&lt;em&gt;AD Topology Discovery&lt;/em&gt;&lt;/strong&gt;, which resides in &lt;strong&gt;&lt;em&gt;Microsoft.Windows.Server.AD.Library&lt;/em&gt;&lt;/strong&gt;.&amp;#160; This workflow runs on the Root Management Server.&lt;/p&gt;  &lt;p&gt;At a very high level, in this discovery, a connection is made to Active Directory and returns all domain controllers in the domain.&amp;#160; Each domain controller returned from Active Directory will be submitted as discovered inventory and all the corresponding relationships (e.g., connection points) will be created.&amp;#160; This is an all-inclusive discovery pass; no domain controller left behind.&lt;/p&gt;  &lt;p&gt;Whether or not the domain controller has an agent installed, the objects and relationships will be discovered and created in Operations Manager.&amp;#160; This is why we may see several, and in some cases hundreds of domain controllers that are in a “not monitored” state.&amp;#160; Because the state of a Windows Computer object cannot possibly be evaluated without first having an agent installed on that computer; with the exception of agentless monitoring, of course, but that’s a separate discussion.&lt;/p&gt;  &lt;p&gt;This explains case 1; the domain controller does not have an agent installed.&amp;#160; What about case 2; the domain controller has an agent installed, but it doesn’t report to this Management Group?&amp;#160; Read on.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;DiscoveryAgentOnly override&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you decide that you don’t like having all these domain controllers in a “not monitored” state, you can use this override option to remove this inventory and the associated relationships.&amp;#160; Be aware that the Active Directory Topology will no longer be completely accurate, and some monitoring workflows may not work as expected.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note" border="0" alt="Note" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_thumb_1.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="511"&gt;         &lt;p&gt;&lt;em&gt;I will not discuss the effects of removing this inventory, only steps to remove and observations while removing.&lt;/em&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;br /&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="523"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note" border="0" alt="Note" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Note_thumb_1.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="511"&gt;         &lt;p&gt;&lt;em&gt;See “Gotcha!” and “Workaround” sections below before enabling this override.&lt;/em&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;How domain controllers are discovered if DiscoverAgentOnly override is enabled&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here’s a high-level overview of discovery process in the AD Topology Discovery if this override is enabled.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;1.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;If DiscoverAgentOnly override equals TRUE, load up Command Shell and run Get-Agent.&amp;#160; Remember that this workflow runs on the RMS.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;2.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;This will return a list of all agents’ “Name” field in the Management Group and populate an array.&amp;#160; The Name field is the FQDN of the agent machine.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;3.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;Connect to Active Directory and query all the domain controllers in the domain.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;4.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;Compare the list of domain controllers returned by the LDAP query to the array of objects returned by the Get-Agent cmdlet.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;5.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;If DNSHostName from the LDAP query matches a FQDN from the Get-Agent array, submit discovery data for that object.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This explains the two cases above.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="516"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;1.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;The domain controller does not have an agent installed.          &lt;br /&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;Get-Agent command will not return that FQDN, because there is no agent installed.              &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;2.&lt;/td&gt;        &lt;td valign="top" width="504"&gt;         &lt;p&gt;The domain controller has an agent installed, but it doesn’t report to this Management Group.            &lt;br /&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;Get-Agent command will not return that FQDN, because even though there is an agent installed, it is not returned by Get-Agent because this cmdlet is Management Group specific.&lt;/font&gt;&lt;/em&gt;             &lt;br /&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;I enabled DiscoverAgentOnly, but this inventory didn’t go go away!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First, let’s double check the work.&amp;#160; Is this what you did?&lt;/p&gt;  &lt;p&gt;Override the AD Topology Discovery for all objects of class: Root Management Server&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/image_thumb_2.png" width="519" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Wait_2.jpg"&gt;&lt;em&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Wait" border="0" alt="Wait" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Wait_thumb.jpg" width="29" height="29" /&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;/td&gt;        &lt;td valign="top" width="507"&gt;&lt;em&gt;Wait…            &lt;br /&gt;This discovery runs every 24 hours, by default.&amp;#160; You’ll need to wait for the next interval to see results.&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;A couple things to verify&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;1.&lt;/td&gt;        &lt;td valign="top" width="507"&gt;Make sure Powershell and Command Shell are installed on the Root Management Server.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;2.&lt;/td&gt;        &lt;td valign="top" width="507"&gt;Ensure the PowershellInstallPath parameter in the overrides screen above is the correct path to Powershell on the RMS.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="10"&gt;3.&lt;/td&gt;        &lt;td valign="top" width="507"&gt;Ensure the OpsMgrInstallPath parameter in the overrides screen above is the correct path to Operations Manager installation directory on the RMS.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;You want to see results now?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want immediate results, also check the IntervalSeconds parameter and change this value to a smaller number (e.g., 300 = 5 minutes).&amp;#160; Wait for that duration and inventory should reflect desired results.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Exclamation_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Exclamation" border="0" alt="Exclamation" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Exclamation_thumb.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="505"&gt;&lt;em&gt;Remember to change this IntervalSeconds parameter back!            &lt;br /&gt;Default = 86400 (24hours)&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Gotcha!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There is a gotcha I haven’t mentioned yet, and it’s not documented.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Exclamation_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Exclamation" border="0" alt="Exclamation" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/Exclamation_thumb_1.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="505"&gt;&lt;em&gt;The Management Server Action Account requires Operations Manager Administrator User Role to run Get-Agent in Command Shell.&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The Default Action Account, which is usually a special Management Server Action Account which all Management Servers use by default for all workflows, may not have require privileges to run the Get-Agent cmdlet in Command Shell.&lt;/p&gt;  &lt;p&gt;The MSAA does not need to be an Operations Manager Administrator for normal operations, but it does need Operations Manager Administrator privileges to run the &lt;em&gt;AD Topology Discovery&lt;/em&gt; successfully if the &lt;em&gt;DiscoveryAgentOnly&lt;/em&gt; override is set to TRUE.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Workaround&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/GreenCircle_4.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="GreenCircle" border="0" alt="GreenCircle" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/GreenCircle_thumb_1.jpg" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="504"&gt;Be sure the Management Server Action Account domain account is a member of the Operations Manager Administrator domain security group.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This is necessary for the MSAA account to inherit privileges to perform the Get-Agent command in the discovery workflow.    &lt;br /&gt;    &lt;br /&gt;If the MSAA account is not added to Operations Manager Administrators &lt;strong&gt;&lt;em&gt;prior&lt;/em&gt;&lt;/strong&gt; to setting the DiscoverAgentOnly override to TRUE, you’ll notice that CMD.exe and Powershell.exe processes on the RMS will never return.&amp;#160; These will hang indefinitely and the discovery will not spawn any new thread until these are killed or the RMS Health Service is restarted.     &lt;br /&gt;    &lt;br /&gt;If the MSAA account is added to Operations Manager Administrator after setting the DiscoverAgentOnly override to TRUE, and at least one interval has passed, you need to kill those processes running under the MSAA or restart the Health Service on the RMS.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="515"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="10"&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/bug_2.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bug" border="0" alt="bug" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/DomainControllersnotmonitoredstate_D7BF/bug_thumb.gif" width="29" height="29" /&gt;&lt;/a&gt; &lt;/td&gt;        &lt;td valign="top" width="504"&gt;&lt;em&gt;This gotcha has been bugged and will hopefully be addressed in the next version of the AD MP.&amp;#160; My suggestion was to run this workflow under a privileged Run As Profile, which has permissions to run Get-Agent.&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;UPDATE: 11/05/2009&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The latest release of the AD MP guide (6.0.7065.0) has been revised, and now states that the Management Server Action Account must be a member of the Operations Manager Administrators group in low-privilege environments (page 27).&amp;#160; This means that the MSAA domain user account needs to be added to the Operations Manager administrator domain group, which will receive the Operations Manager Administrators User Role.&lt;/p&gt;  &lt;p&gt;Keep in mind that this is ONLY required if you plan on using the &lt;em&gt;Discover Agent Only&lt;/em&gt; option for the AD Topology discovery.&amp;#160; Otherwise, the MSAA does not require Operations Manager Administrators User Role.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3279286" width="1" height="1"&gt;</description></item><item><title>CScript spikes CPU – even with version 5.7</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/08/27/cscript-spikes-cpu-even-with-version-5-7.aspx</link><pubDate>Thu, 27 Aug 2009 20:24:24 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3277545</guid><dc:creator>jtalmquist</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3277545.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3277545</wfw:commentRss><description>&lt;p&gt;I ran across an issue recently where several CScript processes would peg the CPU for several seconds at a time.&amp;#160; You may have run across the same issue, and read some other articles about updating CScript to the latest version (5.7).&amp;#160; But, what if CScript.exe is already at version 5.7, like it was in this particular instance?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Short answer&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Apply the update package again.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I knew it was a problem with CScript, but after looking at the version and verifying it was the latest version, the problem was elusive.&amp;#160; I applied the update package again, simply because I was running out of ideas and figured it couldn’t hurt.&amp;#160; Well, it didn’t hurt.&amp;#160; It solved the problem.&lt;/p&gt;  &lt;p&gt;Here’s what I observed that made it so clear it was still a problem with CScript, in case you are having similar issues and need to prove this case in your environment.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Quick verification&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;How to quickly verify CScript is root cause in this situation.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.&amp;#160; Create a text file     &lt;br /&gt;2.&amp;#160; Paste &lt;font color="#0080ff"&gt;WScript.echo &amp;quot;hello&amp;quot;&lt;/font&gt; into it      &lt;br /&gt;3.&amp;#160; Save as %temp%\test.vbs      &lt;br /&gt;4.&amp;#160; Open a command prompt      &lt;br /&gt;5.&amp;#160; Type &lt;font color="#0080ff"&gt;CScript.exe %temp%\test.vbs&lt;/font&gt; and hit enter&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You will see this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb_5.png" width="519" height="66" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, what’s so special about that?&amp;#160; Well, how long did it take for &lt;font color="#0080ff"&gt;hello&lt;/font&gt; to output to screen?&amp;#160; If it took more than a millisecond, that’s too long.&amp;#160; In my case, it took 2 seconds just to echo a string.&amp;#160; That’s a problem!&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Verify issue with Procmon&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If you really want to see how this is affecting your agent machine, follow these steps.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.&amp;#160; Open up Procmon on the agent machine in question     &lt;br /&gt;2.&amp;#160; Setup your filter like so:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb_6.png" width="479" height="196" /&gt;&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;3.&amp;#160; Capture for a couple minutes.&amp;#160; You’ll see some CScript processes logged fairly soon, like so:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb_2.png" width="479" height="89" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;      &lt;br /&gt;Take a look at the Exit Status on all these CScript processes.&amp;#160; They are all over 2 seconds, and that’s why CPU is pegged for so long.      &lt;br /&gt;      &lt;br /&gt;4.&amp;#160; Take a look at the properties for any one of these CScript processes.&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_2.png"&gt;       &lt;br /&gt;        &lt;br /&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb.png" width="519" height="382" /&gt;&lt;/a&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_4.png"&gt;       &lt;br /&gt;        &lt;br /&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb_1.png" width="519" height="281" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As you can see from above, this is the current version of CScript.exe (5.7.0.165335) for Windows Server 2003.&amp;#160; But, after RE-applying the CScript update (same version), all these processes that were taking more than 2 seconds are now running in fractions of a second.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/CScriptspikesCPUevenwithversion5.7_AE5B/image_thumb_8.png" width="519" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3277545" width="1" height="1"&gt;</description></item><item><title>Multiple Management Groups, Single Data Warehouse (part 2)</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/07/04/multiple-management-groups-single-data-warehouse-part-2.aspx</link><pubDate>Sat, 04 Jul 2009 10:12:27 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3261158</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3261158.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3261158</wfw:commentRss><description>&lt;p&gt;In this series, I’m going to talk about multiple Management Groups sharing a single Data Warehouse.&amp;#160; I’ll try to clarify two common questions that come out of this scenario.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2009/06/21/multiple-management-groups-single-data-warehouse-part-1.aspx"&gt;Part 1 – Operations Manager Reporting Instance&lt;/a&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;Where do these components get installed?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Part 2 – ReportServer and ReportServerTempDB&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;Where do these databases reside?&lt;/p&gt;  &lt;p&gt;Here we go with part 2…&lt;/p&gt;  &lt;p&gt;While planning a consolidated reporting deployment, some thought needs to be given to where the reporting databases will be hosted.&amp;#160; However, the restrictions set forth by the SCOM Reporting Instance do not apply for the reporting databases.&amp;#160; As described in &lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2009/06/21/multiple-management-groups-single-data-warehouse-part-1.aspx"&gt;part 1&lt;/a&gt;, the SCOM Reporting Instance needs to be unique for each Management Group.&amp;#160; The reporting databases can be hosted by any SQL DB Engine, which is not dependent at all on any Management Group.&lt;/p&gt;  &lt;p&gt;Before I get into some common scenario’s for the reporting databases, I want to mention one caveat.&amp;#160; The Product Group does not officially support the reporting databases in a clustered configuration.&amp;#160; Although I have seen this configuration work well in some cases, I cannot recommend this configuration for obvious reasons.&amp;#160; This &lt;a href="http://blogs.technet.com/momteam/archive/2008/03/28/operations-manager-reporting-supported-ssrs-configurations.aspx" target="_blank"&gt;article&lt;/a&gt; from the MOM Team has served as an official statement of this configuration.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario 1&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I commonly see all reporting databases for each Management Group hosted on the Data Warehouse SQL DB Engine.&amp;#160; For example, a Data Warehouse shared between three Management Groups looks similar to the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_thumb.png" width="454" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario 2&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Another option is to host the reporting databases on another SQL Server.&amp;#160; I can see this as an option for a situation where a Data Warehouse is shared amongst more than two Management Groups, and performance may be of concern.&amp;#160; More specifically, if the Data Warehouse is currently being shared between two Management Groups, sharing this Data Warehouse to an additional Management Group may push these hardware resources over the top.&amp;#160; If this happens, there may be data insertion issues, especially during times of heavy report usage in either of the Management Groups.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_5.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_thumb_1.png" width="454" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Scenario 3&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Another option is to host the reporting databases on the same machine that is hosting the SCOM Reporting Instance, as follows.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_18.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_140FC/image_thumb_8.png" width="454" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As outlined here, the reporting database can be hosted by virtually any SQL DB Engine.&amp;#160; The scenario’s don’t end with what is listed above.&amp;#160; These are just some of the more common scenario’s.&lt;/p&gt;  &lt;p&gt;The most important thing to consider is performance.&amp;#160; If your initial design was to host all reporting databases on the same server hosting the share Data Warehouse, and your report users start observing latencies and performance degradation, there are options to move these reporting databases to another SQL DB Engine.&amp;#160; Feel free to mix and match these databases to optimize your reporting experience.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3261158" width="1" height="1"&gt;</description></item><item><title>In which Management Pack is this Group Stored?</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/06/30/in-which-management-pack-is-this-group-stored.aspx</link><pubDate>Wed, 01 Jul 2009 04:25:26 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3260215</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3260215.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3260215</wfw:commentRss><description>&lt;p&gt;Ever wonder which Management Pack you stored a particular group in?&amp;#160; Here’s the answer.&lt;/p&gt;  &lt;p&gt;ForEach ($Group in get-MonitoringObjectGroup) {If ($Group.DisplayName -eq &amp;quot;&lt;font color="#ff0000"&gt;&amp;lt;group_name&amp;gt;&lt;/font&gt;&amp;quot;) {get-MonitoringClass | where {$_.Id -eq $Group.Id.ToString()} | Foreach-Object {$_.getManagementPack()} | Select @{Name=&amp;quot;Group Name&amp;quot;;Expression={$Group.DisplayName}},@{Name=&amp;quot;MP Name&amp;quot;;Expression={$_.Name}},@{Name=&amp;quot;MP DisplayName&amp;quot;;Expression={$_.DisplayName}} | fl}}&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/17/operations-manager-2007-command-shell.aspx"&gt;Command Shell Main Menu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3260215" width="1" height="1"&gt;</description></item><item><title>Multiple Management Groups, Single Data Warehouse (part 1)</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/06/21/multiple-management-groups-single-data-warehouse-part-1.aspx</link><pubDate>Sun, 21 Jun 2009 10:53:50 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3257184</guid><dc:creator>jtalmquist</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3257184.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3257184</wfw:commentRss><description>&lt;p&gt;In this series, I’m going to talk about multiple Management Groups sharing a single Data Warehouse.&amp;#160; I’ll try to clarify two common questions that come out of this scenario.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Part 1 – Operations Manager Reporting Instance        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;Where do these components get installed?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2009/07/04/multiple-management-groups-single-data-warehouse-part-2.aspx"&gt;Part 2 – ReportServer and ReportServerTempDB&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;Where do these databases reside?&lt;/p&gt;  &lt;p&gt;Before I get started, I want to make one thing clear about clustered configurations.&amp;#160; The SCOM Report Server role is not cluster-aware, so the Report Server role cannot be installed in a clustered configuration.&amp;#160; The SSRS Instance cannot participate in a scaled-out deployment.&amp;#160; Nor is the reporting databases hosted in a clustered configuration officially supported.&amp;#160; This &lt;a href="http://blogs.technet.com/momteam/archive/2008/03/28/operations-manager-reporting-supported-ssrs-configurations.aspx" target="_blank"&gt;article&lt;/a&gt; by the MOM Team has served as the official statement on these configurations.&lt;/p&gt;  &lt;p&gt;Here we go with part 1…&lt;/p&gt;  &lt;p&gt;Throughout this post, I’ll talk about the &lt;em&gt;SCOM Reporting Instance&lt;/em&gt;.&amp;#160; When I mention the &lt;em&gt;SCOM Reporting Instance,&lt;/em&gt; I am referring to three components that make up SCOM Reporting.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Components of a SCOM Reporting Instance&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;· SCOM Report Server role&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· SQL Server Report Server (SSRS) instance&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;· Computer&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You might be wondering why I include “computer” as a component.&amp;#160; No kidding, we need a computer?&amp;#160; I added this as a component to help the reader visualize the concept, which you’ll understand in just a moment.&lt;/p&gt;  &lt;p&gt;There is a dependency between each of these components. We must think of the composition of the SCOM Reporting Instance as a single package that cannot be split. Also, a SCOM Reporting Instance cannot coexist with another SCOM Reporting Instance serving another Management Group.&lt;/p&gt;  &lt;p&gt;During the installation of the SCOM Report Server role, SSRS security is reconfigured to make use of SCOM security features &lt;em&gt;(User Roles)&lt;/em&gt; which are implemented in the SDK. Because of this, only one installation of the SCOM Report Server role can exist on a computer.&lt;/p&gt;  &lt;p&gt;Since the SCOM Report Server role installation has a dependency on a &lt;i&gt;local installation&lt;/i&gt; of a SSRS instance, we can deduce that there is a 1:1:1 relationship between the SCOM Report Server role, the SSRS instance and the computer in which these components are installed.&lt;/p&gt;  &lt;p&gt;We can also determine from these rules that the 1:1:1 relationship is strict, and that these components can neither be split, nor can these components be mixed and matched with other SCOM Reporting Instance components serving other Management Groups.&lt;/p&gt;  &lt;p&gt;Of course, we need not be concerned about these rules in single Management Group scenarios that are not sharing a Data Warehouse.&amp;#160; But if you are sharing a Data Warehouse amongst two or more Management Groups, these rules apply.&lt;/p&gt;  &lt;p&gt;Customers often get hung up on the “unique computer” for each SCOM Reporting Instance rule. Often I hear customers asking if they can combine SCOM Reporting Instances in a multiple Management Group scenario. This isn’t possible, as a SCOM Reporting Instance cannot coexist with another SCOM Reporting Instance serving another Management Group.&lt;/p&gt;  &lt;p&gt;Another point of confusion for customers is they have installed a SCOM Reporting Instance for the first Management Group on the server hosting the Data Warehouse. Later, they have deployed additional Management Groups and want to share the Data Warehouse. This is fine. But, again, the rules state that we cannot install another SCOM Reporting Instance on the server hosting the Data Warehouse. We must find another server to install the SCOM Reporting Instance. Additionally, each subsequent Management Group deployed that will share the Data Warehouse will require yet another unique server to install the SCOM Reporting Instance.&lt;/p&gt;  &lt;p&gt;In case there are any lingering questions, I provided a simple table that should solidify these rules.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_28FD/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/MultipleManagementGroupsSingleDataWareho_28FD/image_thumb_2.png" width="519" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Even though this seems like a simple concept, I get these questions on a regular basis.&amp;#160; I hope this clarifies the SCOM Reporting Instance and where these components are installed.&amp;#160; Next I’ll be talking about where the report server databases can be created, and describing a caveat if these databases are located on a Data Warehouse in a clustered configuration.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3257184" width="1" height="1"&gt;</description></item><item><title>DBCreateWizard Fails – CLR20r3</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/06/14/dbcreatewizard-fails-clr20r3.aspx</link><pubDate>Mon, 15 Jun 2009 05:14:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3254728</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3254728.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3254728</wfw:commentRss><description>&lt;p&gt;Came across an issue today that was really just a matter of me not reading the fine print.&amp;#160; I figured a quick post on this could help someone with the same issue.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;The problem&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;While attempting to install a database using &lt;em&gt;DBCreateWizard&lt;/em&gt;, I was receiving the following error.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="5" width="515" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="513"&gt;         &lt;p&gt;           &lt;br /&gt;Description:            &lt;br /&gt;&amp;#160; Stopped working &lt;/p&gt;          &lt;p&gt;Problem signature:           &lt;br /&gt;&amp;#160; Problem Event Name:&amp;#160;&amp;#160;&amp;#160; CLR20r3            &lt;br /&gt;&amp;#160; Problem Signature 01:&amp;#160;&amp;#160;&amp;#160; dbcreatewizard.exe            &lt;br /&gt;&amp;#160; Problem Signature 02:&amp;#160;&amp;#160;&amp;#160; 6.0.4900.0            &lt;br /&gt;&amp;#160; Problem Signature 03:&amp;#160;&amp;#160;&amp;#160; 4a05048f            &lt;br /&gt;&amp;#160; Problem Signature 04:&amp;#160;&amp;#160;&amp;#160; System.Data            &lt;br /&gt;&amp;#160; Problem Signature 05:&amp;#160;&amp;#160;&amp;#160; 2.0.0.0            &lt;br /&gt;&amp;#160; Problem Signature 06:&amp;#160;&amp;#160;&amp;#160; 49cc5a57            &lt;br /&gt;&amp;#160; Problem Signature 07:&amp;#160;&amp;#160;&amp;#160; 2481            &lt;br /&gt;&amp;#160; Problem Signature 08:&amp;#160;&amp;#160;&amp;#160; 2c            &lt;br /&gt;&amp;#160; Problem Signature 09:&amp;#160;&amp;#160;&amp;#160; System.Data.SqlClient.Sql            &lt;br /&gt;&amp;#160; OS Version:&amp;#160;&amp;#160;&amp;#160; 6.0.6002.2.2.0.274.10            &lt;br /&gt;&amp;#160; Locale ID:&amp;#160;&amp;#160;&amp;#160; 1033 &lt;/p&gt;          &lt;p&gt;Read our privacy statement:           &lt;br /&gt;&lt;a href="http://go.microsoft.com/fwlink/?linkid=50163&amp;amp;clcid=0x0409"&gt;http://go.microsoft.com/fwlink/?linkid=50163&amp;amp;clcid=0x0409&lt;/a&gt;            &lt;br /&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;The Cause&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I was installing an operational database for a second Management Group in an instance already containing an operational database, so I attempted to name the database &lt;strong&gt;&lt;em&gt;OperationsManager-MG2&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Note: It’s not recommended to host more than one OperationsManager database on a single instance in most environments.&amp;#160; Usually this would be done in a lab or development environment.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;The Solution&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Name the new database &lt;em&gt;&lt;strong&gt;OperationsManagerMG2&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;After research most every avenue, I popped open the deployment guide to see if there was anything I was missing about &lt;em&gt;DBCreateWizard&lt;/em&gt;.&amp;#160; I didn’t find anything directly pertaining to &lt;em&gt;DBCreateWizard&lt;/em&gt;, but after further reading I had a memory refresh.&lt;/p&gt;  &lt;p&gt;Page 103, number 12, of the R2 Deployment Guide states, “…&lt;em&gt;do not insert a ‘-‘ in the database name…&lt;/em&gt;”.&amp;#160; Doh!&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3254728" width="1" height="1"&gt;</description></item><item><title>Console sluggish or frozen during agent approval process</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/05/11/console-sluggish-or-frozen-during-agent-approval-process.aspx</link><pubDate>Tue, 12 May 2009 04:49:53 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3239342</guid><dc:creator>jtalmquist</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3239342.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3239342</wfw:commentRss><description>&lt;p&gt;I was working with a large customer last week, and found some very interesting performance metrics which impact console sessions.&amp;#160; This particular customer pushes the limits of Operations Manager 2007 in every way.&amp;#160; They have 6000+ agents in a single Management Group, and have an average of 50 concurrent console sessions at any given point in time.&amp;#160; Achieving these limits was a work in progress over several months, but eventually we got there.&lt;/p&gt;  &lt;p&gt;However, there was one very curious point of failure, where connected console sessions would become extremely sluggish or even freeze for a period of ~10 minutes.&amp;#160; It was something that eluded us for quite some time, until last week.&lt;/p&gt;  &lt;p&gt;If you are familiar with &lt;a href="http://support.microsoft.com/kb/956240" target="_blank"&gt;KB956240&lt;/a&gt;, you know that this hotfix updates the Operations Manager 2007 Data Abstraction Layer component (&lt;em&gt;Microsoft.mom.dataaccesslayer.dll&lt;/em&gt;).&amp;#160; Although &lt;em&gt;KB956240&lt;/em&gt; helps reduce the performance impact that the types configuration changes mentioned in the article will produce, there has been no change to the underlying configuration update process in Operations Manager 2007.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;The good news&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This configuration update process has been changed in Operations Manager 2007 R2.&amp;#160; This change will also be included in the Post SP1 Rollup.&amp;#160; In R2 and Post SP1 Rollup, Management Group configuration updates that occur during certain types of configuration changes will not produce such a performance impact.&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Am I affected by this issue?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;It depends on the number of agents in your Management Group, how heavily your company employs the console (concurrent connections), and how long it takes for configuration updates to reach agents in your environment.&lt;/p&gt;  &lt;p&gt;If you’ve got 6000 agents in your MG, you likely have a dynamic environment in which new servers (agents) are deployed regularly, and expired or failed servers (agents) are decommissioned on a regular basis.&amp;#160; &lt;em&gt;You are likely affected by this issue.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If your administrators are always in the console, you’ll likely have some complaints that the console became extremely slow or maybe even froze for a duration of ~10 minutes.&amp;#160; &lt;em&gt;You are likely affected by this issue.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If your Root Management Server and/or OperationsManager database server cannot handle the “bursty” type of traffic and transactions that configuration updates produce, or if there is significant network latency effecting the time it take configuration updates to reach your agent population, &lt;em&gt;you are likely affected by this issue.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Although each of the abovementioned conditions are true, every Management Group is affected by this issue.&amp;#160; It’s really a matter of how frequently you are affected, and to what degree your environment will be impacted.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;What can I do now?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;From what I’ve observed in the field, the biggest performance impact is produced from approving agents.&amp;#160; The only guidance I could give to help reduce the impact, at least during peak times where having poor console performance isn’t an option, is to schedule agent approval during times in which you know will not impact your console users quite as much.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;One thing to note&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Whether a single agent is approved, or a batch of 200 agents are approved, the same configuration update process is initiated.&amp;#160; If there are multiple agents waiting to be approved, select each agent and approve all at the same time.&amp;#160; Or, use an &lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2009/03/19/approve-manual-installations-and-updates.aspx"&gt;agent approval script&lt;/a&gt; that batches agent approval.&lt;/p&gt;  &lt;p&gt;If you have auto-approval turned on (indicated below in yellow), unfortunately there is no way to control the approval process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/Consolesluggishorfrozenduringagentapprov_124F0/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="97" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/Consolesluggishorfrozenduringagentapprov_124F0/image_thumb.png" width="371" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3239342" width="1" height="1"&gt;</description></item><item><title>Which MS are my agents currently connected to?</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/04/26/which-ms-are-my-agents-currently-connected-to.aspx</link><pubDate>Sun, 26 Apr 2009 22:26:17 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3230683</guid><dc:creator>jtalmquist</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3230683.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3230683</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;UPDATE:&amp;#160; 04-26-2009&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;While using this script at a customer site, outside of my small lab environment, I realized I could have made this script perform more efficiently.&amp;#160; My customer had ~500 agents, and this script took about 10 minutes to complete.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;I figured this was an important enough update to warrant a new post, so those that subscribe can grab the updated version.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is a very good question that has come on occasion.&amp;#160; However, this question cannot be answered by means of looking in the Operations Console or querying the Operations Manager databases.&lt;/p&gt;  &lt;p&gt;We can easily find out which Management Server is acting as a Primary for an agent.&amp;#160; We can also set Failover Management Server using AD Integration and using Powershell scripting methods.&lt;/p&gt;  &lt;p&gt;Everyone wants to know, after configuring failover servers (or not), which Management Server their agents are currently talking to.&amp;#160; We all want to know if our agents are reporting to the Management Servers we configured them to report to.&amp;#160; And, if they failover, are they failing over to the appropriate MS configured in the failover list?&lt;/p&gt;  &lt;p&gt;Here’s one way to find out!&lt;/p&gt;  &lt;p&gt;Simply copy the script below into the Command Shell on any Management Server, including the Root Management Server.&amp;#160; The results will show you a list of agents currently connected to that Management Servers Health Service.&amp;#160; It will also output whether an agent is currently in a Failed Over state.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Screenshot of script output&lt;/em&gt;&amp;#160; &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/WhichMSaremyagentscurrentlyconnectedto_C9FB/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="73" alt="image" src="http://blogs.technet.com/blogfiles/jonathanalmquist/WindowsLiveWriter/WhichMSaremyagentscurrentlyconnectedto_C9FB/image_thumb.png" width="387" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here’s the script.&amp;#160; Copy everything between the first ## and the last ##, and paste directly into the Command Shell on each of your Management Servers.&lt;/p&gt;  &lt;p&gt;##--Start copy here, include this line&lt;/p&gt;  &lt;p&gt;$AgentArray=@()    &lt;br /&gt;$Space = &amp;quot; &amp;quot;     &lt;br /&gt;foreach ($agent in get-agent | select Computername,@{name='IpAddress';expression={$_.IpAddress.split(&amp;quot;,&amp;quot;)[0].ToString()}},@{name='PrimaryMS';expression={$_.PrimaryManagementServerName.Split(&amp;quot;.&amp;quot;)[0]}})     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {$AgentArray+=$agent}     &lt;br /&gt;foreach ($RemoteEndPoint in [System.Net.NetworkInformation.IPGlobalProperties]::GetIPGlobalProperties().GetActiveTcpConnections() | where {$_.LocalEndPoint -match &amp;quot;5723&amp;quot;})     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $i=0     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; while ($i -ne $AgentArray.count)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($AgentArray[$i].IpAddress.ToString() -contains $RemoteEndPoint.RemoteEndPoint.Address.IPAddressToString)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $SpaceCount = 30 - $AgentArray[$i].Computername.length     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $FAgent = $AgentArray[$i].Computername + $Space*$SpaceCount     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ($AgentArray[$i].PrimaryMS -eq $env:ComputerName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $FStatus = &amp;quot;OK&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $FStatus = &amp;quot;Currently Failed Over&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Host $FAgent $FStatus     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $i=$AgentArray.count     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $i+=1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;##--End copy here, include this line&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Caveats&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;*Any agent that has more than one IP Address, only the first IP Address discovered will be used.&amp;#160; If the first IP Address discovered does not match the Active TCP Connections list on the MS, this agent will not appear in the list.&lt;/p&gt;  &lt;p&gt;**I’ve had problems in some network adapter configurations, where the results were not accurate.&amp;#160; This is immediately evident by spot checking the results.&amp;#160; I haven’t identified the exact cause of these rare cases.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/11/17/operations-manager-2007-command-shell.aspx"&gt;command shell main menu&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3230683" width="1" height="1"&gt;</description></item><item><title>All disk sizes (GB)</title><link>http://blogs.technet.com/jonathanalmquist/archive/2009/04/25/all-disk-sizes-gb.aspx</link><pubDate>Sat, 25 Apr 2009 21:27:40 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3230517</guid><dc:creator>jtalmquist</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/jonathanalmquist/comments/3230517.aspx</comments><wfw:commentRss>http://blogs.technet.com/jonathanalmquist/commentrss.aspx?PostID=3230517</wfw:commentRss><description>&lt;p&gt;/*Get each logical disk size, for each agent computer, by OS version.   &lt;br /&gt;This helps in calculating the Logical Disk Free Space Monitor from my    &lt;br /&gt;earlier &lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2009/04/04/logical-disk-free-space-monitor.aspx" target="_blank"&gt;post&lt;/a&gt;.&amp;#160; You can copy results into Excel, sort by system and    &lt;br /&gt;non-system drives, and perform an average disk size formula.&amp;#160; Then    &lt;br /&gt;plug Min, Max and Avg sizes into my &lt;a href="http://jtalmquist.spaces.live.com/blog/cns!68222E4C51E16B11!171.entry?wa=wsignin1.0&amp;amp;sa=395246359" target="_blank"&gt;Logical Disk Free Space Calculator&lt;/a&gt;    &lt;br /&gt;to find your unique MB and % thresholds for your company's unique    &lt;br /&gt;requirements.*/ &lt;/p&gt;  &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; PrincipalName AS 'Windows 2000', DisplayName_55270A70_AC47_C853_C617_236B0CFF9B4C AS 'Drive', CONVERT(bigint,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size_486ADDDB_2EB8_819A_FA24_8F6AB3E29543) / 1024000000 AS 'Size'    &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MTV_LogicalDisk    &lt;br /&gt;ORDER BY 'Windows 2000', 'Drive' &lt;/p&gt;  &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; PrincipalName AS 'Windows 2003', DisplayName_55270A70_AC47_C853_C617_236B0CFF9B4C AS 'Drive', CONVERT(bigint,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size_486ADDDB_2EB8_819A_FA24_8F6AB3E29543) / 1024000000 AS 'Size'    &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MTV_LogicalDisk_0    &lt;br /&gt;ORDER BY 'Windows 2003', 'Drive' &lt;/p&gt;  &lt;p&gt;SELECT&amp;#160;&amp;#160;&amp;#160;&amp;#160; PrincipalName AS 'Windows 2008', DisplayName_55270A70_AC47_C853_C617_236B0CFF9B4C AS 'Drive', CONVERT(bigint,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size_486ADDDB_2EB8_819A_FA24_8F6AB3E29543) / 1024000000 AS 'Size'    &lt;br /&gt;FROM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MTV_LogicalDisk_1    &lt;br /&gt;ORDER BY 'Windows 2008', 'Drive'&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3230517" width="1" height="1"&gt;</description></item></channel></rss>