<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>teknoglot:</title>
	<atom:link href="http://www.teknoglot.se/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.teknoglot.se</link>
	<description>Techspeak for the socially diminished</description>
	<lastBuildDate>Fri, 18 May 2012 12:28:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Load-balanced SCOM2012 SDK Services for Network Illiterates [#opsmgr, #nlb]</title>
		<link>http://www.teknoglot.se/ms/opsmgr2012/load-balanced-scom2012-sdk-services-for-network-illiterates-opsmgr-nlb/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2012/load-balanced-scom2012-sdk-services-for-network-illiterates-opsmgr-nlb/#comments</comments>
		<pubDate>Fri, 18 May 2012 12:16:51 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2012]]></category>
		<category><![CDATA[Highly-Available]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[NLB]]></category>
		<category><![CDATA[OpsMgr]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=639</guid>
		<description><![CDATA[Prelude Now that System Center Operations Manager no longer has that pesky Root Management Server role; a server role that in larger environments quickly became the choking point and made creating a fully Highly-Available SCOM-environment both complex and frustrating to maintain and with little gain at that. With that gone and the SDK Service, or [...]]]></description>
			<content:encoded><![CDATA[<h2>Prelude</h2>
<p>Now that System Center Operations Manager no longer has that pesky Root Management Server role; a server role that in larger environments quickly became the choking point and made creating a fully Highly-Available SCOM-environment both complex and frustrating to maintain and with little gain at that. With that gone and the SDK Service, or Data Access Service, thriving on all of the Management Servers HA suddenly became pretty simple. All you have to do in SCOM2012 to make sure your management groups keep on kicking is to have at-least two Management Servers and your databases clustered.</p>
<p>This new distributed architecture does not only give easy HA, it also makes it possible to connect to the SDK-service—be it using the Operations Console or powershell to name two options—on <em>any</em> Management Server. This, in turn, provides for a completely new level of scalability. Choked on sessions? Deploy a new Management Server!</p>
<p>Anyway… given all this scalability and HA, would it not be nice if you could load-balance all these SDK-sessions you are going to be running from System Center Virtual Machine Manager, System Center Service Manager, System Center Orchestrator, regular scheduled powershell scripts and what-not?</p>
<p>Of course it would! And you can! The simple solution is to use the built-in Network Load Balancer (NLB for short) feature in Windows Server and that&#8217;s what we&#8217;re going to discuss in this post.<br />
Before we go, I&#8217;d like to point to a <a href="http://systemcentertech.com/2012/02/07/load-balance-scom-2012-operations-console-connections/">great article</a> written by <a href="http://systemcentertech.com/">Justin Cook</a> that is covering most bases but in a less for-dummies manner. So, yeah… I suppose this is the for-dummies version then. <img src='http://www.teknoglot.se/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Enjoy!</p>
<h2>Prerequisites</h2>
<p>We need to have the Network Load Balancing feature installed on all our targeted Management servers. The quick way to do this is using command-line (Windows Server 2008 R2 or later?).</p>
<pre class="brush: plain; title: ; notranslate">dism /online /enable-feature /featurename:NetworkLoadBalancingFullServer </pre>
<p>You also need a plan and some information about your new cluster. Make sure you have identified the following parameters before starting the configuration:</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 307px;" />
<col style="width: 307px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="padding-left: 7px; padding-right: 7px; border: solid 0.5pt;">A Dedicated Cluster IP-Address:</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;"></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">A Dedicated Cluster DNS Name:</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;"></td>
</tr>
<tr>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;">A list of SCOM2012 Management Servers:</td>
<td style="padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;"></td>
</tr>
</tbody>
</table>
</div>
<p>You can use this pre-flight table to take note of your IP-address, DNS Name and Server List.</p>
<h2>Create a New Cluster</h2>
<p>Open the Network Load Balancing Manager and create a new cluster.</p>
<p><img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance1.png" alt="" /></p>
<p>In the &#8220;New Cluster&#8221; dialogue, connect to one of your Management Servers.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance2.png" alt="" /></p>
<ol>
<li>Enter the name of a management server</li>
<li>Click Connect</li>
<li>Select the network interface to use</li>
<li>Click Next</li>
</ol>
<p>Select the settings on your first host in the cluster.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance3.png" alt="" /></p>
<ol>
<li>Make sure it&#8217;s the correct IP-address.</li>
<li>Click Next</li>
</ol>
<p>Set the Cluster IP-address.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance4.png" alt="" /></p>
<ol>
<li>Click Add</li>
<li>Enter your Dedicated Cluster IP-Address and Subnet mask</li>
<li>Click OK</li>
<li>Click Next</li>
</ol>
<p>If another IP-address is needed, like an IPv6 address, you simply repeat step 1-3 before proceeding to step 4.</p>
<p>Edit DNS Names and Cluster Operation Mode.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance5.png" alt="" /></p>
<ol>
<li>Select your Dedicated Cluster IP-address</li>
<li>Enter your chosen Dedicated Cluster DNS Name</li>
<li>Select Multicast mode</li>
<li>Click Next</li>
</ol>
<blockquote><p>Note: We are not going to delve into the Cluster Operation Mode in this guide, but this is what I use for Operations Manager 2012.<br />
If you are interested, here&#8217;s the KB on the various settings: <a href="http://support.microsoft.com/kb/323437">http://support.microsoft.com/kb/323437</a></p></blockquote>
<p>Set your Port Rules and Affinity Settings.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance6.png" alt="" /></p>
<ol>
<li>Verify that Affinity is set to &#8220;Single&#8221;. If not, Click &#8220;Edit…&#8221; and adjust.</li>
<li>Click Finish</li>
</ol>
<blockquote><p>Note: &#8220;Single&#8221; affinity tells the cluster to always direct the same client to the same host if possible. This is required to be able to maintain sessions.<br />
In the world of NLB, a &#8220;client&#8221; is an IP-address.</p></blockquote>
<h3>Post-Configuration</h3>
<p>Now that you have a cluster configured you have to make sure your SDK-clients are able to resolve the dedicated cluster DNS-name. The one you picked in the pre-flight table.</p>
<p>To enable name resolution you have to add your cluster DNS-name to your DNS-zone and point it to your dedicated cluster IP-address. Make it an A-record and it should work.</p>
<p>If you intend to use the cluster name from outside the local network or subnet—Operation Consoles or Powershell sessions for example—you would also need to verify that the router is able to handle the multicast packages. I am by no means a network guy, but asking the person behind that &#8220;Don&#8217;t blame the network&#8221; sign to help you access a NLB cluster on network <em>X </em>from network <em>Y</em> usually works. One way to troubleshoot this is to ping the cluster DNS-name from one of the hosts. If that works but you are still unable to ping from another network or subnet, then it might be a router setting.</p>
<h2>Adding Hosts to the Cluster</h2>
<p>With the cluster configured and up-and-running you need to add the rest of the Management Servers. Repeat this section for each Management Server you wish to add to the load-balancing cluster.</p>
<p>In the Network Load Balancing Manager, right-click your cluster and select &#8220;Add Host To Cluster&#8221;.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance7.png" alt="" /></p>
<p>Connect to your next Management Server to be added<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance8.png" alt="" /></p>
<ol>
<li>Enter the servername of the Management Server (&#8220;host&#8221; in cluster terminology)</li>
<li>Click Connect</li>
<li>Select the IP-address of the host</li>
<li>Click Next</li>
</ol>
<p>Verify your Host Parameters<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance9.png" alt="" /></p>
<ol>
<li>Doublecheck the IP-address</li>
<li>Click Next</li>
</ol>
<p>Verify the Port Rules<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance10.png" alt="" /></p>
<ol>
<li>Make sure that Load is Equal and Affinity is Single</li>
<li>Click Finish</li>
</ol>
<h2>Final Verification</h2>
<p>After each added host it would be proper to check if it was added correctly. The easiest way is to check their statuses in the Network Load Balancing Manager. Green is generally considered good and you want your hosts to be &#8220;Converged&#8221;.<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/05/051812_1216_Loadbalance11.png" alt="" /></p>
<p>Another way to verify functionality is to point your Operations Manager console to the Cluster DNS-name instead and connect. If you are in a lab or in an environment where it happens to be OK to shut down Management Servers you could try that as well.</p>
<p>Considering my note on routers in the Cluster Post-Configuration I guess it would be prudent to point out that you should test to launch SDK-sessions from all networks you intend to connect from to make sure that your routers are configured to handle these kinds of sessions.</p>
<h2>Postlude</h2>
<p>Now; as easy this may be I would personally argue that you should involve your network team <em>before</em> starting to deploy your load-balanced clusters. A little heads-up is always a good thing—I have noticed that network people rarely like surprises—and they might actually be able to help you all the way is you ask nicely. And maybe they&#8217;ll tell you right away that the routers need to be configured before-hand instead of giggling frantically in a corner at your feeble attempts to troubleshoot your fresh little cluster.</p>
<p>Soooo… have fun!</p>
<p>And remember; with great powers come great responsibility.</p>
<p>[Sheesh! This post got out of hand!]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2012/load-balanced-scom2012-sdk-services-for-network-illiterates-opsmgr-nlb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick-Hack: Send SMS through Powershell [#powershell]</title>
		<link>http://www.teknoglot.se/code/powershell/quick-hack-send-sms-through-powershell-powershell/</link>
		<comments>http://www.teknoglot.se/code/powershell/quick-hack-send-sms-through-powershell-powershell/#comments</comments>
		<pubDate>Tue, 15 May 2012 14:14:00 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[Quick-hack]]></category>
		<category><![CDATA[SMS]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=607</guid>
		<description><![CDATA[Decided to do a quick-hack/fast-publish on this one as I have had a bit less time to create a nice clean production-ready version as of yet&#8230; and people has been asking about how far off the article is. What this script does is to send a text message using a GSM/GPRS modem connected to a [...]]]></description>
			<content:encoded><![CDATA[<p>Decided to do a quick-hack/fast-publish on this one as I have had a bit less time to create a nice clean production-ready version as of yet&#8230; and people has been asking about how far off the article is.</p>
<p>What this script does is to send a text message using a GSM/GPRS modem connected to a local (or LAN-connected with local drivers) serial port using Powershell.</p>
<h3>Disclaimer!</h3>
<p>This script &#8220;works&#8221; but is not fit for production. See it as an example of the general concept to evolve and adapt into something worthy of production use.</p>
<p>What&#8217;s missing in the latest iteration is:</p>
<ul>
<li>A working Event-Handler to deal with asynchronous call-backs.</li>
<li>Support for AT+MSGW (write to modem memory)</li>
<li>Reusing messages in modem memory for multiple recipients.</li>
<li>Various error- and exeption-handlers.</li>
<li>Actually verifying that the modem is AT-capable.</li>
<li>Querying the system for available modems and their ports.</li>
</ul>
<h3>The Script</h3>
<p>So, a short note before digging into the script. Prerequisites for this script is that you have identified which COM-port to use and it&#8217;s supported baud-rates and whether it supports DTR or not. If you do not know what the hell I am talking about, you could probably have it work with my preconfigured settings anyway. If you are unsure about if your modem supports AT commands you could open a serial connection to the modem using Hyperterminal or PuTTY and run AT+CMGF=1. If supported, the return should be OK. If it is not supported (you get ERROR instead) you would have to use PDU-mode which require a bit of hex-encoding of your messages. This is nothing I have had to do yet and will not be including in this script. Maybe in the future. Maybe.</p>
<p>So, looking a some powershelling then. First thing would be to connect to the modem.</p>
<pre class="brush: powershell; title: ; notranslate">

# Create your instance of the SerialPort Class
$serialPort = new-Object System.IO.Ports.SerialPort
# Set various COM-port settings
$serialPort.PortName = &quot;COM1&quot;
$serialPort.BaudRate = 19200
$serialPort.WriteTimeout = 500
$serialPort.ReadTimeout = 3000
$serialPort.DtrEnable = &quot;true&quot;
# Open the connection
$serialPort.Open()
</pre>
<p>With the connection established, you the set to modem in AT-mode and start sending the message to the modem.</p>
<pre class="brush: powershell; title: ; notranslate">
# Tell the modem you want to use AT-mode
$serialPort.Write(&quot;AT+CMGF=1`r`n&quot;)

# Start feeding message data to the modem
# Begin with the phone number, international
# style and a &lt;CL&gt;... that's the `r`n part
$serialPort.Write(&quot;AT+CMGS=`&quot;+46888888888`&quot;`r`n&quot;)

# Now, write the message to the modem
$serialPort.Write(&quot;This is a test!`r`n&quot;)

# Send a Ctrl+Z to end the message.
$serialPort.Write($([char] 26))
</pre>
<p>As you may notice, the message is only stored in the modems memory until you send a Ctrl+z which will end the message and send it. It is possible to add more text to the message before sending it if you would like. Personally, I prefer to store the message into a regular powershell variable and pass that one to the script. The SerialPort library is sort of clever and a local phone number will probably work. For safety, I always use international number with country code as it will work every time.</p>
<p>Only thing left now is to close the serial port connection and end the script. Like this.</p>
<pre class="brush: powershell; title: ; notranslate">$serialPort.Close()</pre>
<h3>The Copy/Paste part&#8230;</h3>
<p>Here&#8217;s the entire script with some added control-features and check to avoid trying to send text messages with no serial connection.</p>
<pre class="brush: powershell; title: ; notranslate">

### DISCLAIMER ###
## This script is a quick-hack to demonstrate
## the basics of sending an SMS using an AT-
## compatible GSM modem connected a local
## serial port through PowerShell.
## No error-handling is implemented and this
## is NOT a script fit for production.
##################

# Create your instance of the SerialPort Class
$serialPort = new-Object System.IO.Ports.SerialPort
# Set various COM-port settings
$serialPort.PortName = &quot;COM1&quot;
$serialPort.BaudRate = 19200
$serialPort.WriteTimeout = 500
$serialPort.ReadTimeout = 3000
$serialPort.DtrEnable = &quot;true&quot;
# Open the connection
$serialPort.Open()
# Add variables for phone number and the message.
$phoneNumber = &quot;+46888888888&quot;
$textMessage = &quot;This is a test message!&quot;

try {
 $serialPort.Open()
}
catch {
 # Wait for 5s and try again
 # Told you this is a quick-hack, right?
 Start-Sleep -Seconds 5
 $serialPort.Open()
}
If ($serialPort.IsOpen -eq $true) {
 # Tell the modem you want to use AT-mode
 $serialPort.Write(&quot;AT+CMGF=1`r`n&quot;)
 # Start feeding message data to the modem
 # Begin with the phone number, international
 # style and a &lt;CL&gt;... that's the `r`n part
 $serialPort.Write(&quot;AT+CMGS=`&quot;$phoneNumber`&quot;`r`n&quot;)
 # Give the modem some time to react...
 Start-Sleep -Seconds 1
 # Now, write the message to the modem
 $serialPort.Write(&quot;$textMessage`r`n&quot;)
 # Send a Ctrl+Z to end the message.
 $serialPort.Write($([char] 26))
 # Wait for modem to send it
 Start-Sleep -Seconds 1
}
# Close the Serial Port connection
$serialPort.Close()
if ($serialPort.IsOpen -eq $false) {
 echo &quot;Port Closed!&quot;
}

# That's all folks
# Now, add call-backs, event-handlers, and return-
# message handling.
</pre>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/code/powershell/quick-hack-send-sms-through-powershell-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rant &#8211; The Concept of Booth-Babes</title>
		<link>http://www.teknoglot.se/tb/rant-the-concept-of-booth-babes/</link>
		<comments>http://www.teknoglot.se/tb/rant-the-concept-of-booth-babes/#comments</comments>
		<pubDate>Tue, 08 May 2012 17:18:05 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=603</guid>
		<description><![CDATA[Having visited a few conferences in the last years I have spotted a trend I didn&#8217;t think I would see in the IT-Pro sphere. You could probably call me naive for that but logically we should not encourage this trend. This is my appeal to all exhibitors of future conferences to re-evaluate the concept of [...]]]></description>
			<content:encoded><![CDATA[<p>Having visited a few conferences in the last years I have spotted a trend I didn&#8217;t think I would see in the IT-Pro sphere. You could probably call me naive for that but logically we should not encourage this trend. This is my appeal to all exhibitors of future conferences to re-evaluate the concept of booth-babes.</p>
<p>I will not go into the genus-political part of this discussion as of now&#8211;others are more eloquent and fit to handle that&#8211;but rather some of the more pragmatic sides to ditch the BB (short for Booth-Babe) and how that would gain us visitors as well as the exhibitors. I will also keep a pretty frank, and perhaps impolite, tone in this rant of mine.</p>
<p>So, here&#8217;s my top reasons, in no particular order, to give up the BBs.</p>
<h3>Reason #1 &#8211; BBs is disrupting the purpose of the exhibition</h3>
<p>When I go to a conference, I am there for the tech, to network and shake paws with the people I collaborate with on-line. It is also a good place to meet the actual corporations that I do business with and discuss their products between four eyes.<br />
I do not want to plow through a crowd of great white whales [Oops! I meant "males"] ogling the BBs to get to someone with actual knowledge about the products and solutions at hand.</p>
<h3>Reason #2 &#8211; BBs are alienating the visitors</h3>
<p>If you are a heterosexual male or a homosexual female, the BBs can actually make you embarrassed, shy and unwilling to approach the exhibitor for that sole reason.<br />
If you are not, you might find an exhibitor with BBs appalling and take another route for that sole reason.</p>
<h3>Reason #3 &#8211; BBs are intimidating the female visitors</h3>
<p>There is, of course, exceptions to this, but I actually discussed this matter with a couple of gentlewomen in the alumni lounge and they did say that they are both appalled and intimidated to the slightly clad BBs at one particular booth at this years MMS. They even used terms like &#8220;ridiculous&#8221; and &#8220;waste of space&#8221; to describe the phenomena.<br />
Now, I believe I can hear some of you readers thinking &#8220;what? Nice addition to the boring screens and &#8230;&#8221;. But imaging the opposite for a while. Imagine a whole bunch of Booth-Hunks instead. You know, Brad Pitt in Fight Club and the likes. I know I would be intimidated by that kind of display.</p>
<h3>Reason #4 &#8211; BBs makes it hard to know who to talk to</h3>
<p>Because of the BBs, it can at time be hard to know if the lady at the booth just happen to be a nice-looking knowledgeable tech-specialist or simply someone there to be eye-candy. Too many times have I had a conversation like this:<br />
- &#8220;Hi! So, tell me about [SystemX]. It looks kinda interesting on paper.&#8221;<br />
- &#8220;Hi! Uh, oh! Yeah! You should probably be talking to that guy over there. I don&#8217;t really know anything about their stuff.&#8221;<br />
I hate it. I want to be able to pick anyone in the booth and get a cohesive answer. You cannot be expert on everything and some people are more marketing focused, but at least they can give you the big picture before calling some techy fellow. Last year I had a really nice discussion with a nice lady from EMC that later on led to access to some beta code. Unfortunately, I had by then grown tired of the BBs and merely approached her since there were lines to the male exhibitors. Which brings me to&#8230;</p>
<h3>Reason #5 &#8211; Having BBs is disrespecting your female colleagues.</h3>
<p>There you are. You most certainly have some very talented women in your development teams&#8211;my experience is that&#8217;s where you&#8217;ll find most of them, as architects and lead developers&#8211;but for some reason your decide to hire a bunch of BBs to &#8220;spice it up a little&#8221;, &#8220;draw a little crowd&#8221;, &#8220;get the attention&#8221; and so forth. Do you really think your female colleagues appreciate that? Isn&#8217;t that diminishing their talent a bit? I am fairly sure that those who attend conferences for technical reasons and to do a bit of networking would take a nice technical discussion with anyone, however geeky she/he might be, rather than side-stepping a crowd or some figure head on my way there.</p>
<p>I don&#8217;t know. Maybe I am alone in this matter, but I&#8217;d really like to see this change. I would really like to see vendors and exhibitors trying to dazzle the visitors with great displays, clever uses of software and mind-blowing products rather than scantily clad women. </p>
<p>Ah, well. Thanks for your time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/tb/rant-the-concept-of-booth-babes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parameter Replacement in AlertName</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/parameter-replacement-in-alertname/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/parameter-replacement-in-alertname/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 20:04:48 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[MP Development]]></category>
		<category><![CDATA[OpsMgr]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=586</guid>
		<description><![CDATA[&#8230;and why you should not use it.]]></description>
			<content:encoded><![CDATA[<h3>&#8230;and why you should not use it.</h3>
<h4>A Disclimer</h4>
<h2>A Disclaimer</h2>
<p>I have had serious doubts about actually writing this article for almost a year now for reasons that I will explain further on. But as others have discovered this &#8220;feature&#8221; as well&#8211;maybe &#8220;hack&#8221; would be a better name for it&#8211;I feel the need to explain how it works and also why you should not use it. Knowledge is power, and even if I advice against using this technique it is also a good way to understand how SCOM uses display-strings in management packs.</p>
<p><br />
<h4>The Good News</h4></p>
<p><span id="more-586"></span></p>
<h2>The Good News</h2>
<p>Yes, you can use parameter replacement in you AlertName.</p>
<p>With &#8220;parameter replacement&#8221; i mean using some kind of substitute text, or mnemonic if you like, that at run-time get translated into something useful. If you have written any kind of alert generating rules or monitors, you most like included something like <em>$Data/Context/Property[@Name='SomeDataFromAPropertyBag']$</em> into your alert description.</p>
<p>In this dialog, you also have the possibility to set the Alert Name. And if you are lazy, like I am, you probably also noticed that it is impossible to insert any kind of dynamic data into that field as well. This is especially annoying when you are writing a management pack that needs to look different in the Alert Views in the console, and you want to monitor 50 different Events or Performance counters or Log entries that are pretty much the same apart from a Name or ID.<br />
Of course I could not refrain from copy-pasting a <em>$Data/Context&#8230;$</em> into the alert name only to realize that it simply is not being parsed and translated into the value of the specified parameter. Over time I have settled for a stand-point that it&#8217;s probably a performance issue and I have also used that as an argument for this apparent lack of simplicity that some of my customers have been questioning.</p>
<p>Two, maybe three, years later. Microsoft releases an update to the core agent monitoring packs. Much to my surprise, one performance monitor suddenly generated alerts with a dynamic performance value in the Alert Name. You know, that field that is not gettingt parsed I was mentioning in the earlier paragraph. It actually looked pretty bad and made it very much impossible to practice any kind of alert supression, but still. It actually had a parsed value in the Alert Name.<br />
As the lack of this feature had me irked before, I exported the core MP and started reading through the XML to find out how they did it. To my surprise, it was actually pretty simple if you ditched the Authoring Console and used your trusty text-editor instead.</p>
<p><br />
<h4>How To Do It</h4></p>
<h2>How To Do It</h2>
<p>In simple terms, if you know your SCOM XML out-side-in, you add the parameters to your &#8220;Alert&#8221; and modify your DisplayString, the one under LanguagePacks, to call that parameter by it&#8217;s relative ID.</p>
<p>Just in case you happen to be a regular mortal, here&#8217;s the step-by-step guide. <img src='http://www.teknoglot.se/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>In this example I have created a silly-simple Alert Generating EventLog rule in wich I have added some parameters to the description. It pretty much looks like this:<br />
<img src="http://www.teknoglot.se/wp/wp-content/uploads/2012/04/ParamReplacement_AlertDescriptionDialog.png" alt="Alert Description Dialog" /><br />
Saving the MP at this point I will have a new WriteAlert action with a bunch of parameters and a displaystring with a unique ID.<br />
The resulting XML-code for the WriteAlert action looks like this:</p>
<pre class="brush: xml; highlight: [7,8,9,10,11,12,13]; title: ; notranslate">
&lt;WriteAction ID=&quot;Alert&quot; TypeID=&quot;Health!System.Health.GenerateAlert&quot;&gt;
  &lt;Priority&gt;1&lt;/Priority&gt;
  &lt;Severity&gt;2&lt;/Severity&gt;
  &lt;AlertName /&gt;
  &lt;AlertDescription /&gt;
  &lt;AlertOwner /&gt;
  &lt;AlertMessageId&gt;$MPElement[Name=&quot;TestMP.MyEventlogAlertRule.AlertMessage&quot;]$&lt;/AlertMessageId&gt;
  &lt;AlertParameters&gt;
    &lt;AlertParameter1&gt;$Data/EventDescription$&lt;/AlertParameter1&gt;
    &lt;AlertParameter2&gt;$Data/LoggingComputer$&lt;/AlertParameter2&gt;
    &lt;AlertParameter3&gt;$Data/UserName$&lt;/AlertParameter3&gt;
    &lt;AlertParameter4&gt;$Data/EventNumber$&lt;/AlertParameter4&gt;
  &lt;/AlertParameters&gt;
  &lt;Suppression /&gt;
  &lt;Custom1 /&gt;
  &lt;Custom2 /&gt;
  &lt;Custom3 /&gt;
  &lt;Custom4 /&gt;
  &lt;Custom5 /&gt;
  &lt;Custom6 /&gt;
  &lt;Custom7 /&gt;
  &lt;Custom8 /&gt;
  &lt;Custom9 /&gt;
  &lt;Custom10 /&gt;
&lt;/WriteAction&gt;
</pre>
<p>In this slab of code, you&#8217;ve got the Parameters, their &#8220;relative ID&#8221; (the number in the Tag), and also the which is what you would need to search for among the displaystrings. Take note of the you want to use in your AlertName since you are going to need it later. A quick search for &#8220;TestMP.MyEventlogAlertRule.AlertMessage&#8221; will lead you to the actual message, which should looke similar to this:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;DisplayString ElementID=&quot;TestMP.MyEventlogAlertRule.AlertMessage&quot;&gt;
  &lt;Name&gt;I want Parameter Replacement here:&lt;/Name&gt;
  &lt;Description&gt;Event Description: {0}
{1}
{2}
{3}
  &lt;/Description&gt;
&lt;/DisplayString&gt;
</pre>
<p>You should have one of these for every language you have configured in your management pack.<br />
As you may notice, the Description does not contain any XPaths of any kind but rather references to the parameters defined in the WriteAction. That would be the {X} thingies within the description tags. You may also notice that the AlertParameters starts from &#8220;1&#8243; while the parameter references begin with &#8220;0&#8243;. In practice, that means that <em>{0}</em> in the displaystring definition equals to <em>AlertParameter1</em> <em></em>and so forth.</p>
<p>Now, with this in mind, adding a Parameter to AlertName if very simple and straight-forward. Simply decide which parameter your want to use and add it&#8217;s reference to the Name definition.<br />
So, let&#8217;s say I have the above alert message and I want to include <em>UserName</em> in the Alert Name, I would change the &lt;Name&gt; tag to:</p>
<pre class="brush: xml; title: ; notranslate">&lt;Name&gt;I want Parameter Replacement here:{2}&lt;/Name&gt;</pre>
<p>That&#8217;s it folks!<br />
Save the XML, make sure you verify it and import it into your Operations Manager LAB and watch the magic. Just make sure you continue reading this post as the next part about the downsides is pretty important.</p>
<p><br />
<h4>What's the Downside?</h4></p>
<h2>What&#8217;s the Downside?</h2>
<p>The negative effects of using Parameter Replacement in AlertName really boils down to two main perspectives. These are, if I may say to, pretty major and is the reason I have been reluctant on posting this, sort of, how-to.</p>
<h3>You are breaking your subscriptions and connectors!</h3>
<p>Apparently, parameter replacement is not working in subscriptions and connectors, be it 3:rd-party, Universal, Orchestrator IPs et.c. Basically anything other than the Operations Console will not be able to handle your parameters in AlertName. This will give you a <em>&#8220;{1} in {2} has received an error&#8221;</em> instead of <em>&#8220;veryimportant.log in C:\Logs\ImportantSystem\ has received an error&#8221;</em> in anything except the Operations Console. Now, this might not be a bad thing if the Operations Console is your only interface to Operations Manager, but if you would like to forward these alerts to a mobile phone, IM user or a mail recipient it will be utterly useless. I have not verified this, but I am not sure if Alert Suppression is actually parsing the parameters as well. Also. If you, by means of connectors or System Center Orchestrator, are generating incidents from alerts the AlertName forwarded will be equally useless for anyone receiving it.</p>
<h3>It&#8217;s killing your health perspective.</h3>
<p>Might sound drastic, but I&#8217;m quite serious about this. Using Parameter Replacement in AlertName might be useful for alert generating rules, but should never be used in a monitor. The reason is pretty simple actually. If you are using a monitor, you are without a doubt interested in it&#8217;s state. Otherwise, you would not use a monitor, am I right? I cannot see how it would make sense to create a monitor that does not reflect the health of a specific checkpoint. Much less having a monitor generating alerts that might confuse any service desk operator about what monitor that caused the alert. Also&#8211;I have not tested this&#8211;I assume that a monitor would not update it&#8217;s AlertName once the alert are generated making it more difficult to troubleshoot. Alert generating rules are, to me, something I tend to use only when all other options fail for some reason and I do not like to monitor things to cannot have health. And since parameters in AlertName is nothing for monitors I also question whether it actually is usable at all.<br />
<br />
<h4>Conclusion</h4></p>
<h2>The Conclusion</h2>
<p>While this is an interesting techique and a good way to enjoy MP Authoring and learn about the behaviour of display strings and languages in you Management Packs, I would definitely consider it a mostly academical exercise. Only in <span style="text-decoration: underline;">extreme</span> use-cases and situations would I consider it a viably option and while it might look good in the console, do be aware of the limitations. I have also not seen anything about it on MSDN, and I have serious doubts about it being a supported feature. I have personally been using it in transition to a &#8220;better&#8221; management pack to get alerting running quickly, yet a prefered solution would actually be using a custom datasouce and a decent macro-enabled text-editor&#8211;not to mention snippets&#8211;to bulk-generate your monitors and/or rules.</p>
<blockquote><p>MP Authoring<br />
is fun and powerful<br />
&#8211; be resposible</p></blockquote>
<p><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/parameter-replacement-in-alertname/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual OpenVPN Server at Home</title>
		<link>http://www.teknoglot.se/linux/virtual-openvpn-server-at-home/</link>
		<comments>http://www.teknoglot.se/linux/virtual-openvpn-server-at-home/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 07:37:39 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Virtual Appliance]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=584</guid>
		<description><![CDATA[I was going to write a post on how to install and configure your own virtual SSL-VPN server as I had in mind to make one myself as a means to surf safely while on hotspots and to access my System Center lab at home. I&#8217;m not gonna do that. Instead I just want to [...]]]></description>
			<content:encoded><![CDATA[<p>I was going to write a post on how to install and configure your own virtual SSL-VPN server as I had in mind to make one myself as a means to surf safely while on hotspots and to access my System Center lab at home.</p>
<p>I&#8217;m not gonna do that. Instead I just want to point to this free, already pre-configured, <a title="Free OpenVPN Appliance" href="http://www.vmware.com/appliances/directory/va/320963">OpenVPN Virtual Appliance</a>. Just follow its instructions and it will work quite nicely.</p>
<p>Have fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/linux/virtual-openvpn-server-at-home/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpsMgr 2007 R2 Documentation</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-r2-documentation/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-r2-documentation/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 21:52:27 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Sillyness]]></category>
		<category><![CDATA[Teach a Man to Fish]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=578</guid>
		<description><![CDATA[Here a link to the System Center Operations Manager 2007 R2 Documentation for those of you out there who keeps asking of its whereabouts and then tell me to not tell you to google for it. So now I can direct you to my site, tell you to click on &#8220;OpsMgr 2007&#8243; to the left [...]]]></description>
			<content:encoded><![CDATA[<p>Here a link to the <a title="System Center Operations Manager 2007 R2 Documentation" href="http://www.microsoft.com/download/en/details.aspx?id=4561">System Center Operations Manager 2007 R2 Documentation</a> for those of you out there who keeps asking of its whereabouts and then tell me to not tell you to <a title="opsmgr 2007 r2 documentation" href="http://www.google.se/search?q=opsmgr+2007+r2+documentation">google for it</a>.</p>
<p>So now I can direct you to my site, tell you to click on &#8220;OpsMgr 2007&#8243; to the left and browse through my posts instead of wasting precious time on googling and pretend being more helpful.<br />
To the rest of the world, sorry for wasting your time!</p>
<p>Happy now, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-r2-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bulk disable ACS Forwarders (with wildcards)</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/bulk-disable-acs-forwarders-with-wildcards/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/bulk-disable-acs-forwarders-with-wildcards/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 09:59:24 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[ACS]]></category>
		<category><![CDATA[OpsMgr]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=558</guid>
		<description><![CDATA[Here&#8217;s a little something-something for the wicked. Me and my apprentice is currently decommissioning an entire Management Group with a thousand (-ish) agents. Long story short, we got a new Management Group, migrated all the agents, added a couple of hundreds more, deployed a bunch of gateways and now we are shutting down the old [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little something-something for the wicked.</p>
<p>Me and my apprentice is currently decommissioning an entire Management Group with a thousand (-ish) agents. Long story short, we got a new Management Group, migrated all the agents, added a couple of hundreds more, deployed a bunch of gateways and now we are shutting down the old one.</p>
<p>Now, uninstalling the old Management Group from all the agents is a breeze using SCCM and handling the few 20-ish servers that are left is not a biggie either. Shutting down ACS, however, is a different matter.</p>
<p>Although you do configure your forwarders using Operations Manager, removing the management group you were running ACS in does not mean the agents will shut down and disable the AdtAgent service or stop trying to forward audit events to your collector. Now, selecting 10 agents at the time and running the &#8220;Disable Audit Collection&#8221; task&#8211;in case you did not know, there&#8217;s a limitation on how many agents you can run a task on in the Operations Console&#8211;is not my idea of a jolly good day and since Powershell is a bucket of joy in comparison; here&#8217;s a script for you all!</p>
<p><a href="http://www.teknoglot.se/wp/wp-content/uploads/2011/07/DisableACSForwarders.zip">DisableACSForwarders</a></p>
<p>It is zipped to avoid security alerts, but as with any script found on the internet I implore to to read the code before actually running it.</p>
<p>Anyway, you can use it in a couple of ways.</p>
<p>To run it interactively, just go to the directory where you unpacked it and run it. You will be requested to enter the FQDN of you Root Management Server and a wildcard search for ACS Forwarders.<br />
For example:</p>
<pre class="brush: plain; title: ; notranslate">PS C:\..\Scripts&gt; .\DisableACSForwarders.ps1
Root Management Server: rms.teknoglot.local
ACS Forwarder name (wildcard): *.teknoglot.local</pre>
<p>You can also run it with parameters (for scheduling?) like this:</p>
<pre class="brush: plain; title: ; notranslate">PS C:\..\Scripts&gt; .\DisableACSForwarders.ps1 rms.teknoglot.local *.teknoglot.local</pre>
<p>If you need to run the task with different credentials there&#8217;s a switch for that. Just add -UseCredentials to the command and you will be prompted for it.<br />
Like this:</p>
<pre class="brush: plain; title: ; notranslate">PS C:\..\Scripts&gt; .\DisableACSForwarders.ps1 -UseCredentials</pre>
<p>As you might already have realized, the wildcard search does not require actual wildcards. If you only want to disable the ACS forwarder on a single machine, just enter it&#8217;s FQDN. As for what wildcards it will accept; <a title="Supporting Wildcard Characters in Cmdlet Parameters" href="http://msdn.microsoft.com/en-us/library/aa717088%28VS.85%29.aspx" target="_blank">anything supported by the powershell -like operator</a> is valid.</p>
<p>[UPDATE!] You might get false failures when running the script on clustered machines because of a <a title="Bug with Microsoft Audit Collection Services Management Pack" href="https://connect.microsoft.com/OpsMgr/feedback/details/523453/bug-with-microsoft-audit-collection-services-management-pack" target="_blank">bug in the AC Management Pack</a></p>
<div id="imcontent"></div>
<p>&nbsp;</p>
<div id="imcontent"></div>
<p>For the source code, read on!</p>
<p><span id="more-558"></span></p>
<pre class="brush: powershell; title: ; notranslate">
## Using parameters for RMS and wildcard search
param(
 [string]$rootManagementServer = $(Read-Host -Prompt &quot;Root Management Server&quot;),
 [string]$filterAgents = $(Read-Host -Prompt &quot;ACS Forwarder name (wildcard)&quot;),
 [switch]$UseCredentials
)

## Make sure the $rootManagementServer variable is defined
while (-not $rootManagementServer) {
 Write-Host &quot;`nRoot Management Server MUST be defined!&quot; -ForegroundColor Red
 [string]$rootManagementServer = $(Read-Host -Prompt &quot;Root Management Server&quot;)
}

if ($UseCredentials -eq $true) {
 $taskCredentials = Get-Credential
}

$startLocation = Get-Location
$checkPSSnapin = Get-PSSnapin | where {$_.Name -eq &quot;Microsoft.EnterpriseManagement.OperationsManager.Client&quot;}
if ($checkPSSnapin -eq $null) {
 Add-PSSnapin &quot;Microsoft.EnterpriseManagement.OperationsManager.Client&quot;
}
$result = Set-Location &quot;OperationsManagerMonitoring::&quot;
$result = New-ManagementGroupConnection -ConnectionString:$rootManagementServer
$result = Set-Location $rootManagementServer

$acsForwarderClass = Get-MonitoringClass -Name &quot;Microsoft.SystemCenter.ACS.Forwarder&quot;
$agentNames = Get-MonitoringObject -monitoringclass:$acsForwarderClass | where {$_.Path -like $filterAgents} | Select Path
$successfulTasks = @()
$skippedTasks = @()
$failedTasks = @()

$monitoringClass = Get-MonitoringClass -Name &quot;Microsoft.SystemCenter.Agent&quot;
if ($agentNames -ne $null) {
 Write-Host &quot;`nFound&quot;$agentNames.Count&quot;ACS forwarders with wildcard $filterAgents&quot;
 Write-Host &quot;`n`nWaiting for 5 seconds to give you a chance to abort!`n&quot;
 Start-Sleep -Seconds 5
 Write-Host &quot;Time's UP!`n`n&quot;
 $agentNames | ForEach-Object {
 $agentName = $_.Path
 Write-Host &quot;Disabling Audit Collection on&quot; $agentName
 $monitoringObject = Get-MonitoringObject -monitoringclass:$monitoringClass | where {$_.DisplayName -like $agentName}
 $agentTask = $monitoringObject | Get-Task | where {$_.Name -eq &quot;Microsoft.SystemCenter.DisableAuditCollectionService&quot;}
 if ($monitoringObject.IsAvailable -eq $true) {
 if ($credentials -eq $null) {
 $result = Start-Task -Task $agentTask -TargetMonitoringObject $monitoringObject
 } else {
 $result = Start-Task -Task $agentTask -TargetMonitoringObject $monitoringObject -Credential $taskCredentials
 }
 if ($result.Status -eq &quot;Succeeded&quot;) {
 Write-Host &quot;Operation Successful!&quot; -ForegroundColor Green
 Write-Host `n
 $successfulTasks += $agentName
 } else {
 Write-Host &quot;Operation failed.&quot; -ForegroundColor Red
 Write-Host $result.ErrorMessage
 Write-Host `n
 $failedTasks += $agentName
 }
 } else {
 Write-Host &quot;The agent is unavailable, Skipping!&quot;
 Write-Host `n
 $skippedTasks += $agentName
 }
 }
 Write-Host &quot;Summary&quot;
 Write-Host &quot;`tSuccessful:`t&quot;$successfulTasks.count
 Write-Host &quot;`tFailed:`t`t&quot;$failedTasks.count
 Write-Host &quot;`tSkipped:`t&quot;$skippedTasks.count
} else {
 Write-Host &quot;`nNo ACS Forwarders found using wildcard $filterAgents&quot;
}

Set-Location $startLocation
</pre>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/bulk-disable-acs-forwarders-with-wildcards/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpsMgr 2007 Connectivity Map</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-connectivity-map/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-connectivity-map/#comments</comments>
		<pubDate>Tue, 17 May 2011 10:47:18 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[OpsMgr]]></category>
		<category><![CDATA[Quick Reference]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=505</guid>
		<description><![CDATA[  I&#8217;ve had this little visio drawing lying around on my desktop for a while now and I thought that it might be a nice thing to share. It is nothing ground breaking at all and all the information is available at the Operations Manager 2007 R2 Supported Configurations page on Technet, but I find the [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p><a href="http://www.teknoglot.se/wp/wp-content/uploads/2011/05/SCOM_Connectivity_Map.png" rel="lightbox[505]"><img class="alignleft size-medium wp-image-521" title="SCOM Connectivity Map" src="http://www.teknoglot.se/wp/wp-content/uploads/2011/05/SCOM_Connectivity_Map-300x279.png" alt="SCOM Connectivity Map" width="300" height="279" /></a>I&#8217;ve had this little visio drawing lying around on my desktop for a while now and I thought that it might be a nice thing to share.</p>
<p>It is nothing ground breaking at all and all the information is available at the <a title="Operations Manager 2007 R2 Supported Configurations" href="http://technet.microsoft.com/en-us/library/bb309428.aspx">Operations Manager 2007 R2 Supported Configurations</a> page on Technet, but I find the visual map easier to read and I use it personally to quickly look up all port openings for the most common components in Operations Manager.</p>
<p>It is missing a few components like ACS, AEM and XPlat, but I usually just look them up when needed.</p>
<p>Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/opsmgr-2007-connectivity-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to TG WinAutoSvc v1</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/introduction-to-tg-winautosvc-v1/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/introduction-to-tg-winautosvc-v1/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 10:35:47 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[Management Pack]]></category>
		<category><![CDATA[MP Development]]></category>
		<category><![CDATA[OpsMgr]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=489</guid>
		<description><![CDATA[Background For quite some time now I&#8217;ve had this idea spinning around in my head to write a couple of blog-posts about some of the more useful techniques available when building management packs. Many of these techniques are already described on MSDN and Technet- or other blogs as well as on various forums, but often [...]]]></description>
			<content:encoded><![CDATA[<h2>Background</h2>
<p>For quite some time now I&#8217;ve had this idea spinning around in my head to write a couple of blog-posts about some of the more useful techniques available when building management packs. Many of these techniques are already described on MSDN and Technet- or other blogs as well as on various forums, but often no more than small bits and pieces of them and I have yet to see some humanly readable information about how to tie them together into a useful management pack. I say &#8220;humanly readable&#8221; because the information you do find online so far may be clear and somewhat easy to understand for someone with a system development background and a pretty good idea of how object oriented development models tend to work. But the real life System Center Operations Manager engineer&#8211;you know the one who get those <em>&#8220;do you think we could monitor our &#8230;-system too?&#8221;</em> questions a couple of times a week, you know&#8230; you (most likely, being here)&#8211;tend to have a completely different background. Yet as their OpsMgr environment grows, so does the demand for custom monitoring and all of a sudden the former server engineer are now also a developer. A developer who has never before had the need to grasp such abstract concepts as classes, instances, inheritance and who probably never before have had any reason whatsoever to write any XML code.</p>
<h2>Purpose</h2>
<p>My idea for this series of posts is to shed some light into the world of the authoring console and modules and cookdown and so forth. I am by no means an accredited author, but I will do my best to stay human in this venture and in plain english try to explain why and how you do certain things when going from Management Pack templates, rules, monitors and the safe haven that is authoring in the Operations Console into making your scripts resuable, easy to extend and prime for cookdown using the Authoring Console and XML.</p>
<h2>The TG WinAutoSvc Management Pack</h2>
<p>To give the series some kind of context and at the same time not only be a matter of examples I will base them on a fully functional management pack that discovers and monitors all Windows services that are set to automatic startup. I know there is other similar management packs out there but I haven&#8217;t fancied any one of them yet, and since I had the idea of writing this series I decided that building a new one would be a good way to go. Some of the interesting features with this management pack is:</p>
<ul>
<li>You will get an instance of the service classes for each and every service.</li>
<li>It uses different classes for Own Process services and Shared Process services (svchost for example).</li>
<li>Every service have a health state (you can use them in distributed applications).</li>
<li>The service state monitors are inherited from their base classes, no coding neccesary.</li>
<li>There is only one discovery script for all kinds of windows services.</li>
<li>Extending the discovery to include different kinds of windows services, like kernel processes, is a matter of filtering.</li>
<li>It is Open Source and licensed under the <a title="Eclipse Public License v1" href="http://tg-winautosvc.googlecode.com/svn/trunk/LICENSE.TXT">Eclipse Public License v1</a>.</li>
</ul>
<p>Most of these features will be described thoroughly in later posts in the series and as development of it progresses I will document what I do, how I do it and why I do it in certain ways. Hopefully you will learn something new through this and get closer to becoming that MP Dev the organization asks for.<br />
In the mean time, feel free to download, look at the source code (which it by no means perfect) and try it out.</p>
<p>The TG WinAutoSvc monitoring management pack is available for download here:<br />
<a href="http://code.google.com/p/tg-winautosvc/downloads/detail?name=TG.WinAutoSvc.xml">http://code.google.com/p/tg-winautosvc/downloads/detail?name=TG.WinAutoSvc.xml</a></p>
<p>The latest revision of the source code is located here:<br />
<a href="http://code.google.com/p/tg-winautosvc/source/browse/trunk/TG.WinAutoSvc.xml">http://code.google.com/p/tg-winautosvc/source/browse/trunk/TG.WinAutoSvc.xml</a></p>
<p>A small word of advice though. If you implement this in your environment, remember that you probably have alot more automatic services than you would expect. Because of this, discovery is disabled by default.</p>
<p>Best of luck, and enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/introduction-to-tg-winautosvc-v1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<series:name><![CDATA[MP Dev: TG WinAutoSvc]]></series:name>
	</item>
		<item>
		<title>Server problems fixed! (hopefully)</title>
		<link>http://www.teknoglot.se/tb/server-problems-fixed-hopefully/</link>
		<comments>http://www.teknoglot.se/tb/server-problems-fixed-hopefully/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 20:50:12 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Technobabble]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=478</guid>
		<description><![CDATA[I think I got the server running ok now. I&#8217;ve been fiddling about quite alot and unfortunately don&#8217;t know which one action that fixed the problem. If I do figure it out, I will post it here. Site performance should be a bit better now.]]></description>
			<content:encoded><![CDATA[<p>I think I got the server running ok now.</p>
<p>I&#8217;ve been fiddling about quite alot and unfortunately don&#8217;t know which one action that fixed the problem. If I do figure it out, I will post it here.</p>
<p>Site performance should be a bit better now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/tb/server-problems-fixed-hopefully/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sluggish performance on teknoglot</title>
		<link>http://www.teknoglot.se/tb/sluggish-performance-on-teknoglot/</link>
		<comments>http://www.teknoglot.se/tb/sluggish-performance-on-teknoglot/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 21:14:02 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Technobabble]]></category>
		<category><![CDATA[Teknoglot]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/tb/sluggish-performance-on-teknoglot/</guid>
		<description><![CDATA[I, as well as others, have noticed some slow performance from my blog lately and I just wanted to let you know that the root cause have been identified as a bug in on of the crypto libs on the server. I haven&#8217;t found a working solution yet but are trying to keep an eye [...]]]></description>
			<content:encoded><![CDATA[<p>I, as well as others, have noticed some slow performance from my blog lately and I just wanted to let you know that the root cause have been identified as a bug in on of the crypto libs on the server. <br />
I haven&#8217;t found a working solution yet but are trying to keep an eye on the site regularly to be able to bounce the problematic services when they start to act up. <br />
Hopefully there will be a fix available soon. </p>
<p>Sorry for any inconvenience in the meantime. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/tb/sluggish-performance-on-teknoglot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Move complete, welcome to teknoglot.se!</title>
		<link>http://www.teknoglot.se/tb/move-complete-welcome-to-teknoglot-se/</link>
		<comments>http://www.teknoglot.se/tb/move-complete-welcome-to-teknoglot-se/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 13:07:41 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Technobabble]]></category>

		<guid isPermaLink="false">http://www.teknoglot.se/?p=439</guid>
		<description><![CDATA[Oh my God, I actually moved my blog for real. I think I&#8217;ve been putting this upp for nearly half a year now and even though I actually went and bought a &#8220;real&#8221; domain-name for it. But now it&#8217;d done. The server is now self-hosted and self-maintained. Now, that obviously gives me a bit more [...]]]></description>
			<content:encoded><![CDATA[<p>Oh my God, I actually moved my blog for real. I think I&#8217;ve been putting this upp for nearly half a year now and even though I actually went and bought a &#8220;real&#8221; domain-name for it.</p>
<p>But now it&#8217;d done. The server is now self-hosted and self-maintained. Now, that obviously gives me a bit more to do, but on the other hand. I can fix any problems myself and not have to create tickets and hope someone responding to them knows what they&#8217;re talking about.</p>
<p>The design is mostly borrowed, for now, but it works and I hope I did all the HTACCESS rules on the old server correct so that they forward all the old links to the same post on the new one.</p>
<p>So, welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/tb/move-complete-welcome-to-teknoglot-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m moving (finally)</title>
		<link>http://www.teknoglot.se/tb/im-moving-finally/</link>
		<comments>http://www.teknoglot.se/tb/im-moving-finally/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 11:10:52 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Technobabble]]></category>

		<guid isPermaLink="false">http://teknoglot.hartati.se/?p=376</guid>
		<description><![CDATA[If you&#8217;re seeing this, the move went OK. Anyway, I have tried to make sure that all the links, images and urls are still intact and that people are automatically redirected to the correct address on the new site too. I think I got it right, but who knows? Still fiddling with the themes thought. [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re seeing this, the move went OK. <img src='http://www.teknoglot.se/wp/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Anyway, I have tried to make sure that all the links, images and urls are still intact and that people are automatically redirected to the correct address on the new site too. I think I got it right, but who knows?</p>
<p>Still fiddling with the themes thought.</p>
<p>Sorry for the inconvenience!</p>
<p>ps. Post from the old site is a jump ahead.</p>
<p><span id="more-376"></span></p>
<p>Hi all,</p>
<p>I&#8217;m finally getting my <a title="aka. ass" href="http://en.wikipedia.org/wiki/Donkey">male donkey</a> out of the wagon and has started moving this blog to a new self-hosted server.</p>
<p>The current host is cheap and delivers quite the good service, but since I already have servers running 24/7 at home, with attached electric bills, and more than enough bandwidth for a couple of websites I find it silly paying for yet-another hosting solution.</p>
<p>Also, it is a good time to do some spring-cleaning and actually start using that teknoglot.se domain i bought some time ago. <img src='http://www.teknoglot.se/wp/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Hopefully, the transition will go mostly unnoticed apart from the automatic redirect (301 &#8211; Permanently moved) to the new domain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/tb/im-moving-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SNMP GET Errors in OpsMgr EventLog</title>
		<link>http://www.teknoglot.se/ms/opsmgr2007/snmp-get-errors-in-eventlog/</link>
		<comments>http://www.teknoglot.se/ms/opsmgr2007/snmp-get-errors-in-eventlog/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 21:28:07 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[OpsMgr 2007]]></category>
		<category><![CDATA[Errors]]></category>
		<category><![CDATA[Management Pack]]></category>
		<category><![CDATA[OpsMgr]]></category>
		<category><![CDATA[TroubleShooting]]></category>

		<guid isPermaLink="false">http://teknoglot.hartati.se/?p=306</guid>
		<description><![CDATA[I&#8217;ve been building a little SNMP Management Pack in the past few days to discover and monitor a bunch of PowerWare UPS&#8217;s, which turned out to take quite a lot more energy and time than expected. Mostly due to the facts that I am really bad with SNMP and how it works, I&#8217;ve never really [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been building a little SNMP Management Pack in the past few days to discover and monitor a bunch of PowerWare UPS&#8217;s, which turned out to take quite a lot more energy and time than expected. Mostly due to the facts that I am really bad with SNMP and how it works, I&#8217;ve never really looked into the inner working of building an SNMP management pack and also because we ran into a couple of errors preventing the discovery process to work alright.</p>
<p>To make it clear right away, this is not going to be a &#8220;Building an SNMP Management Pack Tutorial&#8221; since there&#8217;s plentiful good ones out there already, and to be extra helpful I&#8217;m gonna include a few links right away:</p>
<ul>
<li><a title="SNMP Setup and Simple Custom SNMP Discovery" href="http://www.systemcentercentral.com/BlogDetails/tabid/143/IndexID/66140/Default.aspx">SNMP Setup and Simple Custom SNMP Discovery</a> &#8211; Pretty much the basics</li>
<li><a title="SNMP Management Pack Example: NetApp Management Pack for SCOM 2007 R2 part 4" href="http://www.systemcentercentral.com/BlogDetails/tabid/143/IndexID/58919/Default.aspx">SNMP Management Pack Example: NetApp Management Pack</a> &#8211; Part 4 actually, but has the links to the other parts</li>
<li><a title="Creating SNMP Probe Based Monitors" href="http://www.systemcentercentral.com/Details/tabid/147/IndexID/58815/Default.aspx">Creating SNMP Probe Based Monitors</a> &#8211; No custom discovery, but a good and simple guide to SNMP Probes</li>
</ul>
<p>It&#8217;s the second, the NetApp one, I&#8217;ve used as a guide to building the UPS management pack since it goes through the process of building your own filtered discovery using SystemOID to identify your hardware-classes and then building the monitors on top of those.</p>
<h2>Let&#8217;s get to it</h2>
<p>When building the discovery of my hardware classes I ran into problems. The discovery simply did not work. At first I got some strange errors about &#8220;invalid queries&#8221;, something that turned out to be related to me reading two guides&#8211;seriously though, pick one guide that is closest to what you want to achieve and stick to it&#8211;and mixing up the XPathQuery variables. Silly me.<br />
I got those errors to go away and I was able to get a few objects to my base-class, but none of the hardware classes who was populated through the return value of an SNMP OID got discovered.<br />
The only error I got this time was the following:<span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;"><span style="line-height: 18px; white-space: pre;"><br />
</span></span></p>
<pre class="brush: plain; title: ; notranslate">Log Name:      Operations Manager
Source:        Health Service Modules
Date:          2010-09-02 11:19:12
Event ID:      11001
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      CENSORED
Description:
Error sending an SNMP GET message to IP Address XX.XX.XX.XX, Community String:=CENSORED, Status 0x6c.

One or more workflows were affected by this.

Workflow name: CENSORED.MP.CLASS.DISCOVERY
Instance name: CENSORED_DEVICENAME
Instance ID: {5C7EFB30-D885-8843-0DD7-EA86B4FD2311}
Management group: CENSORED
</pre>
<div>I went through all the other logical steps of troubleshooting an error like that which include double-checking firewall settings, OIDs, IP-addresses, allowed hosts and so forth. It wasn&#8217;t until I loaded the <a title="EATON Protocol Library" href="http://www.networkupstools.org/protocols/eaton/">PowerMIB</a> into a MIB Browser installed on the proxy machine (in this case a Management Server) I realized that there was no problem sending an SNMP GET to the UPS from that server. I launched Wireshark and had it listen to SNMP traffic between the UPS and the Management Server. The thing that struck me right-away was the fact that I could see the a bunch of &#8220;SNMP Get-Request&#8221; but no &#8220;SNMP Get-Response&#8221; which means that Operations Manager did send an SNMP GET but there was no response.</div>
<div>After a bit of intense staring i noticed what you see in the screenshot.</div>
<div></div>
<div><img class="alignnone size-full wp-image-307" title="SNMP Error in Wireshark" src="http://www.teknoglot.se/wp/wp-content/uploads/2010/09/snmp_error_wireshark.png" alt="SNMP Error in Wireshark" width="622" height="138" /></div>
<div>
</div>
<div>For some reason Operations Manager does not care about what SNMP version you configure when you do the initial discovery of a network device. Even if you do specify SNMP v1, you probes may very well be using SNMP v2c instead and in many cases that will result in these SNMP GET errors in the Operations Manager event log.</div>
<div>To avoid this, you haves to specify which SNMP version to use in your System.SnmpProbe according to the information provided here: <a href="http://msdn.microsoft.com/en-us/library/ee809331.aspx">http://msdn.microsoft.com/en-us/library/ee809331.aspx</a></div>
<div>Since I am such a nice guy, here&#8217;s an example of the working probe with the added line highlighted.</div>
<div>
<pre class="brush: xml; highlight: [4]; title: ; notranslate">
&lt;IsWriteAction&gt;false&lt;/IsWriteAction&gt;
&lt;IP&gt;$Config/IP$&lt;/IP&gt;
&lt;CommunityString&gt;$Config/CommunityString$&lt;/CommunityString&gt;
&lt;Version&gt;1&lt;/Version&gt;
&lt;SnmpVarBinds&gt;
	&lt;SnmpVarBind&gt;
		&lt;OID&gt;1.3.6.1.4.1.534.1.1.1.0&lt;/OID&gt;
		&lt;Syntax&gt;0&lt;/Syntax&gt;
		&lt;Value VariantType=&quot;8&quot;&gt;&lt;/Value&gt;
	&lt;/SnmpVarBind&gt;
	&lt;SnmpVarBind&gt;
		&lt;OID&gt;1.3.6.1.4.1.534.1.1.2.0&lt;/OID&gt;
		&lt;Syntax&gt;0&lt;/Syntax&gt;
		&lt;Value VariantType=&quot;8&quot;&gt;&lt;/Value&gt;
	&lt;/SnmpVarBind&gt;
	&lt;SnmpVarBind&gt;
		&lt;OID&gt;1.3.6.1.4.1.534.1.1.3.0&lt;/OID&gt;
		&lt;Syntax&gt;0&lt;/Syntax&gt;
		&lt;Value VariantType=&quot;8&quot;&gt;&lt;/Value&gt;
	&lt;/SnmpVarBind&gt;
&lt;/SnmpVarBinds&gt;
</pre>
<p>That&#8217;s it. Working perfectly now.</p>
<p>Best of luck to you too.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/ms/opsmgr2007/snmp-get-errors-in-eventlog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Linux Integration Services v2.1 on Red Hat ES 5</title>
		<link>http://www.teknoglot.se/linux/redhat-es/install-linuxis21-rhes5/</link>
		<comments>http://www.teknoglot.se/linux/redhat-es/install-linuxis21-rhes5/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 11:06:04 +0000</pubDate>
		<dc:creator>Sam T</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[RedHat ES]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RedHat]]></category>
		<category><![CDATA[RHES5]]></category>

		<guid isPermaLink="false">http://teknoglot.hartati.se/?p=291</guid>
		<description><![CDATA[Ok, so I got the task to install the Linux Integration Service for Hyper-V R2 on a RedHat Enterprise Server 5. Something that turned out to be a bit more to handle than I would have thought. So here's a little How-To.]]></description>
			<content:encoded><![CDATA[<p>Ok, so I got the task to install the Linux Integration Service for Hyper-V R2 on a RedHat Enterprise Server 5. Something that turned out to be a bit more to handle than I would have thought. So here&#8217;s a little How-To.</p>
<h3>Preparations</h3>
<p>Read the documentation provided in the Linux Integration Services download. Much of the information in this article is in there, but some parts are not. Otherwise I would not have bothered writing about it. <img src='http://www.teknoglot.se/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I&#8217;m not going to go through the OS installation process here, but make sure to select the &#8220;Software Development&#8221; packages since you will be needing it. In case you missed it, you can install them later by running these commands.</p>
<pre class="brush: plain; title: ; notranslate"># yum groupinstall &quot;Development Tools&quot;
# yum install kernel-headers</pre>
<p>I&#8217;m not actually sure that you need to run the kernel-headers install manually or if it&#8217;s included in the &#8220;Development Tools&#8221; package.</p>
<p>The first gotcha i ran into was the fact that the link to the Linux Integration Services&#8211;previously known as Linux Integration Components or LinuxIC&#8211;on RedHat&#8217;s information pages gave me a 404 and a redirect to a bing-search that returned the exact same 404. The page have simply been removed by Microsoft without any form of redirection to the new page. Anyway, a search on <a href="http://download.microsoft.com">http://download.microsoft.com</a> for &#8220;Linux Integration Components&#8221; do return the new page, and that&#8217;s where I learned about the new name.<br />
<em>Thank you for making it easy for us Microsoft!<br />
</em>Here&#8217;s a direct link to the search on the current name: <a href="http://www.microsoft.com/downloads/en/results.aspx?freetext=linux+integration+services&amp;displaylang=en&amp;stype=s_basic">http://www.microsoft.com/downloads/en/results.aspx?freetext=linux+integration+services&amp;displaylang=en&amp;stype=s_basic</a><br />
And here&#8217;s a direct link to the actual download page: <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=eee39325-898b-4522-9b4c-f4b5b9b64551</a></p>
<p>This download contains an ISO file that you can mount using the Hyper-V- or VMM-console, or you can do as I did and download the ISO to the virtual machine, mount it locally, copy the files and unmount it. Like this.</p>
<pre class="brush: plain; title: ; notranslate">
# mkdir /mnt/ISO
# mount -o loop /root/LinuxIC v21.iso /mnt/ISO
# mkdir /opt/linux_ic_v21_rtm
# cp /mnt/ISO/* -R /opt/linux_ic_v21_rtm/
# umount /mnt/ISO
</pre>
<p>You probably have to be root to do this by the way.<br />
With that done, let&#8217;s get to the installation.</p>
<h3>Installation</h3>
<p>As root, do the following:</p>
<pre class="brush: plain; title: ; notranslate">
# export PATH=$PATH:/sbin
# cd /opt/linux_ic_v21_rtm/
# make
# make install
# reboot
</pre>
<p>Why the export PATH command? Apparently, on RHES5, /sbin is not in the PATH by default and this is something that the make scripts are completely unaware of. The &#8220;make install&#8221; will try to run &#8220;depmod&#8221; which will fail since it&#8217;s not in the default path. You could also add &#8220;PATH=$PATH/sbin&#8221; to the root users ~/.bashrc which will put it back in the PATH but only for the root user, but I don&#8217;t know if that&#8217;s recommended.<br />
And, yes. You DO have to reboot after the install.</p>
<p>If you are running RHES5 64bit you also have to install the &#8220;adjtimex&#8221; package. It is in the RHN repository but also on the RHES5 Installation CD in case you have no internet connection. Install it with yum like this:</p>
<pre class="brush: plain; title: ; notranslate"># yum install adjtimex</pre>
<p>And from the CD (mount it first) like this:</p>
<pre class="brush: plain; title: ; notranslate"># rpm –ivh /mnt/cdrom/Server/adjtimex-1.20-2.1.x86_64.rpm</pre>
<p>And that&#8217;s basically it for the installation.</p>
<h3>Verification</h3>
<p>How do you know that the driver are installed?</p>
<p>After the reboot, try running &#8220;modinfo vmbus&#8221; which should return something like this:</p>
<pre class="brush: plain; title: ; notranslate"># modinfo vmbus
filename:       /lib/modules/2.6.18-194.11.1.el5/kernel/drivers/vmbus/vmbus.ko
version:        2.1.25
license:        GPL
srcversion:     3C1899C419665CB2514F2D0
depends:
vermagic:       2.6.18-194.11.1.el5 SMP mod_unload gcc-4.1
parm:           vmbus_irq:int
parm:           vmbus_loglevel:int</pre>
<p>Try that with netvsc, storvsc and blkvsc too (replace the <em>vmbus</em> part) and you should get something similar. If you don&#8217;t, the installation did not succeed.<br />
The documentation also tells us to check that the components are running with &#8220;/sbin/lsmod | grep vsc&#8221; which should return:</p>
<pre class="brush: plain; title: ; notranslate"># /sbin/lsmod | grep vsc
blkvsc                 70184  3
storvsc                64264  0
netvsc                 73504  0
vmbus                  88304  3 blkvsc,storvsc,netvsc
scsi_mod              196953  6 scsi_dh,sg,blkvsc,storvsc,libata,sd_mod</pre>
<p>The numbers will probably differ from installation to installation depending on blocksizes and allocation.</p>
<h3>Configuration</h3>
<p>Configuration is pretty straight-forward so I&#8217;ll keep this short.</p>
<p>When you install the drivers you will get a new network card called <strong>seth0</strong>, which I presume stands for Synthetic ETHernet. There&#8217;s nothing magic about it regarding configuration and &#8220;system-configuration-network&#8221; will work just fine.</p>
<p>The drivers will also give you a couple of SCSI-devices (if you have one attached) with the regular <strong>/dev/sd*</strong> naming. Simply configure these using fdisk or whatever GUI you might prefer.</p>
<p>There is also a note in the documentation about changing the grub configuration in the &#8220;Additional Information&#8230;&#8221; section. Do read that section.</p>
<h3>Additional Comments</h3>
<p>One thing I tend to do now that disk space is dirt cheap is to copy all ISO-files I use locally instead of mounting them when needed through Hyper-V. Simply because you can bet your insert-shorter-word-for-buttocks that the day you need it again, someone has been kind enough to have done som spring-cleaning or it&#8217;s locked by another machine in the cluster. If you have it locally and followed my instructions in the &#8220;Preparation&#8221; section, you will allready have a /mnt/ISO directory. Only thing you&#8217;ll have to do is</p>
<pre class="brush: plain; title: ; notranslate">
# mount -o loop /path/to/your.iso /mnt/ISO
</pre>
<p>And there you have it. Just remember to unmount it when you&#8217;re done.</p>
<p>I also almost never use the Hyper-V remote connection interface thingy since it will give you a GUI and the mouse just won&#8217;t work. If you haven&#8217;t configured a network card yet though, you could connect through Hyper-V and hit <em>Ctrl+Alt+F1</em> to get a command prompt. Unfortunatly cut/paste don&#8217;t work here, but you could run <em>system-configuration-network</em>, assign an IP-address and then connect with an SSH client. I prefer PuTTY to a degree that I usually install the ported version on my Linux desktops aswell.</p>
<p>And I never logon using root. People should know this, but it should be stressed anyway. Always logon as regular user and <em>su</em> or <em>sudo</em> when needed. I can&#8217;t understand why RHES has root-login enabled by default in the SSH-server config.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.teknoglot.se/linux/redhat-es/install-linuxis21-rhes5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

