<?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/"
	>

<channel>
	<title>musc@&#62; $daniele.rant &#124; Out-Blog &#187; Microsoft</title>
	<atom:link href="http://www.muscetta.com/category/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.muscetta.com</link>
	<description>Superior Dedication - If you try hard enough, you might even get it to work.</description>
	<lastBuildDate>Sun, 18 Jul 2010 15:22:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Microsoft Way</title>
		<link>http://www.muscetta.com/2010/07/18/microsoft-way/</link>
		<comments>http://www.muscetta.com/2010/07/18/microsoft-way/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 15:09:52 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[family]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[myself]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[picture]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=511</guid>
		<description><![CDATA[In the last couple of weeks we have been driving thru America from the east coast (New York) to the west coast (Seattle). I figured out I needed to show my family the Microsoft campus too. Of course they know I work at Microsoft&#8230; but having only seen the office of a subsidiary &#8211; the [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm5.static.flickr.com/4095/4802822777_810c1f9165.jpg" alt="Microsoft Way" /></p>
<p>In the last couple of weeks we have been driving thru America from the east coast (New York) to the west coast (Seattle).</p>
<p>I figured out I needed to show my family the Microsoft campus too. Of course they know I work at Microsoft&#8230; but having only seen the office of a subsidiary &#8211; the one in Rome, with about 250 people at its max &#8211; might not have given them (especially the kids) an idea of the actual size of the company.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2010/07/18/microsoft-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpsMgr Event IDs Spreadsheet</title>
		<link>http://www.muscetta.com/2010/06/22/opsmgr-event-ids-spreadsheet/</link>
		<comments>http://www.muscetta.com/2010/06/22/opsmgr-event-ids-spreadsheet/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 16:28:23 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[EventID]]></category>
		<category><![CDATA[eventlog]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[opsmgr]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[Spreadsheet]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=510</guid>
		<description><![CDATA[I work in support (mostly with System Center Operations Manager, as you know), and I work with event logs every day. The following are typical situations: I get a colleague or a customer telling me “I am having a problem and the SCOM agent is showing 21037 events and 20002 events.&#160; What’s wrong with it?”&#160;&#160;&#160; [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I work in support (mostly with System Center Operations Manager, as you know), and I work with event logs every day. The following are typical situations:</p>
<ol>
<li>I get a colleague or a customer telling me “I am having a problem and the SCOM agent is showing 21037 events and 20002 events.&#160; What’s wrong with it?”&#160;&#160;&#160; </li>
<li>I want to tune an OpsMgr environment and reduce load on the database by turning off a few event collections, as my friend Kevin Holman suggests here <a href="http://blogs.technet.com/kevinholman/archive/2009/11/25/tuning-tip-turning-off-some-over-collection-of-events.aspx">http://blogs.technet.com/kevinholman/archive/2009/11/25/tuning-tip-turning-off-some-over-collection-of-events.aspx</a> . </li>
<li>I am analyzing, sorting and grouping Events with Powershell like I have written on my blog lately <a href="http://www.muscetta.com/2009/12/16/opsmgr-eventlog-analysis-with-powershell/">http://www.muscetta.com/2009/12/16/opsmgr-eventlog-analysis-with-powershell/</a> but I can’t read those long descriptions properly. </li>
<li>I exported an EVT from a customer environment and I load it on a machine that does not have OpsMgr message DLLs installed – all I see are EventIDs and type (Warning, Error) – but no real description – and I still want to figure out what those events are trying to tell me. </li>
</ol>
<p>Getting to the point: I, like everyone – don’t have every OpsMgr event memorized.</p>
<p>This is why I thought of building this spreadsheet, and I hope it might come in handy to more people.</p>
<p>The spreadsheet contains an “AllEvents” list – and then the same events are broken down by event source as well:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.muscetta.com/wp-content/uploads/clip_image0023.jpg" width="678" height="49" /></p>
<p>When you want to search for an events (in one of the situations described above) just open up the spreadsheet, go to the “AllEvents” tab, hit <strong>CTRL+F</strong> (“Find”) and type in the Event ID you are searching for:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.muscetta.com/wp-content/uploads/clip_image0043.jpg" width="448" height="196" /></p>
<p>And this will take you to the row containing the event, so you can look up its description:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://www.muscetta.com/wp-content/uploads/clip_image0061.jpg" width="625" height="163" /></p>
<p>The description shows the event standard text (which is in the message DLL, therefore is the part you will not see if opening an EVT on another machine that does not have OpsMgr installed), and where the event parameters are (%1, %2, etc – which will be the strings you see in the EVT anyway).</p>
<p>That way you can get an understanding of what the original message would have looked like on the original machine.</p>
<p>This is just one possible usage pattern of this reference. It can also be useful to just read/study the events, learning about new ones you have never encountered, or remembering those you HAVE seen in the past but did not quite remember. And of course you can also find other creative ways to use it.</p>
<p><a href="http://cid-aaf797a1484e6150.office.live.com/view.aspx/Public/OpsMgr%5E_EventIDs.xlsx"><strong>You can get it from here</strong></a>.</p>
<p>&#160;</p>
<p>A few last words to give due credit: this spreadsheet has been compiled by using Eventlog Explorer (<a href="http://blogs.technet.com/momteam/archive/2008/04/02/eventlog-explorer.aspx">http://blogs.technet.com/momteam/archive/2008/04/02/eventlog-explorer.aspx</a> ) to extract the event information out of the message DLLs on a OpsMgr2007 R2 installation. That info has been then copied and pasted in Excel in order to have an “offline” reference. Also I would like to thank Kevin Holman for pointing me to Eventlog Explorer first, and then for insisting I should not keep this spreadsheet in my drawer, as it could be useful to more people!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2010/06/22/opsmgr-event-ids-spreadsheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to convert (and fixup) the RedHat RPM to run on Debian/Ubuntu</title>
		<link>http://www.muscetta.com/2010/06/21/how-to-convert-and-fixup-the-redhat-rpm-to-run-on-debianubuntu/</link>
		<comments>http://www.muscetta.com/2010/06/21/how-to-convert-and-fixup-the-redhat-rpm-to-run-on-debianubuntu/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 20:57:00 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[MP]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[repackage]]></category>
		<category><![CDATA[repackaging]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unsupported]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=505</guid>
		<description><![CDATA[In an earlier post I had shown how I got the Xplat agent running on Ubuntu. I perfected the technique over time, and what follows is a step-by-step process on how to convert and change the RedHat package to run on Debian/Ubuntu. Of course this is still a hack… but some people asked me to [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/">In an earlier post I had shown how I got the Xplat agent running on Ubuntu</a>. I perfected the technique over time, and what follows is a step-by-step process on how to convert and change the RedHat package to run on Debian/Ubuntu. Of course this is still a hack… but some people asked me to detail it a bit more. At the same time, the cross platform team is working to update the <a href="http://scx.codeplex.com/">the source code</a> on codeplex with extra bits that will make more straightforward to grab it, modify it and re-compile it than it is today. Until then, here is how I got it to work.</p>
<p>I assume you have already copied the right .RPM package off the OpsMgr server’s /AgentManagement directory to the Linux box here. The examples below refer to the 32bit package, but of course the same identical technique would work for the 64bit version.</p>
<p>We start by converting the RPM package to DEB format:</p>
<p>root# <b>alien -k scx-1.0.4-258.rhel.5.x86.rpm &#8211;scripts</b></p>
<p>scx_1.0.4-258_i386.deb generated</p>
<p>&#160;</p>
<p>Then we need to create a folder where we will extract the content of the package, modify stuff, and repackage it:</p>
<p>root# <b>mkdir scx_1.0.4-258_i386</b></p>
<p>root# <b>cd scx_1.0.4-258_i386</b></p>
<p>root# <b>ar -x ../scx_1.0.4-258_i386.deb</b></p>
<p>root# <b>mkdir debian</b></p>
<p>root# <b>cd debian</b></p>
<p>root# <b>mkdir DEBIAN</b></p>
<p>root# <b>cd DEBIAN</b></p>
<p>root# <b>cd ../..</b></p>
<p>root# <b>rm debian-binary</b></p>
<p>root# <b>mv control.tar.gz debian/DEBIAN/</b></p>
<p>root# <b>mv data.tar.gz debian/</b></p>
<p>root# <b>cd debian</b></p>
<p>root# <b>tar -xvzf data.tar.gz</b></p>
<p>root# <b>rm data.tar.gz</b></p>
<p>root# <b>cd DEBIAN/</b></p>
<p>root# <b>tar -xvzf control.tar.gz</b></p>
<p>root# <b>rm control.tar.gz</b></p>
<p>Now we have the “skeleton” of the package easily laid out on the filesystem and we are ready to modify the package and add/change stuff to and in it.</p>
<p>&#160;</p>
<p>First, we need to add some stuff to it, which is expected to be found on a redhat distro, but is not present in debian. In particular:</p>
<p>1. You should copy the file “functions” (that you can get from a <strong>redhat/centos box under /etc/init.d</strong>) under the <strong>debian/etc/init.d</strong> folder in our package folder. This file is required/included by our startup scripts, so it needs to be deployed too.</p>
<p>Then we need to chang some of the packacge behavior by editing files under <strong>debian/DEBIAN</strong>:</p>
<p>2. edit the “<strong>control</strong>” file (a file describing what the package is, and does):</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.muscetta.com/wp-content/uploads/clip_image0022.jpg" width="624" height="198" /></p>
<p>3. edit the “<strong>preinst</strong>” file (pre-installation instructions): we need to add instructions to copy the “<strong>issue</strong>” file onto “<strong>redhat-release</strong>” (as the SCX_OperatingSystem class will look into that file, and this is hard-coded in the binary, we need to let it find it):</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.muscetta.com/wp-content/uploads/clip_image0042.jpg" width="624" height="201" /></p>
<p>these are the actual command lines to add for both packages (DEBIAN or UBUNTU):</p>
<blockquote><p># symbolic links for libaries called differently on Ubuntu and Debian vs. RedHat</p>
<p>ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.6</p>
<p>ln -s /usr/lib/libssl.so.0.9.8 /usr/lib/libssl.so.6</p>
</blockquote>
<p><font color="#777777"></font></p>
<p>the following bit would be Ubuntu-specific:</p>
<blockquote><p>#we need this file for the OS provider relies on it, so we convert what we have in /etc/issue</p>
<p>#this is ok for Ubuntu (“Ubuntu 9.0.4 \n \l” becomes “Ubuntu 9.0.4”)</p>
<p>cat /etc/issue | awk &#039;/\\n/ {print $1, $2}&#039; &gt; /etc/redhat-release</p>
</blockquote>
<p><font color="#777777"></font></p>
<p>while the following bit is Debian-specific:</p>
<blockquote><p>#this is ok for Debian (“Debian GNU/Linux 5.0 \n \l” becomes “Debian GNU/Linux 5.0”)</p>
<p>cat /etc/issue | awk &#039;/\\n/ {print $1, $2, $3}&#039; &gt; /etc/redhat-release</p>
</blockquote>
<p>&#160;</p>
<p>4. Then we edit/modify the “<strong>postinst</strong>” file (post-installation instructions) as follows:</p>
<p>a. remove the 2<sup>nd</sup> and 3<sup>rd</sup> lines which look like the following</p>
<blockquote><p>RPM_INSTALL_PREFIX=</p>
<p>export RPM_INSTALL_PREFIX</p>
</blockquote>
<p>as they are only useful for the RPM system, not DEB/APT, so we don’t need them.</p>
<p>b. change the following 2 functions which contain RedHat-specific commands:</p>
<blockquote><p>configure_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /usr/lib/lsb/install_initd /etc/init.d/scx-cimd</p>
<p>}</p>
<p>start_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; service scx-cimd start</p>
<p>}</p>
</blockquote>
<p>c. We need to change in the Debian equivalents for registering a service in INIT and starting it:</p>
<blockquote><p>configure_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; update-rc.d scx-cimd defaults</p>
<p>}</p>
<p>start_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /etc/init.d/scx-cimd start</p>
<p>}</p>
</blockquote>
<p>5. Modify the “<strong>prerm</strong>” file (pre-removal instructions):</p>
<p>a. Just like “<strong>postinst</strong>”, remove the lines</p>
<blockquote><p>RPM_INSTALL_PREFIX=</p>
<p>export RPM_INSTALL_PREFIX</p>
</blockquote>
<p>b. Locate the two functions stopping and un-installing the service</p>
<blockquote><p>stop_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; service scx-cimd stop</p>
<p>}</p>
<p>unregister_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /usr/lib/lsb/remove_initd /etc/init.d/scx-cimd</p>
<p>}</p>
</blockquote>
<p>c. Change those two functions with the Debian-equivalent command lines</p>
<blockquote><p>stop_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /etc/init.d/scx-cimd stop</p>
<p>}</p>
<p>unregister_pegasus_service() {</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; update-rc.d -f scx-cimd remove</p>
<p>}</p>
</blockquote>
<p>At this point the change we needed have been put in place, and we can re-build the DEB package.</p>
<p>Move yourself in the main folder of the application (the <b>scx_1.0.4-258_i386</b> folder):</p>
<p>root# <b>cd ../..</b></p>
<p>Create the package starting from the folders</p>
<p>root# <b>dpkg-deb &#8211;build debian</b></p>
<p>dpkg-deb: building package `scx&#039; in `debian.deb&#039;.</p>
<p>Rename the package (for Ubuntu)</p>
<p>root# <b>mv debian.deb scx_1.0.4-258_Ubuntu_9_i386.deb</b></p>
<p>Rename the package (for Debian)</p>
<p>root# <b>mv debian.deb scx_1.0.4-258_Debian_5_i386.deb</b></p>
<p>Install it</p>
<p>root# <b>dpkg -i scx_1.0.4-258_Platform_Version_i386.deb</b></p>
<p>All done! It should install and work!</p>
<p>&#160;</p>
<p>Next step would be creating a Management Pack to monitor Debian and Ubuntu. It is pretty similar to what Robert Hearn has described <a href="http://blogs.msdn.com/scxplat/archive/2010/01/05/building-a-centos-management-pack-part-1.aspx">step</a> <a href="http://blogs.msdn.com/b/scxplat/archive/2010/01/15/building-a-centos-management-pack-part-2.aspx">by</a> <a href="http://blogs.msdn.com/b/scxplat/archive/2010/01/18/building-a-centos-management-pack-part-3.aspx">step</a> for CentOS, but with some different replacements of strings, as you can imagine. I have done this but have not written down the procedure yet, so I will post another article on how to do this as soon as I manage to get it standardized and reliable. There is a bit more work involved for Ubuntu/Debian… as some of the daemons/services have different names, and certain files too… but nothing terribly difficult to change so you might want to try it already and have a go at it!</p>
<p>In the meantime, as a teaser, here’s my server’s (<a href="http://www.muscetta.com">http://www.muscetta.com</a>) performance, being monitored with this “hack”:</p>
<p><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://www.muscetta.com/wp-content/uploads/image51.png" width="1018" height="567" /></p>
<p>&#160;</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &quot;AS IS&quot; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &quot;AS IS&quot; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.    <br />THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2010/06/21/how-to-convert-and-fixup-the-redhat-rpm-to-run-on-debianubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audit Collection Services Database Partitions Size Report</title>
		<link>http://www.muscetta.com/2010/05/05/audit-collection-services-database-partitions-size-report/</link>
		<comments>http://www.muscetta.com/2010/05/05/audit-collection-services-database-partitions-size-report/#comments</comments>
		<pubDate>Wed, 05 May 2010 21:45:31 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[ACS]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[opsmgr]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[reporting]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=499</guid>
		<description><![CDATA[A number of people I have talked to liked my previous post on ACS sizing. One thing that was not extremely easy or clear to them in that post was *how* exactly I did one thing I wrote: […] use the dtEvent_GUID table to get the number of events for that day, and use the [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>A number of people I have talked to liked <a href="http://www.muscetta.com/2010/03/18/a-few-thoughts-on-sizing-audit-collection-system/">my previous post on ACS sizing</a>. One thing that was not extremely easy or clear to them in that post was *how* exactly I did one thing I wrote:</p>
<blockquote><p><em>[…] use the <strong>dtEvent_GUID</strong> table to get the number of events for that day, and use the stored procedure “sp_spaceused”  against that same table to get an overall idea of how much space that day is taking in the database […]</em></p></blockquote>
<p>To be completely honest, I do not expect people to do this manually a hundred times if they have a hundred partitions. In fact, I have been doing this for a while with a script which will do the looping for me and run that sp_spaceused for me a number of time. I cannot share that script, but I do realize that this automation is very useful, therefore I wrote a “stand-alone” SQL query which, using a couple of temporary tables, produces a similar type of output. I also went a step further and packaged it into a SQL Server Reporting Services Report for everyone’s consumption. The report should look like the following screenshot, featuring a chart and the table with the numerical information about each and every partition in the database:</p>
<p><a href="http://www.muscetta.com/wp-content/uploads/image50.png" rel="lightbox[499]"><img style="display: inline; border: 0px;" title="ACS Partitions Report" src="http://www.muscetta.com/wp-content/uploads/image_thumb1.png" border="0" alt="ACS Partitions Report" width="640" height="351" /></a></p>
<p><a href="http://www.muscetta.com/wp-content/uploads/ACSPartitionsReport.zip">You can download the report from here</a>.</p>
<p>You need to upload it to your report server, and change the data source to the shared Data Source that also the built-in ACS Reports use, and it should work.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2010/05/05/audit-collection-services-database-partitions-size-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A few thoughts on sizing Audit Collection System</title>
		<link>http://www.muscetta.com/2010/03/18/a-few-thoughts-on-sizing-audit-collection-system/</link>
		<comments>http://www.muscetta.com/2010/03/18/a-few-thoughts-on-sizing-audit-collection-system/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 13:07:25 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[ACS]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[opsmgr]]></category>
		<category><![CDATA[queries]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[sizing]]></category>
		<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=495</guid>
		<description><![CDATA[People were already collecting logs with MOM, so why not the security log? Some people were doing that, but it did not scale enough; for this reason, a few years ago Eric Fitzgerald announced that he was working on Microsoft Audit Collection System. Anyhow, the tool as it was had no interface… and the rest [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>People were already collecting logs with MOM, so why not the security log? Some people were doing that, but it did not scale enough; for this reason, a few years ago <a href="http://blogs.msdn.com/ericfitz/">Eric Fitzgerald</a> announced that he was working on <a href="http://lists.jammed.com/loganalysis/2003/10/0024.html">Microsoft Audit Collection System</a>. Anyhow, the tool as it was had no interface… and the rest is history: it has been integrated into System Center Operations Manager. Anyhow, ACS remains a lesser-known component of OpsMgr.</p>
<p>There are a number of resources on the web that is worth mentioning and linking to:</p>
<ul>
<li>SecureVantage ACS Resource Kit <a title="http://www.securevantage.com/Products/ACSResourceKit.aspx" href="http://www.securevantage.com/Products/ACSResourceKit.aspx">http://www.securevantage.com/Products/ACSResourceKit.aspx</a></li>
<li>Securevantage has also some very nice online training “Master Classes” <a title="http://www.securevantage.com/ACSTraining.aspx" href="http://www.securevantage.com/ACSTraining.aspx">http://www.securevantage.com/ACSTraining.aspx</a></li>
<li>Old-ish Overview <a title="http://opsmgr2007.wikidot.com/system:audit-collection-services" href="http://opsmgr2007.wikidot.com/system:audit-collection-services">http://opsmgr2007.wikidot.com/system:audit-collection-services</a></li>
<li>Old-ish post by kevin <a title="http://blogs.technet.com/kevinholman/archive/2008/03/07/acs-internals-part-1.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/03/07/acs-internals-part-1.aspx">http://blogs.technet.com/kevinholman/archive/2008/03/07/acs-internals-part-1.aspx</a></li>
<li><a href="http://blogs.technet.com/momteam/archive/2009/05/08/acs-reports-for-windows-2008-and-windows-2008-r2.aspx"><span style="color: #333333;">ACS Reports for Win2008 </span>http://blogs.technet.com/momteam/archive/2009/05/08/acs-reports-for-windows-2008-and-windows-2008-r2.aspx</a></li>
<li><a title="http://blogs.msdn.com/scxplat/archive/2009/12/17/cross-platform-audit-collection-services-released.aspx" href="http://blogs.msdn.com/scxplat/archive/2009/12/17/cross-platform-audit-collection-services-released.aspx"><span style="color: #333333;">ACS for Cross-Platform </span>http://blogs.msdn.com/scxplat/archive/2009/12/17/cross-platform-audit-collection-services-released.aspx</a></li>
<li>Jimmy Harper’s Custom ACS Reports <a title="http://blogs.technet.com/jimmyharper/archive/2009/12/10/some-custom-acs-reports.aspx" href="http://blogs.technet.com/jimmyharper/archive/2009/12/10/some-custom-acs-reports.aspx">http://blogs.technet.com/jimmyharper/archive/2009/12/10/some-custom-acs-reports.aspx</a></li>
</ul>
<p>and, of course, many more, I cannot link them all.</p>
<p>As for myself, I have been playing with ACS since those early beta days (before <a href="http://blogs.msdn.com/dmuscett/archive/2004/11/18/263280.aspx">I joined Microsoft and before going back to MOM</a>, when I was working in Security), but I never really blogged about this piece.</p>
<p>Since I have been doing quite a lot of work around ACS lately, again, I thought it might be worth consolidating some thoughts about it, hence this post.</p>
<h3>Anatomy of an “Online” Sizing Calculation</h3>
<p>What I would like to explain here is the strategy and process I go thru when analyzing the data stored in a ACS database, in order to determine a filtering strategy: what to keep and what not to keep, by applying a filter on the ACS Collector.</p>
<p>So, the first thing I usually start with is using one of the many “ACS sizer” Excel spreadsheets around… which usually tell you that you need more space than it really is necessary… basically giving you a “worst case” scenario. I don’t know how some people can actually do this from a purely theoretical point of view, but I usually prefer a bottom up approach: I look at the actual data that the ACS is collecting without filters, and start from there for a better/more accurate sizing.</p>
<p>In the case of a new install this is easy – you just turn ACS on, set the retention to a few days (one or two weeks maximum), give the DB plenty of space to make sure it will make it, add all your forwarders… sit back and wait.</p>
<p>Then you come back 2 weeks later and start looking at the data that has been collected.</p>
<h3>What/How much data are we collecting?</h3>
<p>First of all, if we have not changed the default settings, the grooming and partitioning algorithm will create new partitioned tables every day. So my first step is to see how big each “partition” is.</p>
<p>But… what is a partition, anyway? A partition is a set of 4 tables joint together:</p>
<ol>
<li>dtEvent_GUID</li>
<li>dtEventData_GUID</li>
<li>dtPrincipal_GUID</li>
<li>dtSTrings_GUID</li>
</ol>
<p>where GUID is a new GUID every day, and of course the 4 tables that make up a daily partition will have the same GUID.</p>
<p>The <strong>dtPartition</strong> table contains a list of all partitions and their GUIDs, together with their start and closing time.</p>
<p>Just to get a rough estimate we can ignore the space used by the last three tables – which are usually very small – and only use the <strong>dtEvent_GUID</strong> table to get the number of events for that day, and use the stored procedure “sp_spaceused”  against that same table to get an overall idea of how much space that day is taking in the database.</p>
<p>By following this process, I come up with something like the following:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="391"><strong>Partition ID </strong></td>
<td width="64"><strong>Status </strong></td>
<td width="139"><strong>Partition Start Time </strong></td>
<td width="183"><strong>Partition Close Time </strong></td>
<td width="121"><strong>Rows </strong></td>
<td width="163"><strong>Reserved  KB </strong></td>
<td width="96"><strong>Total GB </strong></td>
</tr>
<tr>
<td width="391">9b45a567_c848_4a32_9c35_39b402ea0ee2</td>
<td width="64">0</td>
<td width="139">2/1/2010 2:00</td>
<td width="183">2/1/2010 2:00</td>
<td width="121">29,749,366</td>
<td width="163">7,663,488</td>
<td width="96" valign="bottom">7,484</td>
</tr>
<tr>
<td width="391">8d8c8ee1_4c5c_4dea_b6df_82233c52e346</td>
<td width="64">2</td>
<td width="139">1/31/2010 2:00</td>
<td width="183">2/1/2010 2:00</td>
<td width="121">28,067,438</td>
<td width="163">9,076,904</td>
<td width="96" valign="bottom">8,864</td>
</tr>
<tr>
<td width="391">34ce995b_689b_46ae_b9d3_c644cfb66e01</td>
<td width="64">2</td>
<td width="139">1/30/2010 2:00</td>
<td width="183">1/31/2010 2:00</td>
<td width="121">30,485,110</td>
<td width="163">9,857,896</td>
<td width="96" valign="bottom">9,627</td>
</tr>
<tr>
<td width="391">bb7ea5d3_f751_473a_a835_1d1d42683039</td>
<td width="64">2</td>
<td width="139">1/29/2010 2:00</td>
<td width="183">1/30/2010 2:00</td>
<td width="121">48,464,952</td>
<td width="163">15,670,792</td>
<td width="96" valign="bottom">15,304</td>
</tr>
<tr>
<td width="391">ee262692_beae_4d81_8079_470a54567946</td>
<td width="64">2</td>
<td width="139">1/28/2010 2:00</td>
<td width="183">1/29/2010 2:00</td>
<td width="121">48,980,178</td>
<td width="163">15,836,416</td>
<td width="96" valign="bottom">15,465</td>
</tr>
<tr>
<td width="391">7984b5b8_ddea_4e9c_9e51_0ee7a413b4c9</td>
<td width="64">2</td>
<td width="139">1/27/2010 2:00</td>
<td width="183">1/28/2010 2:00</td>
<td width="121">51,295,777</td>
<td width="163">16,585,408</td>
<td width="96" valign="bottom">16,197</td>
</tr>
<tr>
<td width="391">d93b9f0e_2ec3_4f61_b5e0_b600bbe173d2</td>
<td width="64">2</td>
<td width="139">1/26/2010 2:00</td>
<td width="183">1/27/2010 2:00</td>
<td width="121">53,385,239</td>
<td width="163">17,262,232</td>
<td width="96" valign="bottom">16,858</td>
</tr>
<tr>
<td width="391">8ce1b69a_7839_4a05_8785_29fd6bfeda5f</td>
<td width="64">2</td>
<td width="139">1/25/2010 2:00</td>
<td width="183">1/26/2010 2:00</td>
<td width="121">55,997,546</td>
<td width="163">18,105,840</td>
<td width="96" valign="bottom">17,681</td>
</tr>
<tr>
<td width="391">19aeb336_252d_4099_9a55_81895bfe5860</td>
<td width="64">2</td>
<td width="139">1/24/2010 2:00</td>
<td width="183">1/24/2010 2:00</td>
<td width="121">28,525,304</td>
<td width="163">7,345,120</td>
<td width="96" valign="bottom">7,173</td>
</tr>
<tr>
<td width="391">1cf70e01_3465_44dc_9d5c_4f3700dc408a</td>
<td width="64">2</td>
<td width="139">1/23/2010 2:00</td>
<td width="183">1/23/2010 2:00</td>
<td width="121">26,046,092</td>
<td width="163">6,673,472</td>
<td width="96" valign="bottom">6,517</td>
</tr>
<tr>
<td width="391">f5ec207f_158c_47a8_b15f_8aab177a6305</td>
<td width="64">2</td>
<td width="139">1/22/2010 2:00</td>
<td width="183">1/22/2010 2:00</td>
<td width="121">47,818,322</td>
<td width="163">12,302,208</td>
<td width="96" valign="bottom">12,014</td>
</tr>
<tr>
<td width="391">b48dabe6_a483_4c60_bb4d_93b7d3549b3e</td>
<td width="64">2</td>
<td width="139">1/21/2010 2:00</td>
<td width="183">1/21/2010 2:00</td>
<td width="121">55,060,150</td>
<td width="163">14,155,392</td>
<td width="96" valign="bottom">13,824</td>
</tr>
<tr>
<td width="391">efe66c10_0cf2_4327_adbf_bebb97551c93</td>
<td width="64">2</td>
<td width="139">1/20/2010 2:00</td>
<td width="183">1/20/2010 2:00</td>
<td width="121">58,322,217</td>
<td width="163">15,029,216</td>
<td width="96" valign="bottom">14,677</td>
</tr>
<tr>
<td width="391">0231463e_8d50_4a42_a834_baf55e6b4dcd</td>
<td width="64">2</td>
<td width="139">1/19/2010 2:00</td>
<td width="183">1/19/2010 2:00</td>
<td width="121">61,257,393</td>
<td width="163">15,741,248</td>
<td width="96" valign="bottom">15,372</td>
</tr>
<tr>
<td width="391">510acc08_dc59_482e_a353_bfae1f85e648</td>
<td width="64">2</td>
<td width="139">1/18/2010 2:00</td>
<td width="183">1/18/2010 2:00</td>
<td width="121">64,579,122</td>
<td width="163">16,612,512</td>
<td width="96" valign="bottom">16,223</td>
</tr>
</tbody>
</table>
<p>If you have just installed ACS and let it run without filters with your agents for a couple of weeks, you should get some numbers like those above for your “couple of weeks” of analysis. If you graph your numbers in Excel (both size and number of rows/events per day) you should get some similar lines that show a pattern or trend:</p>
<p><img style="display: inline; border-width: 0px;" title="Trend: Space user by day" src="http://www.muscetta.com/wp-content/uploads/clip_image002.gif" border="0" alt="Trend: Space user by day" width="700" height="291" /></p>
<p><img style="display: inline; border-width: 0px;" title="Trend: Number of events by day" src="http://www.muscetta.com/wp-content/uploads/clip_image004.gif" border="0" alt="Trend: Number of events by day" width="679" height="322" /></p>
<p>So, in my example above, we can clearly observe a “weekly” pattern (monday-to-friday being busier than the weekend) and we can see that – for that environment – the biggest partition is roughly 17GB. If we round this up to 20GB – and also considering the weekends are much quieter – we can forecast 20*7 = 140GB per week. This has an excess “buffer” which will let the system survive event storms, should they happen. We also always recommend having some free space to allow for re-indexing operations.</p>
<p>In fact, especially when collecting everything without filters, the daily size is a lot less predictable: imagine worms “trying out” administrator account’s passwords, and so on… those things can easily create event storms.</p>
<p>Anyway, in the example above, the customer would have liked to keep 6 MONTHS (180days) of data online, which would become 20*180 = 3600GB = THREE TERABYTE and a HALF! Therefore we need a filtering strategy – and badly – to reduce this size.</p>
<p>[edited on May 7th 2010 - if you want to automate the above analysis and produce a table and graphs like those just shown, <a href="http://www.muscetta.com/2010/05/05/audit-collection-services-database-partitions-size-report/">you should look at my following post</a>.]</p>
<h3>Filtering Strategies</h3>
<p>Ok, then we need to look at WHAT actually comprises that amount of events we are collecting without filters. As I wrote above, I usually run queries to get this type of information.</p>
<p>I will not get into HOW TO write a filter here – a collector’s filter is a WMI notification query and it is already described pretty well elsewhere how to configure it.</p>
<p>Here, instead, I want to walk thru the process and the queries I use to understand where the noise comes from and what could be filtered – and get an estimate of how much space we could be saving if filter one way or another.</p>
<p><strong>Number of Events per User</strong></p>
<p>&#8211;event count by User (with Percentages)<br />
declare @total float<br />
select @total = count(HeaderUser) from AdtServer.dvHeader<br />
select count(HeaderUser),HeaderUser, cast(convert(float,(count(HeaderUser)) / (convert(float,@total)) * 100) as decimal(10,2))<br />
from AdtServer.dvHeader<br />
group by HeaderUser<br />
order by count(HeaderUser) desc</p>
<p>In our example above, over the 14 days we were observing, we obtained percentages like the following ones:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="138" valign="bottom"><strong>#evt </strong></td>
<td width="268" valign="bottom"><strong>HeaderUser Account</strong></td>
<td width="125" valign="bottom"><strong>Percent</strong></td>
</tr>
<tr>
<td width="138" valign="bottom">204,904,332</td>
<td width="268" valign="bottom">SYSTEM</td>
<td width="125" valign="bottom">40.79 %</td>
</tr>
<tr>
<td width="138" valign="bottom">18,811,139</td>
<td width="268" valign="bottom">LOCAL SERVICE</td>
<td width="125" valign="bottom">3.74 %</td>
</tr>
<tr>
<td width="138" valign="bottom">14,883,946</td>
<td width="268" valign="bottom">ANONYMOUS LOGON</td>
<td width="125" valign="bottom">2.96 %</td>
</tr>
<tr>
<td width="138" valign="bottom">10,536,317</td>
<td width="268" valign="bottom">appintrauser</td>
<td width="125" valign="bottom">2.09 %</td>
</tr>
<tr>
<td width="138" valign="bottom">5,590,434</td>
<td width="268" valign="bottom">mossfarmusr</td>
<td width="125" valign="bottom">…</td>
</tr>
</tbody>
</table>
<p>Just by looking at this, it is pretty clear that filtering out events tracked by the accounts “SYSTEM”, “LOCAL SERVICE” and “ANONYMOUS”, we would save over 45% of the disk space!</p>
<p><strong>Number of Events by EventID</strong></p>
<p>Similarly, we can look at how different Event IDs have different weights on the total amount of events tracked in the database:</p>
<p>&#8211;event count by ID (with Percentages)<br />
declare @total float<br />
select @total = count(EventId) from AdtServer.dvHeader<br />
select count(EventId),EventId, cast(convert(float,(count(EventId)) / (convert(float,@total)) * 100) as decimal(10,2))<br />
from AdtServer.dvHeader<br />
group by EventId<br />
order by count(EventId) desc</p>
<p>We would get some similar information here:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="114" valign="bottom"><strong>Event ID </strong></td>
<td width="392" valign="bottom"><strong>Meaning </strong></td>
<td width="116" valign="bottom"><strong>Sum of events </strong></td>
<td width="101" valign="bottom"><strong>Percent </strong></td>
</tr>
<tr>
<td width="114" valign="bottom">538</td>
<td width="392" valign="bottom">A user logged off</td>
<td width="116" valign="bottom">99,494,648</td>
<td width="101" valign="bottom">27.63</td>
</tr>
<tr>
<td width="114" valign="bottom">540</td>
<td width="392" valign="bottom">Successful Network Logon</td>
<td width="116" valign="bottom">97,819,640</td>
<td width="101" valign="bottom">27.16</td>
</tr>
<tr>
<td width="114" valign="bottom">672</td>
<td width="392" valign="bottom">Authentication Ticket Request</td>
<td width="116" valign="bottom">52,281,129</td>
<td width="101" valign="bottom">14.52</td>
</tr>
<tr>
<td width="114" valign="bottom">680</td>
<td width="392" valign="bottom">Account Used for Logon by (Windows 2000)</td>
<td width="116" valign="bottom">35,141,235</td>
<td width="101" valign="bottom">9.76</td>
</tr>
<tr>
<td width="114" valign="bottom">576</td>
<td width="392" valign="bottom">Specified privileges were added to a user&#039;s access token.</td>
<td width="116" valign="bottom">26,154,761</td>
<td width="101" valign="bottom">7.26</td>
</tr>
<tr>
<td width="114" valign="bottom">8086</td>
<td width="392" valign="bottom">Custom Application ID</td>
<td width="116" valign="bottom">18,789,599</td>
<td width="101" valign="bottom">5.21</td>
</tr>
<tr>
<td width="114" valign="bottom">673</td>
<td width="392" valign="bottom">Service Ticket Request</td>
<td width="116" valign="bottom">10,641,090</td>
<td width="101" valign="bottom">2.95</td>
</tr>
<tr>
<td width="114" valign="bottom">675</td>
<td width="392" valign="bottom">Pre-Authentication Failed</td>
<td width="116" valign="bottom">7,890,823</td>
<td width="101" valign="bottom">2.19</td>
</tr>
<tr>
<td width="114" valign="bottom">552</td>
<td width="392" valign="bottom">Logon attempt using explicit credentials</td>
<td width="116" valign="bottom">4,143,741</td>
<td width="101" valign="bottom">1.15</td>
</tr>
<tr>
<td width="114" valign="bottom">539</td>
<td width="392" valign="bottom">Logon Failure &#8211; Account locked out</td>
<td width="116" valign="bottom">2,383,809</td>
<td width="101" valign="bottom">0.66</td>
</tr>
<tr>
<td width="114" valign="bottom">528</td>
<td width="392" valign="bottom">Successful Logon</td>
<td width="116" valign="bottom">1,764,697</td>
<td width="101" valign="bottom">0.49</td>
</tr>
</tbody>
</table>
<p>Also, do not forget that ACS provides some report to do this type of analysis out of the box, even if for my experience they are generally slower – on large datasets – than the queries provided here. Also, a number of reports have been buggy over time, so I just prefer to run queries and be on the safe side.</p>
<p>Below an example of such report (even if run against a different environment – just in case you were wondering why the numbers were not the same ones <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ):<img style="display: inline; border-width: 0px;" title="Event Counts ACS Default Report" src="http://www.muscetta.com/wp-content/uploads/image46.png" border="0" alt="Event Counts ACS Default Report" width="1037" height="598" /></p>
<p>The numbers and percentages we got from the two queries above should already point us in the right direction about what we might want to adjust in either our auditing policy directly on Windows and/or decide if there is something we want to filter out at the collector level (here you should ask yourself the question: “if they aren’t worth collecting are they worth generating?” – but I digress).</p>
<p>Also, a permutation of the above two queries should let you see which user is generating the most “noise” in regards to some events and not other ones… for example:</p>
<p>&#8211;event distribution for a specific user (change the @user) &#8211; with percentages for the user and compared with the total #events in the DB<br />
declare @user varchar(255)<br />
set @user = &#039;SYSTEM&#039;<br />
declare @total float<br />
select @total = count(Id) from AdtServer.dvHeader<br />
declare @totalforuser float<br />
select @totalforuser = count(Id) from AdtServer.dvHeader where HeaderUser = @user<br />
select count(Id), EventID, cast(convert(float,(count(Id)) / convert(float,@totalforuser) * 100) as decimal(10,2)) as PercentageForUser, cast(convert(float,(count(Id)) / (convert(float,@total)) * 100) as decimal(10,2)) as PercentageTotal<br />
from AdtServer.dvHeader<br />
where HeaderUser = @user<br />
group by EventID<br />
order by count(Id) desc</p>
<p>The above is particularly important, as we might want to filter out a number of events for the SYSTEM account (i.e. logons that occur when starting and stopping services) but we might want to keep other events that are tracked by the SYSTEM account too, such as an administrator having wiped the Security Log clean – which might be something you want to keep:</p>
<p><img style="display: inline; border-width: 0px;" title="Event ID 517 Audit Log was cleared" src="http://www.muscetta.com/wp-content/uploads/image47.png" border="0" alt="Event ID 517 Audit Log was cleared" width="624" height="409" /></p>
<p>of course the amount of EventIDs 517 over the total of events tracked by the SYSTEM account will not be as many, and we can still filter the other ones out.</p>
<p><strong>Number of Events by EventID and by User</strong></p>
<p>We could also combine the two approaches above – by EventID and by User:</p>
<p>select count(Id),HeaderUser, EventId</p>
<p>from AdtServer.dvHeader</p>
<p>group by HeaderUser, EventId</p>
<p>order by count(Id) desc</p>
<p>This will produce a table like the following one</p>
<p><img style="display: inline; border-width: 0px;" title="SQL Query: Events by EventID and by User" src="http://www.muscetta.com/wp-content/uploads/image48.png" border="0" alt="SQL Query: Events by EventID and by User" width="421" height="458" /></p>
<p>which can be easily copied/pasted into Excel in order to produce a pivot Table:</p>
<p><img style="display: inline; border-width: 0px;" title="Pivot Table" src="http://www.muscetta.com/wp-content/uploads/image49.png" border="0" alt="Pivot Table" width="624" height="419" /></p>
<h3>Cluster EventLog Replication</h3>
<p>One more aspect that is less widely known, but I think is worth showing, is the way that clusters behave when in ACS. I don’t mean all clusters… but if you keep the “eventlog replication” feature of clusters enabled (you should disable it also from a monitoring perspective, but I digress), each cluster node’s security eventlog will have events not just for itself, but for all other nodes as well.</p>
<p>Albeit I have not found a reliable way to filter out – other than disabling eventlog replication altogether.</p>
<p>Anyway, just to get an idea of how much this type of “duplicate” events weights on the total, I use the following query, that tells you how many events for each machine are tracked by another machine:</p>
<p>&#8211;to spot machines that are cluster nodes with eventlog repliation and write duplicate events (slow)</p>
<p>select Count(Id) as Total,replace(right(AgentMachine, (len(AgentMachine) &#8211; patindex(&#039;%\%&#039;,AgentMachine))),&#039;$',&#034;) as ForwarderMachine, EventMachine</p>
<p>from AdtServer.dvHeader</p>
<p>&#8211;where ForwarderMachine &lt;&gt; EventMachine</p>
<p>group by EventMachine,replace(right(AgentMachine, (len(AgentMachine) &#8211; patindex(&#039;%\%&#039;,AgentMachine))),&#039;$',&#034;)</p>
<p>order by ForwarderMachine,EventMachine</p>
<p><img style="display: inline; border-width: 0px;" title="Cluster Events" src="http://www.muscetta.com/wp-content/uploads/clip_image006.jpg" border="0" alt="Cluster Events" width="363" height="221" /></p>
<p>Those presented above are just some of the approaches I usually look into at first. Of course there are a number more. Here I am including the same queries already shown in action, plus a few more that can be useful in this process.</p>
<p>I have even considered building a page with all these queries – a bit like <a href="http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx">those that Kevin is collecting for OpsMgr</a> (we actually wrote some of them together when building the OpsMgr Health Check)… shall I move the below queries on such a page? I though I’d list them here and give some background on how I normally use them, to start off with.</p>
<h3>Some more Useful Queries</h3>
<p>&#8211;top event ids<br />
select count(EventId), EventId<br />
from AdtServer.dvHeader<br />
group by EventId<br />
order by count(EventId) desc</p>
<p>&#8211;event count by ID (with Percentages)<br />
declare @total float<br />
select @total = count(EventId) from AdtServer.dvHeader<br />
select count(EventId),EventId, cast(convert(float,(count(EventId)) / (convert(float,@total)) * 100) as decimal(10,2))<br />
from AdtServer.dvHeader<br />
group by EventId<br />
order by count(EventId) desc</p>
<p>&#8211;which machines have ever written event 538<br />
select distinct EventMachine, count(EventId) as total<br />
from AdtServer.dvHeader<br />
where EventID = 538<br />
group by EventMachine</p>
<p>&#8211;machines<br />
select * from dtMachine</p>
<p>&#8211;machines (more readable)<br />
select replace(right(Description, (len(Description) &#8211; patindex(&#039;%\%&#039;,Description))),&#039;$',&#034;)<br />
from dtMachine</p>
<p>&#8211;events by machine<br />
select count(EventMachine), EventMachine<br />
from AdtServer.dvHeader<br />
group by EventMachine</p>
<p>&#8211;rows where EventMachine field not available (typically events written by ACS itself for chekpointing)<br />
select *<br />
from AdtServer.dvHeader<br />
where EventMachine = &#039;n/a&#039;</p>
<p>&#8211;event count by day<br />
select convert(varchar(20), CreationTime, 102) as Date, count(EventMachine) as total<br />
from AdtServer.dvHeader<br />
group by convert(varchar(20), CreationTime, 102)<br />
order by convert(varchar(20), CreationTime, 102)</p>
<p>&#8211;event count by day and by machine<br />
select convert(varchar(20), CreationTime, 102) as Date, EventMachine, count(EventMachine) as total<br />
from AdtServer.dvHeader<br />
group by EventMachine, convert(varchar(20), CreationTime, 102)<br />
order by convert(varchar(20), CreationTime, 102)</p>
<p>&#8211;event count by machine and by date (distinuishes between AgentMachine and EventMachine<br />
select convert(varchar(10),CreationTime,102),Count(Id),EventMachine,AgentMachine<br />
from AdtServer.dvHeader<br />
group by convert(varchar(10),CreationTime,102),EventMachine,AgentMachine<br />
order by convert(varchar(10),CreationTime,102) desc ,EventMachine</p>
<p>&#8211;event count by User<br />
select count(Id),HeaderUser<br />
from AdtServer.dvHeader<br />
group by HeaderUser<br />
order by count(Id) desc</p>
<p>&#8211;event count by User (with Percentages)<br />
declare @total float<br />
select @total = count(HeaderUser) from AdtServer.dvHeader<br />
select count(HeaderUser),HeaderUser, cast(convert(float,(count(HeaderUser)) / (convert(float,@total)) * 100) as decimal(10,2))<br />
from AdtServer.dvHeader<br />
group by HeaderUser<br />
order by count(HeaderUser) desc</p>
<p>&#8211;event distribution for a specific user (change the @user) &#8211; with percentages for the user and compared with the total #events in the DB<br />
declare @user varchar(255)<br />
set @user = &#039;SYSTEM&#039;<br />
declare @total float<br />
select @total = count(Id) from AdtServer.dvHeader<br />
declare @totalforuser float<br />
select @totalforuser = count(Id) from AdtServer.dvHeader where HeaderUser = @user<br />
select count(Id), EventID, cast(convert(float,(count(Id)) / convert(float,@totalforuser) * 100) as decimal(10,2)) as PercentageForUser, cast(convert(float,(count(Id)) / (convert(float,@total)) * 100) as decimal(10,2)) as PercentageTotal<br />
from AdtServer.dvHeader<br />
where HeaderUser = @user<br />
group by EventID<br />
order by count(Id) desc</p>
<p>&#8211;to spot machines that write duplicate events (such as cluster nodes with eventlog replication enabled)<br />
select Count(Id),EventMachine,AgentMachine<br />
from AdtServer.dvHeader<br />
group by EventMachine,AgentMachine<br />
order by EventMachine</p>
<p>&#8211;to spot machines that are cluster nodes with eventlog repliation and write duplicate events (better but slower)<br />
select Count(Id) as Total,replace(right(AgentMachine, (len(AgentMachine) &#8211; patindex(&#039;%\%&#039;,AgentMachine))),&#039;$',&#034;) as ForwarderMachine, EventMachine<br />
from AdtServer.dvHeader<br />
&#8211;where ForwarderMachine &lt;&gt; EventMachine<br />
group by EventMachine,replace(right(AgentMachine, (len(AgentMachine) &#8211; patindex(&#039;%\%&#039;,AgentMachine))),&#039;$',&#034;)<br />
order by ForwarderMachine,EventMachine</p>
<p>&#8211;which user and from which machine is target of elevation (network service doing &#034;runas&#034; is a 552 event)<br />
select count(Id),EventMachine, TargetUser<br />
from AdtServer.dvHeader<br />
where HeaderUser = &#039;NETWORK SERVICE&#039;<br />
and EventID = 552<br />
group by EventMachine, TargetUser<br />
order by count(Id) desc</p>
<p>&#8211;by hour, minute and user<br />
&#8211;(change the timestamp)&#8230; this query is useful to search which users are active in a given time period&#8230;<br />
&#8211;helpful to spot &#034;peaks&#034; of activities such as password brute force attacks, or other activities limited in time.<br />
select datepart(hour,CreationTime) as Hours, datepart(minute,CreationTime) as Minutes, HeaderUser, count(Id) as total<br />
from AdtServer.dvHeader<br />
where CreationTime &lt; &#039;2010-02-22T16:00:00.000&#039;<br />
and CreationTime &gt; &#039;2010-02-22T15:00:00.000&#039;<br />
group by datepart(hour,CreationTime), datepart(minute,CreationTime),HeaderUser<br />
order by datepart(hour,CreationTime), datepart(minute,CreationTime),HeaderUser</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2010/03/18/a-few-thoughts-on-sizing-audit-collection-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpsMgr Eventlog analysis with Powershell</title>
		<link>http://www.muscetta.com/2009/12/16/opsmgr-eventlog-analysis-with-powershell/</link>
		<comments>http://www.muscetta.com/2009/12/16/opsmgr-eventlog-analysis-with-powershell/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 10:17:35 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[eventlog]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=489</guid>
		<description><![CDATA[The following technique should already be understood by any powersheller. Here we focus on Operations Manager log entries, even if the data mining technique shows is entirely possibly – and encouraged &#8211; with any other event log. Let’s start by getting our eventlog into a variable called $evt: PS&#160; &#62;&#62; $evt = Get-Eventlog “Operations Manager” [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>The following technique should already be understood by any powersheller. Here we focus on Operations Manager log entries, even if the data mining technique shows is entirely possibly – and encouraged <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8211; with any other event log.</p>
<p>Let’s start by getting our eventlog into a variable called $evt:</p>
<p><strong>PS&#160; &gt;&gt; $evt = Get-Eventlog “Operations Manager”</strong></p>
<p>The above only works locally in POSH v1.</p>
<p>In POSH v2 you can go remotely by using the “-computername” parameter:</p>
<p><strong>PS&#160; &gt;&gt; $evt = Get-Eventlog “Operations Manager” –computername RMS.domain.com</strong></p>
<p>Anyhow, you can get to this remotely also in POSHv1 with this other more “dotNET-tish” syntax:</p>
<p><strong>PS &gt;&gt; $evt = (New-Object System.Diagnostics.Eventlog -ArgumentList &quot;Operations Manager&quot;).get_Entries()</strong></p>
<p>you could even export this (or any of the above) to a CLIXML file:</p>
<p><strong>PS &gt;&gt; (New-Object System.Diagnostics.Eventlog -ArgumentList &quot;Operations Manager&quot;).get_Entries() | export-clixml -path c:\evt\Evt-OpsMgr-RMS.MYDOMAIN.COM.xml</strong></p>
<p>and then you could reload your eventlog to another machine:</p>
<p><strong>PS&#160; &gt;&gt; $evt = import-clixml c:\evt\Evt-OpsMgr-RMS.MYDOMAIN.COM.xml</strong>     </p>
<p>whatever way you used to populate your $evt&#160; variable, be it from a “live” eventlog or by re-importing it from XML, you can then start analyzing it:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Entrytype -match &quot;Error&quot;} | select EventId,Source,Message | group eventid </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />1510 4509&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=4509; Source=HealthService; Message=The constructor for the managed module type &quot;Microsoft.EnterpriseManagement.Mom.DatabaseQueryModules.GroupCalculatio.     <br />&#160;&#160; 15 20022&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=20022; Source=OpsMgr Connector; Message=The health service {7B0E947B-2055&#8230;     <br />&#160;&#160;&#160; 3 26319&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=26319; Source=OpsMgr SDK Service; Message=An exception was thrown while p&#8230;     <br />&#160;&#160;&#160; 1 4512&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=4512; Source=HealthService; Message=Converting data batch to XML failed w&#8230; </p>
<p>the above is functionally identical to the following:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Entrytype -eq 1} | select EventID,Source,Message | group eventid </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />1510 4509&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=4509; Source=HealthService; Message=The constructor for the managed modul&#8230;     <br />&#160;&#160; 15 20022&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=20022; Source=OpsMgr Connector; Message=The health service {7B0E947B-2055&#8230;     <br />&#160;&#160;&#160; 3 26319&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=26319; Source=OpsMgr SDK Service; Message=An exception was thrown while p&#8230;     <br />&#160;&#160;&#160; 1 4512&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=4512; Source=HealthService; Message=Converting data batch to XML failed w&#8230; </p>
<p>Note that Eventlog Entries’ type is an ENUM that has values of 0,1,2 – similarly to OpsMgr health states – but beware that their order is not the same, as shown in the following table:</p>
<table border="1" cellspacing="0" cellpadding="2" width="342">
<tbody>
<tr>
<td valign="top" width="71"><strong>Code</strong></td>
<td valign="top" width="137"><strong>OpsMgr States</strong></td>
<td valign="top" width="132"><strong>Events EntryType</strong></td>
</tr>
<tr>
<td valign="top" width="71">0</td>
<td valign="top" width="137">Not Monitored</td>
<td valign="top" width="132">Information</td>
</tr>
<tr>
<td valign="top" width="71">1</td>
<td valign="top" width="137">Success</td>
<td valign="top" width="132">Error</td>
</tr>
<tr>
<td valign="top" width="71">2</td>
<td valign="top" width="137">Warning</td>
<td valign="top" width="132">Warning</td>
</tr>
<tr>
<td valign="top" width="71">3</td>
<td valign="top" width="137">Critical</td>
<td valign="top" width="132">&#8211;</td>
</tr>
</tbody>
</table>
<p>Let’s now look at Information Events (Entrytype –eq 0)</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Entrytype -eq 0} | select EventID,Source,Message | group eventid </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />4135 2110&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=2110; Source=HealthService; Message=Health Service successfully transferr&#8230;     <br />1548 21025&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=21025; Source=OpsMgr Connector; Message=OpsMgr has received new configura&#8230;     <br />4644 7026&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7026; Source=HealthService; Message=The Health Service successfully logge&#8230;     <br />1548 7023&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7023; Source=HealthService; Message=The Health Service has downloaded sec&#8230;     <br />1548 7025&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7025; Source=HealthService; Message=The Health Service has authorized all&#8230;     <br />1548 7024&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7024; Source=HealthService; Message=The Health Service successfully logge&#8230;     <br />1548 7028&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7028; Source=HealthService; Message=All RunAs accounts for management gro&#8230;     <br />&#160;&#160; 16 20021&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=20021; Source=OpsMgr Connector; Message=The health service {7B0E947B-2055&#8230;     <br />&#160;&#160; 13 7019&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=7019; Source=HealthService; Message=The Health Service has validated all &#8230;     <br />&#160;&#160;&#160; 4 4002&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=4002; Source=Health Service Script; Message=Microsoft.Windows.Server.Logi&#8230; </p>
<p>&#160;</p>
<p>And “Warning” events (Entrytype –eq 2):</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Entrytype -eq 2} | select EventID,Source,Message | group eventid </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />1511 1103&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=1103; Source=HealthService; Message=Summary: 1 rule(s)/monitor(s) failed &#8230;     <br />&#160; 501 20058&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=20058; Source=OpsMgr Connector; Message=The Root Connector has received b&#8230;     <br />&#160;&#160;&#160; 5 29202&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=29202; Source=OpsMgr Config Service; Message=OpsMgr Config Service could &#8230;     <br />&#160; 421 31501&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=31501; Source=Health Service Modules; Message=No primary recipients were &#8230;     <br />&#160;&#160; 18 10103&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=10103; Source=Health Service Modules; Message=In PerfDataSource, could no&#8230;     <br />&#160;&#160;&#160; 1 29105&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {@{EventID=29105; Source=OpsMgr Config Service; Message=The request for management p&#8230; </p>
<p>&#160;</p>
<p>&#160;</p>
<p>Ok now let’s see those event 20022, for example… so we get an idea of which healthservices they are referring to (20022 indicates&quot; “hearthbeat failure”, btw):</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.eventid -eq 20022} | select message </strong></p>
<p>Message    <br />&#8212;&#8212;-     <br />The health service {7B0E947B-2055-C12A-B6DB-DD6B311ADF39} running on host webapp3.domain1.mydomain.com and s&#8230;     <br />The health service {E3B3CCAA-E797-4F08-860F-47558B3DA477} running on host SERVER1.domain2.mydomain.com and serving&#8230;     <br />The health service {E3B3CCAA-E797-4F08-860F-47558B3DA477} running on host SERVER1.domain2.mydomain.com and serving&#8230;     <br />The health service {E3B3CCAA-E797-4F08-860F-47558B3DA477} running on host SERVER1.domain2.mydomain.com and serving&#8230;     <br />The health service {52E16F9C-EB1A-9FAF-5B9C-1AA9C8BC28E3} running on host DC4WK3.domain1.mydomain.com and se&#8230;     <br />The health service {F96CC9E6-2EC4-7E63-EE5A-FF9286031C50} running on host VWEBDL2.domain1.mydomain.com and s&#8230;     <br />The health service {71987EE0-909A-8465-C32D-05F315C301CC} running on host VDEVWEBPROBE2.domain2.mydomain.com&#8230;.     <br />The health service {BAF6716E-54A7-DF68-ABCB-B1101EDB2506} running on host XP2SMS002.domain2.mydomain.com and serving mana&#8230;     <br />The health service {30C81387-D5E0-32D6-C3A3-C649F1CF66F1} running on host stgweb3.domain3.mydomain.com and&#8230;     <br />The health service {3DCDD330-BBBB-B8E8-4FED-EF163B27DE0A} running on host VWEBDL1.domain1.mydomain.com and s&#8230;     <br />The health service {13A47552-2693-E774-4F87-87DF68B2F0C0} running on host DC2.domain4.mydomain.com and &#8230;     <br />The health service {920BF9A8-C315-3064-A5AA-A92AA270529C} running on host FSCLU2 and serving management group Pr&#8230;     <br />The health service {FAA3C2B5-C162-C742-786F-F3F8DC8CAC2F} running on host WEBAPP4.domain1.mydomain.com and s&#8230;     <br />The health service {3DCDD330-BBBB-B8E8-4FED-EF163B27DE0A} running on host WEBDL1.domain1.mydomain.com and s&#8230;     <br />The health service {3DCDD330-BBBB-B8E8-4FED-EF163B27DE0A} running on host WEBDL1.domain1.mydomain.com and s&#8230; </p>
<p>&#160;</p>
<p>or let’s look at some warning for the Config Service:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Eventid -eq 29202} </strong></p>
<p>&#160;&#160; Index Time&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EntryType&#160;&#160; Source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; InstanceID Message    <br />&#160;&#160; &#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;&#160;&#160; &#8212;&#8212;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;- &#8212;&#8212;-     <br />5535065 Dec 07 21:18&#160; Warning&#160;&#160;&#160;&#160; OpsMgr Config Ser&#8230;&#160;&#160; 2147512850 OpsMgr Config Service could not retrieve a cons&#8230;     <br />5543960 Dec 09 16:39&#160; Warning&#160;&#160;&#160;&#160; OpsMgr Config Ser&#8230;&#160;&#160; 2147512850 OpsMgr Config Service could not retrieve a cons&#8230;     <br />5545536 Dec 10 01:06&#160; Warning&#160;&#160;&#160;&#160; OpsMgr Config Ser&#8230;&#160;&#160; 2147512850 OpsMgr Config Service could not retrieve a cons&#8230;     <br />5553119 Dec 11 08:24&#160; Warning&#160;&#160;&#160;&#160; OpsMgr Config Ser&#8230;&#160;&#160; 2147512850 OpsMgr Config Service could not retrieve a cons&#8230;     <br />5555677 Dec 11 10:34&#160; Warning&#160;&#160;&#160;&#160; OpsMgr Config Ser&#8230;&#160;&#160; 2147512850 OpsMgr Config Service could not retrieve a cons&#8230; </p>
<p>Once seen those, can you remember of any particular load you had on those days that justifies the instance space changing so quickly that the Config Service couldn’t keep up?</p>
<p>&#160;</p>
<p>Or let’s group those events with ID 21025 by hour, so we know how many Config recalculations we’ve had (which, if many, might indicate <a href="http://blogs.technet.com/kevinholman/archive/2009/10/05/what-is-config-churn.aspx">Config Churn</a>):</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Eventid -eq 21025} | select TimeGenerated | % {$_.TimeGenerated.ToShortDateString()} | group </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />&#160;&#160; 39 12/7/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/7/2009, 12/7/2009, 12/7/2009, 12/7/2009&#8230;}     <br />&#160; 203 12/8/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/8/2009, 12/8/2009, 12/8/2009, 12/8/2009&#8230;}     <br />&#160; 217 12/9/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/9/2009, 12/9/2009, 12/9/2009, 12/9/2009&#8230;}     <br />&#160; 278 12/10/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/10/2009, 12/10/2009, 12/10/2009, 12/10/2009&#8230;}     <br />&#160; 259 12/11/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/11/2009, 12/11/2009, 12/11/2009, 12/11/2009&#8230;}     <br />&#160; 224 12/12/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/12/2009, 12/12/2009, 12/12/2009, 12/12/2009&#8230;}     <br />&#160; 237 12/13/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/13/2009, 12/13/2009, 12/13/2009, 12/13/2009&#8230;}     <br />&#160;&#160; 91 12/14/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/14/2009, 12/14/2009, 12/14/2009, 12/14/2009&#8230;} </p>
<p>&#160;</p>
<p>Event ID 21025 shows that there is a new configuration for the Management Group.</p>
<p>Event ID 29103 has a similar wording, but shows that there is a new configuration for a given Healthservice. These should normally be many more events, unless your only health Service is the RMS, which is unlikely…</p>
<p>If we look at the event description (“message”) in search for the name (or even the GUID, as both are present) or our RMS, as follows, then they should be the same numbers of the 21025 above:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.Eventid -eq 29103} | where {$_.message -match &quot;myrms.domain.com&quot;} | select TimeGenerated | % {$_.TimeGenerated.ToShortDateString()} | group </strong></p>
<p>Count Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Group    <br />&#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8211;     <br />&#160;&#160; 39 12/7/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/7/2009, 12/7/2009, 12/7/2009, 12/7/2009&#8230;}     <br />&#160; 203 12/8/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/8/2009, 12/8/2009, 12/8/2009, 12/8/2009&#8230;}     <br />&#160; 217 12/9/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/9/2009, 12/9/2009, 12/9/2009, 12/9/2009&#8230;}     <br />&#160; 278 12/10/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/10/2009, 12/10/2009, 12/10/2009, 12/10/2009&#8230;}     <br />&#160; 259 12/11/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/11/2009, 12/11/2009, 12/11/2009, 12/11/2009&#8230;}     <br />&#160; 224 12/12/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/12/2009, 12/12/2009, 12/12/2009, 12/12/2009&#8230;}     <br />&#160; 237 12/13/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/13/2009, 12/13/2009, 12/13/2009, 12/13/2009&#8230;}     <br />&#160;&#160; 91 12/14/2009&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {12/14/2009, 12/14/2009, 12/14/2009, 12/14/2009&#8230;} </p>
<p>&#160;</p>
<p>Going back to the initial counts of events by their IDs, when showing the errors the counts above had spotted the presence of a lonely 4512 event, which might have gone undetected if just browsing the eventlog with the GUI, since it only occurred once.</p>
<p>Let’s take a look at it:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.eventid -eq 4512} </strong></p>
<p>&#160;&#160; Index Time&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EntryType&#160;&#160; Source&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; InstanceID Message    <br />&#160;&#160; &#8212;&#8211; &#8212;-&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;&#160;&#160; &#8212;&#8212;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;- &#8212;&#8212;-     <br />5560756 Dec 12 11:18&#160; Error&#160;&#160;&#160;&#160;&#160;&#160; HealthService&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3221229984 Converting data batch to XML failed with error &#8230; </p>
<p>Now, when it is about counts, Powershell is great.&#160; But sometimes Powershell makes it difficult to actually READ the (long) event messages (descriptions) in the console. For example, our event ID 4512 is difficult to read in its entirety and gets truncated with trailing dots…</p>
<p>we can of course increase the window size and/or selecting only THAT one field to read it better:</p>
<p><strong>PS&#160; &gt;&gt; $evt | where {$_.eventid -eq 4512} | select message </strong></p>
<p>Message    <br />&#8212;&#8212;-     <br />Converting data batch to XML failed with error &quot;Not enough storage is available to complete this operation.&quot; (0x8007000E) in rule &quot;Microsoft.SystemCenter.ConfigurationService.CollectionRule.Event.ConfigurationChanged&quot; running for instance &quot;RMS.MYDOMAIN.COM&quot; with id:&quot;{04F4ADED-2C7F-92EF-D620-9AF9685F736F}&quot; in management group &quot;SCOMPROD&quot; </p>
<p>Or, worst case, if it still does not fit, we can still go and search for it in the actual, usual eventlog application… but at least we will have spotted it!</p>
<p>&#160;</p>
<p>The above wants to give you an idea of what is easily accomplished with some simple one-liners, and how it can be a useful aid in analyzing/digging into Eventlogs.</p>
<p>All of the above is ALSO be possible with Logparser, and it would actually be even less heavy on memory usage and it will be quicker, to be honest! </p>
<p>I just like Powershell syntax a lot more, and its ubiquity, which makes it a better option for me. Your mileage may vary, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/12/16/opsmgr-eventlog-analysis-with-powershell/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Invoking Methods on the Xplat agent with WINRM</title>
		<link>http://www.muscetta.com/2009/10/26/invoking-methods-on-the-xplat-agent-with-winrm/</link>
		<comments>http://www.muscetta.com/2009/10/26/invoking-methods-on-the-xplat-agent-with-winrm/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 22:32:43 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[invoke]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[winrm]]></category>
		<category><![CDATA[ws-man]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=488</guid>
		<description><![CDATA[So I was testing other stuff tonight, to be honest, but I got pinged on Instant Messenger by my geek friend and colleague Stefan Stranger who pointed me at his request for help here http://friendfeed.com/sstranger/4571f39b/help-needed-on-winrs-or-winrm-and-openwsman-to He wanted to use WINRM or any other command line utility to interact with the Xplat agent, and call methods [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>So I was testing other stuff tonight, to be honest, but I got pinged on Instant Messenger by my geek friend and colleague <a href="http://blogs.technet.com/stefan_stranger/">Stefan Stranger</a> who pointed me at his request for help here <a title="http://friendfeed.com/sstranger/4571f39b/help-needed-on-winrs-or-winrm-and-openwsman-to" href="http://friendfeed.com/sstranger/4571f39b/help-needed-on-winrs-or-winrm-and-openwsman-to">http://friendfeed.com/sstranger/4571f39b/help-needed-on-winrs-or-winrm-and-openwsman-to</a></p>
<p>He wanted to use WINRM or any other command line utility to interact with the Xplat agent, and call methods on the Unix machine from windows. This could be very useful to – for example – restart a service (in fact it is what the RECOVERY actions in the Xplat Management Packs do, btw).</p>
<p>At first I told him I had only tested enumerations – such as on this other post <a title="http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/" href="http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/">http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/</a> … but the question intrigued me, so I check out the help for winrm’s INVOKE verb:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.muscetta.com/wp-content/uploads/clip_image0021.jpg" width="650" height="472" /></p>
<p>Which told me that you can pass in the parameters for the method to be called/invoked either as an hashtable @{KEY=”value”;KEY2=”value”}, or as an input XML file. I first tried the XML file but I could not get its format right.</p>
<p>After a few more minutes of trying, I figured out the right syntax.</p>
<p>This one works, for example:</p>
<p><strong>winrm invoke ExecuteCommand http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem?__cimnamespace=root/scx @{command=&quot;ps&quot;;timeout=&quot;60&quot;} -username:root -password:password -auth:basic -r:https://virtubuntu.huis.dom:1270/wsman -skipCACheck -encoding:UTF-8</strong></p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://www.muscetta.com/wp-content/uploads/clip_image0041.jpg" width="634" height="662" /></p>
<p>Happy remote management of your unix systems from Windows <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/10/26/invoking-methods-on-the-xplat-agent-with-winrm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PS&gt; Get-Milk</title>
		<link>http://www.muscetta.com/2009/09/17/ps-get-milk/</link>
		<comments>http://www.muscetta.com/2009/09/17/ps-get-milk/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 13:00:08 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[cmdlet]]></category>
		<category><![CDATA[daughter]]></category>
		<category><![CDATA[Get-Milk]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[sara]]></category>
		<category><![CDATA[TShirt]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=483</guid>
		<description><![CDATA[I printed a tshirt for Sara with a baby-friendly Powershell cmdlet (&#034;Get-Milk&#034;). She already seems to be wondering what script she can write with it.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a title="Get-Milk" href="http://www.flickr.com/photos/dani3l3/3924854309/"><img src="http://farm3.static.flickr.com/2659/3924854309_7c1f7952c0.jpg" alt="PS&gt; Get-Milk" /></a></p>
<p>I printed a tshirt for Sara with a baby-friendly Powershell cmdlet (&#034;Get-Milk&#034;).<br />
She already seems to be wondering what script she can write with it.</p>
<p><a href="http://www.flickr.com/photos/dani3l3/3924854309/"><img src="http://farm4.static.flickr.com/3536/3924858247_a2da4f9fb9.jpg" alt="PS&gt; Get-Milk" width="500" height="333" /></a></p>
<p><a href="http://www.flickr.com/photos/dani3l3/3924854309/"><img src="http://farm4.static.flickr.com/3449/3925641880_aab0165f75.jpg" alt="PS&gt; Get-Milk" width="500" height="333" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/09/17/ps-get-milk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The mystery of the lost registry values</title>
		<link>http://www.muscetta.com/2009/09/10/mistery-of-lost-registry-values/</link>
		<comments>http://www.muscetta.com/2009/09/10/mistery-of-lost-registry-values/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:53:44 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Monad]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[StdRegProvider]]></category>
		<category><![CDATA[vbscript]]></category>
		<category><![CDATA[Wbem]]></category>
		<category><![CDATA[WMI]]></category>
		<category><![CDATA[Wow]]></category>
		<category><![CDATA[Wow32]]></category>
		<category><![CDATA[Wow64]]></category>
		<category><![CDATA[Wow6432Node]]></category>
		<category><![CDATA[wrapper]]></category>
		<category><![CDATA[x64]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=481</guid>
		<description><![CDATA[During the OpsMgr Health Check engagement we use custom code to assess the customer’s Management group, as I wrote here already. Given that the customer tells us which machine is the RMS, one of the very first things that we do in our tool is to connect to the RMS’s registry, and check the values [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>During the OpsMgr Health Check engagement we use custom code to assess the customer’s Management group, <a href="http://www.muscetta.com/2008/12/30/early-adoptions-health-checks-and-new-year-rants/">as I wrote here already</a>. Given that the customer tells us which machine is the RMS, one of the very first things that we do in our tool is to connect to the RMS’s registry, and check the values under <strong>HKLM\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup </strong>to see which machine holds the database. It is a rather critical piece of information for us, as we run a number of queries afterward… so we need to know where the db is, obviously <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I learned from here <a title="http://mybsinfo.blogspot.com/2007/01/powershell-remote-registry-and-you-part.html" href="http://mybsinfo.blogspot.com/2007/01/powershell-remote-registry-and-you-part.html">http://mybsinfo.blogspot.com/2007/01/powershell-remote-registry-and-you-part.html</a> how to access registry remotely thru powershell, by using .Net classes. This is also one of the methods illustrated in this other article on Technet Script Center <a href="http://www.microsoft.com/technet/scriptcenter/resources/qanda/jan09/hey0105.mspx">http://www.microsoft.com/technet/scriptcenter/resources/qanda/jan09/hey0105.mspx</a> </p>
<p>Therefore the “core” instructions of the function I was using to access the registry looked like the following</p>
<p><!-- Code --></p>
<div class="dp-highlighter">
<ol class="dp-rb">
<li class="alt"><span><span>Function GetValueFromRegistry ([string]</span><span class="variable">$computername</span><span>, </span><span class="variable">$regkey</span><span>, </span><span class="variable">$value</span><span>)    </span></span></li>
<li><span>{   </span></li>
<li><span>     </span><span class="variable">$reg</span><span> = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(</span><span class="string">&#039;LocalMachine&#039;</span><span>, </span><span class="variable">$computername</span><span>)   </span></li>
<li><span>     </span><span class="variable">$regKey</span><span>= </span><span class="variable">$reg</span><span>.OpenSubKey(</span><span class="string">&#034;$regKey&#034;</span><span>)   </span></li>
<li><span>     </span><span class="variable">$result</span><span> = </span><span class="variable">$regkey</span><span>.GetValue(</span><span class="string">&#034;$value&#034;</span><span>)   </span></li>
<li><span>     </span><span class="keyword">return</span><span> </span><span class="variable">$result</span><span>  </span></li>
<li><span>}   </span></li>
</ol>
</div>
<p><span> </span></p>
<p>[Note: the actual function is bigger, and contains error handling, and logging, and a number of other things that are unnecessary here]</p>
<p>Therefore, the function was called as follows:<br />
<strong>GetValueFromRegistry $RMS &#034;SOFTWARE\\Microsoft\\Microsoft Operations Manager\\3.0\\Setup&#034; &#034;DatabaseServerName&#034;</strong><br />
Now so far so good.</p>
<p>In theory.</p>
<p> </p>
<p>Now for some reason that I could not immediately explain, we had noticed that this piece of code performing registry accessm while working most of the times, only on SOME occasions was giving errors about not being able to open the registry value…</p>
<p><a href="http://www.muscetta.com/wp-content/uploads/image45.png" rel="lightbox[481]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image_thumb.png" border="0" alt="image" width="518" height="69" /></a></p>
<p>When you are onsite with a customer conducting an assessment, the PFE engineer does not always has the time to troubleshoot the error… as time is critical, we have usually resorted to just running the assessment from ANOTHER machine, and this “solved” the issue… but always left me wondering WHY this was giving an error. I had suspected an issue with permissions first, but it could not be as the permissions were obviously right: performing the assessment from another machine but with the same user was working!</p>
<p>A few days ago <a href="http://blogs.technet.com/stefan_stranger/">my colleague and buddy Stefan Stranger</a> figured out that this was related to the platform architecture:</p>
<ul>
<li>X64 client to x64 RMS was working</li>
<li>X64 client to x86 RMS was working</li>
<li>X86 client to x86 RMS was working</li>
<li><strong>X86 client to x64 RMS was NOT working</strong></li>
</ul>
<p>You don’t need to use our custom code to reproduce this, REGEDIT shows the behavior as well.</p>
<p>If, from a 64-bit server, you open a remote registry connection to 64-bit RMS server, you can see all OpsMgr registry keys:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" src="http://www.muscetta.com/wp-content/uploads/clip_image002.jpg" border="0" alt="clip_image002" width="918" height="268" /></p>
<p>If, anyhow, from a 32-bit server, you open a remote registry connection to 64-bit RMS server, you don’t see ALL – but only SOME &#8211; OpsMgr registry keys:<br />
<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" src="http://www.muscetta.com/wp-content/uploads/clip_image004.jpg" border="0" alt="clip_image004" width="863" height="192" /></p>
<p>So here’s the reason! This is what was happening! How could I not think of this before? It was nothing related to permissions, but to <a href="http://msdn.microsoft.com/en-us/library/aa384232(VS.85).aspx">registry redirection</a>! The issue was happening because the 32 bit machine is using the 32bit registry editor and what it will do when accessing a 64bit machine will be to default to the Wow6432Node location in the registry. There all OpsMgr data won’t be in the WOW64 location on a 64bit machine, only some.</p>
<p>So, just like regedit, the 32bit powershell and the 32bit .Net framework were being redirected to the 32bit-compatibility registry keys… not finding the stuff we needed, whereas a 64bit application could find that. Any 32bit application by default gets redirected to a 32bit-safe registry.</p>
<p>So, after finally UNDERSTANDING what the issue was, I started wondering: ok&#8230; but<strong> how can I access the REAL “HLKM\SOFTWARE\Microsoft” key on a 64bit machine when running this FROM a 32bit machine – WITHOUT being redirected to “HKLM\SOFTWARE\Wow6432Node\Microsoft” ? </strong>What if my application CAN deal just fine with those values and actually NEEDs to access them?</p>
<p>The answer wasn’t as easy as the question. I did a bit of digging on this, and still I have NOT yet found a way to do this with the .Net classes. It seems that in a lot of situations, Powershell or even .Net classes are nice and sweet wrappers on the underlying Windows APIs… but for how sweet and easy they are, they are very often not very complete wrappers – letting you do just about enough for most situations, but not quite everything you would or could with the APi underneath. But I digress, here&#8230;</p>
<p>The good news is that I did manage to get this working, but I had to resort to using dear old WMI StdRegProvider… There are a number of locations on the Internet mentioning the issue of accessing 32bit registry from 64bit machines or vice versa, but all examples I have found were using VBScript. But I needed it in Powershell. Therefore I started with the <a href="http://msdn.microsoft.com/en-us/library/aa393067(VS.85).aspx">VBScript example code that is present here</a>, and I ported it to Powershell.</p>
<p>Handling the WMI COM object from Powershell was slightly less intuitive than in VBScript, and it took me a couple of hours to figure out how to change some stuff, especially this bit that sets the parameters collection:</p>
<blockquote><p>Set Inparams = objStdRegProv.Methods_(&#034;GetStringValue&#034;).Inparameters</p>
<p>Inparams.Hdefkey = HKLM</p>
<p>Inparams.Ssubkeyname = RegKey</p>
<p>Inparams.Svaluename = RegValue</p>
<p>Set Outparams = objStdRegProv.ExecMethod_(&#034;GetStringValue&#034;, Inparams,,objCtx)</p></blockquote>
<p>INTO this:</p>
<blockquote><p>$Inparams = ($objStdRegProv.Methods_ | where {$_.name -eq &#034;GetStringValue&#034;}).InParameters.SpawnInstance_()</p>
<p>($Inparams.Properties_ | where {$_.name -eq &#034;Hdefkey&#034;}).Value = $HKLM</p>
<p>($Inparams.Properties_ | where {$_.name -eq &#034;Ssubkeyname&#034;}).Value = $regkey</p>
<p>($Inparams.Properties_ | where {$_.name -eq &#034;Svaluename&#034;}).Value = $value</p>
<p>$Outparams = $objStdRegProv.ExecMethod_(&#034;GetStringValue&#034;, $Inparams, &#034;&#034;, $objNamedValueSet)</p></blockquote>
<p> </p>
<p>I have only done limited testing at this point and, even if the actual work now requires nearly <strong>15</strong> lines of code to be performed vs. the previous <strong>3 </strong>lines in the .Net implementation, it at least seems to work just fine.</p>
<p>What follows is the complete code of my replacement function, in all its <span style="text-decoration: line-through;">uglyness</span> glory:</p>
<p> </p>
<p><!-- Code --></p>
<div class="dp-highlighter">
<ol class="dp-rb">
<li class="alt"><span>Function GetValueFromRegistryThruWMI([string]</span><span class="variable">$computername</span><span>, </span><span class="variable">$regkey</span><span>, </span><span class="variable">$value</span><span>)   </span></li>
<li><span>{   </span></li>
<li><span>    </span><span class="comment">#constant for the HLKM </span><span>  </span></li>
<li><span>    </span><span class="variable">$HKLM</span><span> = </span><span class="string">&#034;&amp;h80000002&#034;</span><span>  </span></li>
<li><span> </span></li>
<li><span>    #creates an SwbemNamedValueSet object</span></li>
<li><span>    </span><span class="variable">$objNamedValueSet</span><span> = </span><span class="builtin">New-Object</span><span> -COM </span><span class="string">&#034;WbemScripting.SWbemNamedValueSet&#034;</span><span>  </span></li>
<li><span> </span></li>
<li><span>    #adds the actual value that will requests the target to provide 64bit-registry info</span></li>
<li><span>    </span><span class="variable">$objNamedValueSet</span><span>.Add(</span><span class="string">&#034;__ProviderArchitecture&#034;</span><span>, 64) | </span><span class="builtin">Out-Null</span><span>  </span></li>
<li> </li>
<li><span>    #back to all the other usual COM objects for WMI that you have used a zillion times in VBScript</span></li>
<li><span>    </span><span class="variable">$objLocator</span><span> = </span><span class="builtin">New-Object</span><span> -COM </span><span class="string">&#034;Wbemscripting.SWbemLocator&#034;</span><span>  </span></li>
<li><span>    </span><span class="variable">$objServices</span><span> = </span><span class="variable">$objLocator</span><span>.ConnectServer(</span><span class="variable">$computername</span><span>,</span><span class="string">&#034;root\default&#034;</span><span>,</span><span class="string">&#034;&#034;</span><span>,</span><span class="string">&#034;&#034;</span><span>,</span><span class="string">&#034;&#034;</span><span>,</span><span class="string">&#034;&#034;</span><span>,</span><span class="string">&#034;&#034;</span><span>,</span><span class="variable">$objNamedValueSet</span><span>)   </span></li>
<li><span>    </span><span class="variable">$objStdRegProv</span><span> = </span><span class="variable">$objServices</span><span>.Get(</span><span class="string">&#034;StdRegProv&#034;</span><span>)   </span></li>
<li><span>  </span></li>
<li class="alt"><span>    </span><span class="comment"># Obtain an InParameters object specific to the method. </span><span>  </span></li>
<li><span>    </span><span class="variable">$Inparams</span><span> = (</span><span class="variable">$objStdRegProv</span><span>.Methods_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;GetStringValue&#034;</span><span>}).InParameters.SpawnInstance_()   </span></li>
<li><span>  </span></li>
<li class="alt"><span>    </span><span class="comment"># Add the input parameters </span><span>  </span></li>
<li><span>    (</span><span class="variable">$Inparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;Hdefkey&#034;</span><span>}).Value = </span><span class="variable">$HKLM</span><span>  </span></li>
<li><span>    (</span><span class="variable">$Inparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;Ssubkeyname&#034;</span><span>}).Value = </span><span class="variable">$regkey</span><span>  </span></li>
<li><span>    (</span><span class="variable">$Inparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;Svaluename&#034;</span><span>}).Value = </span><span class="variable">$value</span><span>  </span></li>
<li><span>  </span></li>
<li class="alt"><span>    </span><span class="comment">#Execute the method </span><span>  </span></li>
<li><span>    </span><span class="variable">$Outparams</span><span> = </span><span class="variable">$objStdRegProv</span><span>.ExecMethod_(</span><span class="string">&#034;GetStringValue&#034;</span><span>, </span><span class="variable">$Inparams</span><span>, </span><span class="string">&#034;&#034;</span><span>, </span><span class="variable">$objNamedValueSet</span><span>)   </span></li>
<li><span>  </span></li>
<li class="alt"><span>    </span><span class="comment">#shows the return value </span><span>  </span></li>
<li><span>    (</span><span class="variable">$Outparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;ReturnValue&#034;</span><span>}).Value   </span></li>
<li><span>  </span></li>
<li class="alt"><span>    </span><span class="keyword">if</span><span> ((</span><span class="variable">$Outparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;ReturnValue&#034;</span><span>}).Value -eq 0)   </span></li>
<li><span>    {   </span></li>
<li><span>       write-host </span><span class="string">&#034;it worked&#034;</span><span>  </span></li>
<li><span>       </span><span class="variable">$result</span><span> = (</span><span class="variable">$Outparams</span><span>.Properties_ | </span><span class="keyword">where</span><span> {</span><span class="variable">$_</span><span>.name -eq </span><span class="string">&#034;sValue&#034;</span><span>}).Value   </span></li>
<li><span>       write-host </span><span class="string">&#034;Result: $result&#034;</span><span>  </span></li>
<li><span>       </span><span class="keyword">return</span><span> </span><span class="variable">$result</span><span>  </span></li>
<li><span>    }   </span></li>
<li><span>    </span><span class="keyword">else</span><span>  </span></li>
<li><span>    {   </span></li>
<li><span>        write-host </span><span class="string">&#034;nope&#034;</span><span>  </span></li>
<li><span>    }   </span></li>
<li><span>}   </span></li>
</ol>
</div>
<p><span> </span></p>
<p><span>which can be called similarly to the previous one: </span><br />
<strong><span>GetValueFromRegistryThruWMI </span><span class="variable">$RMS</span><span> </span><span class="string">&#034;SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup&#034;</span><span> </span><span class="string">&#034;DatabaseServerName&#034;</span></strong></p>
<p>[Note: you don’t need the double\escape backslashes here, compared to the .Net implementation]</p>
<p>Enjoy your cross-architecture registry access: from 32bit to 64bit &#8211; and back!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/09/10/mistery-of-lost-registry-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCX Evolutions</title>
		<link>http://www.muscetta.com/2009/07/19/scx-evolutions/</link>
		<comments>http://www.muscetta.com/2009/07/19/scx-evolutions/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 10:31:53 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[openpegasus]]></category>
		<category><![CDATA[R2]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[scx]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=475</guid>
		<description><![CDATA[During the beta of the Cross-Platform extensions and of System Center Operations Manager 2007 R2, the product team had promised to eventually release the SCX Providers&#039;source code. Now that this promise has been mantained, and the SCX providers have been released on Codeplex at http://xplatproviders.codeplex.com/ it should be finally possible to entirely build your own [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>During the beta of the Cross-Platform extensions and of System Center Operations Manager 2007 R2, <a href="http://blogs.msdn.com/scxplat/archive/2008/08/11/opsmgr-2007-cross-platform-extensions-beta-refresh.aspx">the product team had promised to eventually release the SCX Providers&#039;source code</a>.</p>
<p>Now that <a href="http://blogs.msdn.com/cellfish/archive/2009/07/09/system-center-opsmgr-x-plat-providers-source-code-available.aspx">this promise has been mantained</a>, and the SCX providers have been released on Codeplex at <a href="http://xplatproviders.codeplex.com/">http://xplatproviders.codeplex.com/</a> it should be finally possible to entirely build your own unsupported agent package, starting from source code, without having to <a href="http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/">modify the original package as I have shown earlier on this blog</a>.<br />
Of course this will still be unsupported by Microsoft Product support, but will eventually work just fine!<br />
This is an extraordinary event in my opinion, as it is not a common event that Microsoft releases code as open source, especially when this is part of one of the product it sells. I suspect we will see more of this as we going forward.</p>
<p>Also, at R2 release time, <a href="http://technet.microsoft.com/en-us/library/dd919155.aspx">some official documentation about buildilng Cross-Plaform Management Packs has been published on Technet</a>.</p>
<p>Anyway, I have in the past posted a number of posts on my blog under this tag <a href="http://www.muscetta.com/tag/xplat/">http://www.muscetta.com/tag/xplat/</a> (I will continue to use that tag going forward) which show/describe how I hacked/modified both the existing MPs AND the SCX agent package to let it run on unsupported distributions (and I think they are still useful as they show a number of techniques about how to test, understand and troubleshoot the Xplat agent a bit. In fact, I have first learned how to understand and <a href="http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/">modify the RedHat MPs to monitor CentOS</a> and eventually even <a href="http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/">modified the RPM package to run on Ubuntu</a> (which also works on <a href="http://www.debian.org/releases/lenny/">Debian 5/Lenny</a>), eventually, as you can see because I am now using it to monitor &#8211; from home, across the Internet &#8211; the machine running this blog:</p>
<p><a title="www.muscetta.com Performance in OpsMgr by Daniele Muscetta, on Flickr" href="http://www.flickr.com/photos/dani3l3/3734028273/"><img src="http://farm4.static.flickr.com/3142/3734028273_5a0016c352.jpg" alt="www.muscetta.com Performance in OpsMgr" width="500" height="201" /></a></p>
<p>Or even, with or without OpsMgr 2007 R2, <a href="http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/">you could write your own scripts to interact with those providers, by using your favourite Scripting Language</a>.</p>
<p>After all, those experimentations with Xplat got me a fame of being a &#034;Unix expert at Microsoft&#034; (this expression still makes me laugh), <a href="http://twitter.com/dani3l3/status/1972980193">as I was tweeting here</a>:<br />
<a title="Unix expert at Microsoft by Daniele Muscetta, on Twitter" href="http://twitter.com/dani3l3/status/1972980193"><img src="http://farm4.static.flickr.com/3496/3734827286_076702367c.jpg" alt="Unix expert at Microsoft" width="500" height="381" /></a></p>
<p>But really, I have never hidden my interest for interoperability and <a href="http://old.honeynet.org/scans/scan29/sol/dmuscetta/index.html">the fact that I have been using Linux quite a bit in the past</a>, and still do.</p>
<p>Also, one more related information is that the fine people at Xandros have released their <a href="http://www.bridgeways.ca/products.php">Bridgeways Management Packs</a> and at the same time also started their own blog at <a href="http://blog.xplatxperts.com/">http://blog.xplatxperts.com/</a> where they discuss some troubleshooting techniques for the Xplat agent, <a href="http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/">both similar to what I have been writing about here and also</a> &#8211; of course &#8211; <a href="http://blog.xplatxperts.com/xplat-xperts/2009/07/validating-and-troubleshooting-unixlinux-providers.html">specific to their own providers, that are in their XSM namespace</a>.</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/07/19/scx-evolutions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using the SCX Agent with WSMan from Powershell v2</title>
		<link>http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/</link>
		<comments>http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 17:47:08 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[Get-WSManInstance]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[scx]]></category>
		<category><![CDATA[Test-WSMan]]></category>
		<category><![CDATA[ws-man]]></category>
		<category><![CDATA[wsman]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=473</guid>
		<description><![CDATA[So Powershell v2 adds a nice bunch of Ws-Man related cmdlets. Let’s see how we can use them to interact with OpenPegasus’s WSMan on a SCX Agent. PS C:\maint&#62; test-wsman -computer virtubuntu.huis.dom -port 1270 -authentication basic -credential (get-credential) -usessl cmdlet Get-Credential at command pipeline position 1 Supply values for the following parameters: Credential But we [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>So Powershell v2 adds <a href="http://blogs.msdn.com/wmi/archive/2009/03/26/wsman-enhancements-in-powershell-2-0.aspx" target="_blank">a nice bunch of Ws-Man related cmdlets</a>. Let’s see how we can use them to interact with OpenPegasus’s WSMan on a SCX Agent.</p>
<p>PS C:\maint&gt; <strong>test-wsman -computer virtubuntu.huis.dom -port 1270 -authentication basic -credential (get-credential) -usessl</strong></p>
<p>cmdlet Get-Credential at command pipeline position 1<br />
Supply values for the following parameters:<br />
Credential</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb22.png" border="0" alt="image" width="323" height="252" /></p>
<p>But we do get this error:</p>
<p><span style="color: #ff0000;">Test-WSMan : The server certificate on the destination computer (virtubuntu.huis.dom:1270) has the following errors:<br />
The SSL certificate could not be checked for revocation. The server used to check for revocation might be unreachable.</span></p>
<p><span style="color: #ff0000;">The SSL certificate is signed by an unknown certificate authority.<br />
At line:1 char:11<br />
+ test-wsman &lt;&lt;&lt;&lt;  -computer virtubuntu.huis.dom -port 1270 -authentication basic -credential (get-credential) -usessl<br />
+ CategoryInfo          : InvalidOperation: (:) [Test-WSMan], InvalidOperationException<br />
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.TestWSManCommand</span></p>
<p>The credentials above have to be a unix login. Which we typed correctly. But we still can&#039;t get thru, as the certificate used by the agent is not trusted by our workstation. This seems to be the “usual” issue I first faced when testing SCX with WINRM in beta1. <a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/">At the time I simply dismissed it with the following sentence</a></p>
<blockquote><p>[…] Of course you have to solve some other things such as DNS resolution AND trusting the self-issued certificates that the agent uses, first. Once you have done that, you can run test queries from the Windows box towards the Unix ones by using WinRM. […]</p></blockquote>
<p>and I sincerely thought that it would explain pretty well… but eventually a lot of people got confused by this and did not know what to do, especially for the part that goes about trusting the certificate.  Anyway, <a href="http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/">in the following posts I figured out you could pass the –skipCACheck parameter to WINRM</a>… which solved the issue with having to trust the certificate (which is fine for testing, but I would not use that for automations and scripts running in production… as it might expose your credentials to man-in-the-middle attacks).</p>
<p>So it seems that with the Powershell cmdlets we are back to that issue, as I can’t find a parameter to skip the CA check. Maybe it is there, but with PSv2 not having been released yet, I don&#039;t know everything about it, and the CTP documentation is not yet complete. Therefore, back to trusting the certificate.</p>
<p>Trusting the certificate is actually very simple, but it can be a bit tricky when passing those certs back and forth from unix to windows. So let&#039;s make the process a bit clearer.</p>
<p>All of the SCX-agents certificates are ultimately signed by a key on the Management server that has discovered them, but I don&#039;t currently know where that certificate/key is stored on the management server. Anyway, you can get it from the agent certificate &#8211; as you only really need the public key, not the private signing key.</p>
<p>Use WinSCP or any other utility to copy the certificate off one of the agents.<br />
You can find that in the <strong>/etc/opt/microsoft/scx/ssl</strong> location:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb23.png" border="0" alt="image" width="772" height="219" /></p>
<p>that <strong>scx-host-computername.pem</strong> is your agent certificate.</p>
<p>Copy it to the Management server and change its extension from <strong>.pem</strong> to <strong>.cer</strong>. Now Windows will be happy to show it to you with the usual Certificate interface:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb24.png" border="0" alt="image" width="404" height="472" /></p>
<p>We need to go to the “Certification Path” tab, select the ISSUER certificate (the one called “SCX-Certificate”):</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb25.png" border="0" alt="image" width="813" height="476" /></p>
<p>then go to the “Details” tab, and use the “Copy to File” button to export the certificate.</p>
<p>After you have the certificate in a .CER file, you can add it to the “trusted root certification authorities” store on the computer you are running your powershell tests from.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb26.png" border="0" alt="image" width="792" height="374" /></p>
<p>So after you have trusted it, the same command as above actually works now:</p>
<p>PS C:\maint&gt; <strong>test-wsman -computer virtubuntu.huis.dom -port 1270 -authentication basic -credential (get-credential) -usessl</strong></p>
<p>cmdlet Get-Credential at command pipeline position 1<br />
Supply values for the following parameters:<br />
Credential</p>
<p>wsmid           : http://schemas.dmtf.org/wbem/wsman/identify/1/wsmanidentity.xsd<br />
lang            :<br />
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd<br />
ProductVendor   : Microsoft System Center Cross Platform<br />
ProductVersion  : 1.0.4-248</p>
<p>Ok, we can talk to it! Now we can do something funnier, like actually returning instances and/or calling methods:</p>
<p>PS C:\maint&gt; <strong>Get-WSManInstance -computer virtubuntu.huis.dom -authentication basic -credential (get-credential) -port 1270 -usessl -enumerate http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem?__cimnamespace=root/scx</strong></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb27.png" border="0" alt="image" width="836" height="697" /></p>
<p>This is far from exhaustive, but should get you started on a world of possibilities about automating diagnostics and responses with Powershell v2 towards the OpsMgr 2007 R2 Cross-Platform machines. Enjoy!</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/06/01/using-the-scx-agent-with-wsman-from-powershell-v2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing the OpsMgr 2007 R2 SCX Agent on Ubuntu</title>
		<link>http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/</link>
		<comments>http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/#comments</comments>
		<pubDate>Sat, 30 May 2009 12:19:50 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[cim]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[openpegasus]]></category>
		<category><![CDATA[R2]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[scx]]></category>
		<category><![CDATA[scxcimcli]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[wsman]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=458</guid>
		<description><![CDATA[You know since the beta1 of Xplat I have been busy with modifying the Redhat management pack and monitor CentOS with OpsMgr. Now, CentOS is a distribution that is pretty similar to RedHat, so the RPM package just runs, and it is only a matter of hacking a modified MP. I never went really further [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>You know <a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/" target="_blank">since the beta1 of Xplat I have been busy with modifying the Redhat management pack and monitor CentOS with OpsMgr</a>. Now, CentOS is a distribution that is pretty similar to RedHat, so the RPM package just runs, and <a href="http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/" target="_blank">it is only a matter of hacking a modified MP</a>.</p>
<p>I never went really further in my experiments, mostly due to lack of time… but then yesterday I got a comment to this older post asking about Ubuntu. Of course I know about Ubuntu, and have been using Debian-based distributions for years. I actually even prefer them over RPM-based distributions such as RedHat or SuSE (personal preference). Heck, even this weblog is running on Debian!</p>
<p>Anyway, I never really tried to see if one of the existing RPM packages for RedHat or SuSE could be modified to run on Ubuntu. I will eventually test this on Debian too, but for now I used Ubuntu which tends to have slightly newer packages and libraries, overall. The machine I tested on is a Ubuntu Server 8.04.2. Older/newer versions might slightly differ.</p>
<p>BEWARE THAT ALL THAT FOLLOWS BELOW IS <strong>NOT</strong> SUPPORTED BY MICROSOFT. It is only described here for EXPERIMENTAL (==fun) purpose. DO NOT USE THIS IN A PRODUCTION ENVIRONMENT.</p>
<p>So, you are warned. Now let’s hack it.</p>
<p>The first thing to do is to copy the Redhat agent’s RPM package off your OpsMgr2007 R2 server in the “usual” path “<strong>C:Program FilesSystem Center Operations manager 2007AgentManagementUnixAgents</strong>”. Let’s grab the RHEL5 agent, which is called <strong>scx-1.0.4-248.rhel.5.x86.rpm</strong> in R2 RTM.</p>
<p>First we need to <a href="http://ubuntu.wordpress.com/2005/09/23/installing-using-an-rpm-file/" target="_blank">CONVERT the RPM package to the DEB package format used by Ubuntu, by using the ALIEN package</a>:</p>
<blockquote><p>sudo apt-get update<br />
sudo apt-get install alien<br />
sudo bash<br />
alien -k scx-1.0.4-248.rhel.5.x86.rpm &#8211;scripts<br />
dpkg -i scx_1.0.4-248_i386.deb</p></blockquote>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb15.png" border="0" alt="image" width="628" height="253" /></p>
<p>The converted package will install… but the script execution will fail in a few places – most notably in the generation of the certificate, as it is not able to locate the right openssl libraries, as shown in the screenshot above.</p>
<p>If the libssl.so.6 file cannot be found, you might be missing the “libssl-dev” package, which you can install as follows:</p>
<blockquote><p>apt-get install libssl-dev</p></blockquote>
<p>But even if it is installed, you will find that the files are still missing. This is not really true: actually, the files are there, but on Ubuntu they have a different name than on RedHat, that’s all. You can therefore create hardlinks to the “right” files, so that they are aliased and get found afterwards:</p>
<blockquote><p>cd /usr/lib<br />
ln -s libcrypto.so.0.9.8 libcrypto.so.6<br />
ln -s libssl.so.0.9.8 libssl.so.6</p></blockquote>
<p>So now when installing the package, the certificate generation will work:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb16.png" border="0" alt="image" width="629" height="266" /></p>
<p>You are nearly ready to go. You have to start the service by using the init scripts – the “service” command is RedHat-specific, that will still fail.</p>
<p><strong>/etc/init.d/scx-cimd start</strong> is the “standard” way of starting daemons from init on Unix.</p>
<p>But it still fails, as it seems that the init script provided in the RedHat package is really searching for a file called “functions” which is present on RedHat and on CentOS, which provides re-usable functions for startup scripts to include:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb17.png" border="0" alt="image" width="533" height="78" /></p>
<p>How do you fix this? I just copied the <strong>/etc/init.d/functions</strong> file from a CentOS box to my Ubuntu box.</p>
<p>I copied it via SCP from the CentOS box I have:</p>
<blockquote><p>cd /etc/init.d</p>
<p>scp root@centos.huis.dom:/etc/init.d/functions .</p></blockquote>
<p>You can probably also find and fetch the file from the Internet (both CentOS and RedHat should have accessible repositories with all the files in their distributions, since it is open sourced).</p>
<p>After you have the file in place, the init script will be able to include it, will find the functions it needs, and the daemon/service will now start (even if with minor errors I have not investigated for now, but that don’t seem to be causing troubles):</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb18.png" border="0" alt="image" width="631" height="87" /></p>
<p>and here you can see it is finally running:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb19.png" border="0" alt="image" width="629" height="143" /></p>
<p>So let’s try to issue a few queries <a href="http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/">as shown in a previous posts</a>:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb20.png" border="0" alt="image" width="627" height="630" /></p>
<p>IT WORKS!!!</p>
<p>But… there is a “but”: not all classes actually return instances and values just yet. Most notably the “<strong>SCX_OperatingSystem</strong>” class does not seem to return anything right awy. That is a very important class, because is the one we would use to first discover the Operating System object in the Management Packs. So we need to fix it. The reason why the class does not return anything, is that the SCX provider is looking into the <strong>/etc/redhat-release</strong> file to return what OS version/distribution the machine is running. And the file is obviously not there on Ubuntu.</p>
<p>On all Linuxes there is a similar file, called <strong>/etc/issue</strong>&#8230; which again, we can copy with the other name and trick the provider into working:</p>
<blockquote><p>cd /etc</p>
<p>cp issue redhat-release</p></blockquote>
<p>And NOW, the <strong>SCX_OperatingSystem</strong> Class also returns an instance:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb21.png" border="0" alt="image" width="635" height="407" /></p>
<p>The next step would be “cooking” an MP to discover Ubuntu. More on this on a later post (maybe). I did not test all classes and their implementation… you can try to poke at them by following <a href="http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/">the instructions and commands on my previous post here</a>. But this should get you started.</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/05/30/installing-the-opsmgr-2007-r2-scx-agent-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get-WmiCustom (aka: Get-WMIObject with timeout!)</title>
		<link>http://www.muscetta.com/2009/05/27/get-wmicustom/</link>
		<comments>http://www.muscetta.com/2009/05/27/get-wmicustom/#comments</comments>
		<pubDate>Wed, 27 May 2009 18:23:07 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[timeout]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=443</guid>
		<description><![CDATA[I make heavy use of WMI. But when using it to gather information from customer’s machines for assessments, I sometimes find the occasional broken WMI repository. There are a number of ways in which WMI can become corrupted and return weird results. Most of the times you would just get errors, such as “Class not [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I make heavy use of WMI.</p>
<p>But when using it to gather information from customer’s machines for assessments, I sometimes find the occasional broken WMI repository. There are a number of ways in which WMI can become corrupted and return weird results. Most of the times you would just get errors, such as “Class not registered” or “provider load failure”. I can handle those errors from within scripts.</p>
<p>But there are some, more subtle &#8211; and annoying – ways in which the WMI repository can get corrupted. the situations I am talking about are the ones when WMI will accept your query… will say it is executing it… but it will never actually return any error, and just stay stuck performing your query forever. Until your client application decides to time out. Which in some cases does not happen.</p>
<p>Now that was my issue – when my assessment script (which was using the handy Powershell <a href="http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/get-wmiobject.mspx">Get-WmiObject cmdlet</a>) would hit one of those machines… the whole script would hang forever and never finish its job. Ok, sure, the solution to this would be actually FIXING the WMI repository and then try again. But remember I am talking of an assessment: if the information I am getting is just one piece of a bigger puzzle, and I don’t necessarily care about it and can continue without that information – I want to be able to do it, to skip that info, maybe the whole section, report an error saying I am not able to get that information, and continue to get the remaining info. I can still fix the issue on the machine afterward AND then run the assessment script again, but in the first place I just want to get a picture of how the system looks like. With the good and with the bad things. Especially, I do want to take that whole picture – not just a piece of it.</p>
<p>Unfortunately, the <a href="http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/get-wmiobject.mspx">Get-WmiObject cmdlet</a> does not let you specify a timeout. Therefore I cooked my own function which has a compatible behaviour to that of Get-WmiObject, but with an added “-timeout” parameter which can be set. I dubbed it “Get-WmiCustom”</p>
<p><strong>Function Get-WmiCustom([string]$computername,[string]$namespace,[string]$class,[int]$timeout=15)<br />
{<br />
$ConnectionOptions = new-object System.Management.ConnectionOptions<br />
$EnumerationOptions = new-object System.Management.EnumerationOptions </strong></p>
<p><strong> $timeoutseconds = new-timespan -seconds $timeout<br />
$EnumerationOptions.set_timeout($timeoutseconds) </strong></p>
<p><strong> $assembledpath = &#034;\\&#034; + $computername + &#034;\&#034; + $namespace<br />
#write-host $assembledpath -foregroundcolor yellow </strong></p>
<p><strong> $Scope = new-object System.Management.ManagementScope $assembledpath, $ConnectionOptions<br />
$Scope.Connect() </strong></p>
<p><strong> $querystring = &#034;SELECT * FROM &#034; + $class<br />
#write-host $querystring </strong></p>
<p><strong> $query = new-object System.Management.ObjectQuery $querystring<br />
$searcher = new-object System.Management.ManagementObjectSearcher<br />
$searcher.set_options($EnumerationOptions)<br />
$searcher.Query = $querystring<br />
$searcher.Scope = $Scope </strong></p>
<p><strong> trap { $_ } $result = $searcher.get() </strong></p>
<p><strong> return $result<br />
}</strong></p>
<p>You can call it as follows, which is similar to how you would call get-WmiObject</p>
<p><strong>get-wmicustom -class Win32_Service -namespace &#034;root\cimv2&#034; -computername server1.domain.dom</strong></p>
<p>or, of course, specifying the timeout (in seconds):</p>
<p><strong>get-wmicustom -class Win32_Service -namespace &#034;root\cimv2&#034; -computername server1.domain.dom –timeout 1</strong></p>
<p>and obviously, since the function returns objects just like the original cmdlet, it is also possible to pipe them to other commands:</p>
<p><strong>get-wmicustom -class Win32_Service -namespace &#034;root\cimv2&#034; -computername server1.domain.dom –timeout 1 | Format-Table</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/05/27/get-wmicustom/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Burning Audio CDs with Media Player on Windows 2008 requires elevation</title>
		<link>http://www.muscetta.com/2009/05/03/burning-audio-cds-with-media-player-on-windows-2008-requires-elevation/</link>
		<comments>http://www.muscetta.com/2009/05/03/burning-audio-cds-with-media-player-on-windows-2008-requires-elevation/#comments</comments>
		<pubDate>Sun, 03 May 2009 07:26:03 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[CDA]]></category>
		<category><![CDATA[connect a burner and restart the player]]></category>
		<category><![CDATA[elevated]]></category>
		<category><![CDATA[elevation]]></category>
		<category><![CDATA[media player]]></category>
		<category><![CDATA[run as administrator]]></category>
		<category><![CDATA[UAC]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=440</guid>
		<description><![CDATA[Yesterday, when trying to burn an Audio CD (to listen to music in my car) starting from MP3 files by using Windows Media Player 11, I kept getting this message &#034;connect a burner and restart the player&#034; and the “Start Burn” button was greyed out, like if the program was not able to seeing that [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Yesterday, when trying to burn an Audio CD (to listen to music in my car) starting from MP3 files by using <a href="http://www.microsoft.com/windows/windowsmedia/download" target="_blank">Windows Media Player 11</a>, I kept getting this message &#034;connect a burner and restart the player&#034; and the “Start Burn” button was greyed out, like if the program was not able to seeing that my CD/DVD Burner is actually capable of writing CDs:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image29.png" border="0" alt="image" width="299" height="150" /></p>
<p>But I knew the DVD/CD burner was connected and working, because I had used it the very same day (with another program) to burn an .ISO image, and it worked from there!</p>
<p><a href="http://www.google.com/search?hl=en&amp;q=%22connect+a+burner+and+restart+the+player%22&amp;btnG=Search" target="_blank">I searched all over the place for this error message</a>, and there are many posts in forums with this message, which suggest you to do the strangest things, from changing your computer, to deleting important pieces of the registry, to reinstall the whole system… most of them are bullshit.</p>
<p>I went to my wife’s PC to test…with her PC it worked. It looked mostly the same: she’s running Vista, not 2008 (but it really is the same kernel, isn’t it?), she has exactly the same DVD burner installed as I do, the same motherboard, both machines and OS’s are 64bit, we both have installed Internet Explorer 8 (and keep it with “protected mode” turned ON), we both have Media Player 11, we both keep UAC enabled…</p>
<p>But then in the end I tried using elevation:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image30.png" border="0" alt="image" width="262" height="385" /></p>
<p>And here we go, it worked:</p>
<p><a href="http://www.muscetta.com/wp-content/uploads/image31.png" rel="lightbox[440]"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image-thumb14.png" border="0" alt="image" width="293" height="154" /></a></p>
<p>When running the process as administrator, Windows Media Player is able to query the hardware to determine if we have a capable device on Windows Server 2008. It remains a mystery to me at this point why this works on my wife’s Vista machine without elevation, though&#8230;</p>
<p>It sure is not a problem to do this operation “as administrator” when needed – but it just took me a minute to figure it out, for some reason.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/05/03/burning-audio-cds-with-media-player-on-windows-2008-requires-elevation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross Platform in OpsMgr 2007 R2 Release Candidate</title>
		<link>http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/</link>
		<comments>http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 21:55:46 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[cim]]></category>
		<category><![CDATA[openpegasus]]></category>
		<category><![CDATA[openwsman]]></category>
		<category><![CDATA[R2]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[scx]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=431</guid>
		<description><![CDATA[You have heard it all over the place, System Center Operations Manager 2007 R2 has reached the Release Candidate milestone and the RC bits have been made available on connect.microsoft.com. As it is becoming a tradition for me with each new release, I want to take a look at the Unix Monitoring stuff like I [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>You have heard it all over the place, <a href="http://blogs.technet.com/momteam/archive/2009/03/26/system-center-operations-manager-2007-r2-release-candidate-ready-for-download.aspx" target="_blank">System Center Operations Manager 2007 R2 has reached the Release Candidate milestone and the RC bits have been made available on connect.microsoft.com</a>.</p>
<p>As it is becoming a tradition for me with each new release, I want to take a look at the Unix Monitoring stuff like I did since <a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/" target="_blank">beta1 of Xplat</a>, passing thru <a href="http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/" target="_blank">beta2</a>. I am an integration freak and I have always insisted that interoperability is key. I will leave the most obvious “release notes” kind of things out of here, such as saying that there are now agents for the x64 version of linux distro’s, and so on…. you can read this stuff in the release notes already and in a zillion of other places.</p>
<p>Let’s instead look at my first impression ( = I am amazed: this product is really getting awesome) and let’s do a bit of digging, mostly to note what changed since my previous posts on Xplat (which, by the way, is the MOST visited post on this blog I ever published) – of course there is A LOT more that has changed under the hood… but those are code changes, improvements, polishing of the product itself… while that would be interesting from a code perspective, here I am more interested in what the final user (the System Administrator) will ultimately interact with directly, and what he might need to troubleshoot and understand how the pieces fit together to realize Unix Monitoring in OpsMgr.</p>
<p>After having hacked the RedHat MP to work on my CentOS box (as usual), I started to take a look at what is installed on the Linux box. Here are the new services:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ps -Af | grep scx" src="http://www.muscetta.com/wp-content/uploads/image21.png" border="0" alt="ps -Af | grep scx" width="993" height="89" /></p>
<p>You will notice the daemons have changed names and get launched with new parameters.</p>
<p>Of course when you see who uses port 1270 everything becomes clearer:</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="netstat -anp | grep 1270" src="http://www.muscetta.com/wp-content/uploads/image22.png" border="0" alt="netstat -anp | grep 1270" width="862" height="75" /></p>
<p>Therefore I can place the two new names and understand that SCXCIMSERVER is the WSMAN implementation, while SCXCIMPROVAGT is the CIM/WBEM implementation.</p>
<p>There is one more difference at the “service” (or “daemon”) level: the fact that there is only ONE init script now: <strong>/etc/init.d/scx-cimd</strong></p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="/etc/init.d/scx-cimd" src="http://www.muscetta.com/wp-content/uploads/image23.png" border="0" alt="/etc/init.d/scx-cimd" width="434" height="70" /></p>
<p>So basically the SCX “Agent” will start and stop as a single thing, even if it is composed of multiple executables that will spawn various processes.</p>
<p>Another difference: if we look in “familiar” locations like <strong>/etc/opt/microsoft/scx/bin/tools/</strong> we see that a number of configuration files is either empty (0 bytes) or missing (<a href="http://contoso.se/blog/?p=276" target="_blank">like the one described on Ander’s blog to enable verbose logging of WSMan requests</a>), when compared to earlier versions:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="/etc/opt/microsoft/scx/conf" src="http://www.muscetta.com/wp-content/uploads/image24.png" border="0" alt="/etc/opt/microsoft/scx/conf" width="550" height="206" /></p>
<p>But that is because I have been told we now have a nice new tool called scxadmin under <strong>/opt/microsoft/scx/bin/tools/</strong> , which will let you configure those things:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="/opt/microsoft/scx/bin/tools/scxadmin" src="http://www.muscetta.com/wp-content/uploads/image25.png" border="0" alt="/opt/microsoft/scx/bin/tools/scxadmin" width="879" height="402" /></p>
<p>Therefore you would enable VERBOSE logging for all components by issuing the command</p>
<blockquote><p><strong>./scxadmin -log-set all verbose</strong></p></blockquote>
<p>and you will bring it back to a less noisy setting of logging only errors with</p>
<blockquote><p><strong>./scxadmin -log-set all errors</strong></p></blockquote>
<p>the logs will be written under <strong>/var/opt/microsoft/scx/log</strong> just like they did before.</p>
<p>Other than this, a lot of the troubleshooting techniques I showed <a href="http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/" target="_blank">in one of my previous posts</a>, like how to query CIM classes directly or thru WSMAN remotely by using winrm – they should really stay the same. I will mention them again here for reference.</p>
<p>SCXCIMCLI is a useful and simple tool used to query CIM directly. You can roughly compare it to <a href="http://technet.microsoft.com/en-us/library/cc180684.aspx" target="_blank">wbemtest.exe</a><strong></strong> in the WIndows world (other than not having a UI). This utility can also be found in <strong>/opt/microsoft/scx/bin/tools</strong></p>
<p>A couple of examples of the most common/useful things you would do with scxcimcli:</p>
<p>1) Enumerate all Classes whose name contains “SCX_” in the <strong>root/scx</strong> namespace (the classes our Management packs use):</p>
<blockquote><p><strong>./scxcimcli nc -n root/scx -di |grep SCX_ | sort</strong></p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="./scxcimcli nc -n root/scx -di |grep SCX | sort" src="http://www.muscetta.com/wp-content/uploads/image26.png" border="0" alt="./scxcimcli nc -n root/scx -di |grep SCX | sort" width="582" height="350" /></p></blockquote>
<p>2) Execute a Query</p>
<blockquote><p><strong>./scxcimcli xq &#034;select * from SCX_OperatingSystem&#034; -n root/scx</strong></p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="./scxcimcli xq &quot;select * from SCX_OperatingSystem&quot; -n root/scx" src="http://www.muscetta.com/wp-content/uploads/image27.png" border="0" alt="./scxcimcli xq &quot;select * from SCX_OperatingSystem&quot; -n root/scx" width="701" height="425" /></p></blockquote>
<p>Also another thing that you might want to test when troubleshooting discoveries, is running the same queries through WS-Man (possibly from the same Management Server that will or should be managing that unix box). I already showed this in the past, it is the following command:</p>
<p><strong>winrm enumerate </strong><strong><span style="color: #800000;">http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem?__cimnamespace=root/scx</span></strong><strong> -username:root -password:password -r:</strong><strong>https://linuxbox.mydomain.com:1270/wsman</strong><strong> -auth:basic –skipCACheck</strong></p>
<p>but if you launch it that way it will now return an error like the following (or at least it did in my test lab):</p>
<table border="1" cellspacing="0" cellpadding="2" width="761">
<tbody>
<tr>
<td width="759" valign="top">Fault<br />
Code<br />
Value = SOAP-ENV:Sender<br />
Subcode<br />
Value = wsman:EncodingLimit<br />
Reason<br />
Text = UTF-16 is not supported; Please use UTF-8<br />
Detail<br />
FaultDetail = <a href="http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/CharacterSet">http://schemas.dmtf.org/wbem/wsman/1/wsman/faultDetail/CharacterSet</a></p>
<p>Error number:  -2144108468 0x8033804C<br />
The WS-Management service does not support the character set used in the request<br />
. Change the request to use UTF-8 or UTF-16.</td>
</tr>
</tbody>
</table>
<p>the error message is pretty self explanatory: you need to specify the UTF-8 Character set. You can do it by adding the “-encoding” qualifier:</p>
<p><strong>winrm enumerate </strong><strong>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem?__cimnamespace=root/scx</strong><strong> -username:root -password:password -r:</strong><strong>https://linuxbox.mydomain.com:1270/wsman</strong><strong> -auth:basic –skipCACheck <span style="color: #ff0000;">–encoding:UTF-8</span></strong></p>
<p>Hope the above is useful to figure out the differences between the earlier beta releases of the System Center CrossPlatform extensions and the version built in OpsMgr 2007 R2 Release Candidate.</p>
<p>There are obviously a million of other things in R2 worth writing about (either related to the Unix monitoring or to everything else) and I am sure posts will start to appear on the many, more active, blogs out there (they have already started appearing, actually). I have not had time to dig further, but will likely do so AFTER Easter – as the next couple of weeks I will be travelling, working some of the time (but without my test environment and good connectivity) AND visiting relatives the rest of the time.</p>
<p>One last thing I noticed about the Unix/Cross Platform Management Packs in R2 Release Candidate… their current “release date” exposed by the <a href="http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/" target="_blank">MP Catalog Web Service</a> is the <strong>20th of March</strong>…</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.muscetta.com/wp-content/uploads/image28.png" border="0" alt="image" width="550" height="190" /></p>
<p>…which happens to be <a href="http://www.flickr.com/photos/dani3l3/3369447511/" target="_blank">my Birthday</a> &#8211; therefore they must be a present for me! <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2009/03/27/cross-platform-in-opsmgr-2007-r2-release-candidate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Early Adoptions, Health Checks and New Year Rants.</title>
		<link>http://www.muscetta.com/2008/12/30/early-adoptions-health-checks-and-new-year-rants/</link>
		<comments>http://www.muscetta.com/2008/12/30/early-adoptions-health-checks-and-new-year-rants/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 15:10:26 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[MOM2005]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[HC]]></category>
		<category><![CDATA[Health Check]]></category>
		<category><![CDATA[HealthCheck]]></category>
		<category><![CDATA[Premier]]></category>
		<category><![CDATA[Premier Field Engineer]]></category>
		<category><![CDATA[RAP]]></category>
		<category><![CDATA[Risk Assessment Program]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=390</guid>
		<description><![CDATA[Two days ago I read the following Tweet by Hugh MacLeod: &#034;[...] Early Adopter Problem: How to differentiate from the bandwagon, once the bandwagon starts moving faster than you are [...]&#034; That makes me think of early adoption of a few technologies I have been working with, and how the community around those evolved. For [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/dani3l3/3150411409/"><img src="http://farm4.static.flickr.com/3258/3150411409_8ce3a8ea75.jpg" alt="Generations" width="500" height="333" /></a></p>
<p>Two days ago I read <a href="http://twitter.com/gapingvoid/status/1082816395">the following Tweet by Hugh MacLeod</a>:</p>
<blockquote><p>&#034;[...] Early Adopter Problem: How to differentiate from the bandwagon, once the bandwagon starts moving faster than you are [...]&#034;</p></blockquote>
<p>That makes me think of early adoption of a few technologies I have been working with, and how the community around those evolved. For example:</p>
<p><strong>Operations Manager</strong>&#8230; early adoption meant that I have been working with it since the beta, had posted <a href="http://www.muscetta.com/2007/05/10/create-a-script-based-unit-monitor-in-opsmgr2007-via-the-gui/">one of the earliest posts about how to use a script in a Unit Monitor back in may 2007</a> (the product was released in April 2007 and there was NO documentation back then, so we had to really try to figure out everything&#8230;), but <a href="http://contoso.se/blog/?p=305">someone seems to think it is worth repeating the very same lesson in November 2008</a>, with not a lot of changes, as <a href="http://twitter.com/dani3l3/status/1030704645">I wrote here</a>. I don&#039;t mean being rude to Anders&#8230; repeating things will surely help the late adopters finding the information they need, of course.</p>
<p>Also, I started playing early with <strong>Powershell</strong>. <a href="http://www.muscetta.com/2006/11/24/out-blog/">I posted my first (and only) cmdlet</a> back in 2006. It was not a lot more than a test for myself to learn how to write one, but that&#039;s just to say that I started playing early with it. I have been using it <a href="http://www.muscetta.com/2007/05/30/death-by-right-click-delete-nope-powershell/">to automate tasks</a> for example.</p>
<p>Going back to the quote above, everyone gets on the bandwagon posting <a href="http://www.systemcenterforum.org/news/advanced-example-using-powershell-and-the-opsmgr-sdk-creating-and-updating-groups/">examples and articles</a>. I had been asked a few times about writing articles on OpsMgr and Powershell usage (for example by <a href="http://www.powershell.it">www.powershell.it</a>) but I declined, as I was too busy using this knowledge to do stuff for work (where “work” is defined as in “work that pays your mortgage”), rather than seeking personal prestige through articles and blogs. Anyway, that kind of articles are appearing now all over the Internet and the blogosphere now. The above examples made me think of early adoption, and the bandwagon that follows later on… but even as an early adopter, I was never very noisy or visible.</p>
<p>Now, going back to what I do for work, (which <a href="http://blogs.msdn.com/dmuscett/archive/2005/09/02/459914.aspx">I mentioned here</a> and <a href="http://www.muscetta.com/2007/12/27/simply-works/">here in the past</a>), I work in the <a href="https://www.microsoft.com/emea/careers/technicalJobs/PremierFieldEngineer.mspx">Premier Field Engineering</a> organization of Microsoft Services, which provides Premier services to customers. <a href="http://www.microsoft.com/services/microsoftservices/srv_premier.mspx">Microsoft Premier customer have a wide range of Premier agreement features and components</a> that they can use to support their people, improve their processes, and improve the productive use of the Microsoft technology they have purchased. Some of these services we provide are known to the world as “<a href="http://www.google.com/search?hl=en&amp;q=health+check+site%3Amicrosoft.com&amp;btnG=Search">Health Checks</a>”, some as “<a href="http://www.google.com/search?hl=en&amp;q=risk+assessment+program+site%3Amicrosoft.com&amp;btnG=Search">Risk Assessment Programs</a>” (or, shortly, RAPs). These are basically services where one of our technology experts goes on the customer site and there he uses a custom, private Microsoft tool to gather a huge amount of data from the product we mean to look at (be it SQL, Exchange, AD or anything else….). The Health Check or RAP tool collects the data and outputs a draft of the report that will be delivered to the customer later on, with all the right sections and chapters. This is done so that every report of the same kind will look consistent, even if the engagement is performed by a different engineer in a different part of the world. The engineer will of course analyze the collected data and write recommendations about what is configured properly and/or about what could or should be changed and/or improved in the implementation to make it adhere to Best Practices. To make sure only the right people actually go onsite to do this job we have a strict internal accreditation process that must be followed; only accredited resources that know the product well enough and know exactly how to interpret the data that the tool collects are allowed to use it and to deliver the engagement, and present/write the findings to the customer.</p>
<p>So why am I telling you this here, and how have I been using my early knowledge of OpsMgr and Powershell for ?</p>
<p>I have used that to write the Operations Manager Health Check, of course!</p>
<p>We had a <a href="http://download.microsoft.com/download/f/9/7/f974f0df-66fd-47e9-a1ac-c6fdbe3c723a/Operations_Manager_Server_Health_Check.pdf">MOM 2005 Health Check </a>already, but since the technology has changed so much, from MOM to OpsMgr, we had to write a completely new tool. Jeff  (the original MOM2005 author, who does not have a blog that I can link to) and me are the main coders of this tool… and the tool itself is A POWERSHELL script. A longish one, of course (7000 lines, more or less), but nothing more than a Powershell script, at the end of the day. There are a few more colleagues that helped shape the features and tested the tool, including <a href="http://blogs.technet.com/kevinholman/">Kevin Holman</a>. Some of the <a href="http://blogs.technet.com/kevinholman/archive/2007/10/18/useful-operations-manager-2007-sql-queries.aspx">database queries on Kevin’s blog</a> are in fact what we use to extract some of the data (beware that some of those queries have recently been updated, in case you saved them and using your local copy!), while some other information are using internal and/or custom queries. Some other times we use OpsMgr cmdlets or go to the SDK service, but a lot of times we query the database directly (we really should use the SDK all the times, but for certain stuff direct database access is way faster). It took most of the past year to write it, test it, troubleshoot it, fix it, and deliver the first engagements as “beta” to some customers to help iron out the process&#8230; and now the delivery is available! If a year seems like a long time, you have to consider this is all work that gets done next to what we all have to normally do with customers, not replacing it (i.e. I am not free to sit on my butt all day and just write the tool&#8230; <a href="http://download.microsoft.com/download/e/9/d/e9df53f8-3069-4fe4-bdbd-0d7abd86488a/PremFieldEnginr_161107b.pdf">I still have to deliver services to customers day in day out, in the meantime</a>).</p>
<p>Occasionally, during this past calendar year, that is approaching its end, I have been willing and have found some extra time to disclose some bits and pieces, techniques and prototypes of how to use Powershell and OpsMgr together, <a href="http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/">such as innovative ways to use Powershell in OpsMgr against beta features</a>, but in general most of my early adopter’s investment went into the private tool for this engagement, and that is one of the reasons I couldn’t blog or write much about it, being it Microsoft Intellectual Property.</p>
<p>But it is also true that <a href="http://twitter.com/dani3l3/status/997620250">I did not care to write other stuff when I considered it too easy or it could be found in the documentation</a>. I like writing of ideas, thoughts, rants OR things that I discover and that are not well documented at the time I study them… so when I figure out things I might like leaving a trail for some to follow. But I am not here to spoon feed people like some in the bandwagon are doing. Now the bandwagon is busy blogging and writing continuously about some aspect of OpsMgr (known or unknown, documented or not), and the answer to <a href="http://twitter.com/gapingvoid/status/1082816395">the original question of Hugh</a> is, in my opinion, that it does not really matter what the bandwagon is doing right now. I was never here to do the same thing. I think <strong>that</strong> is my differentiator. I am not saying that what a bunch of colleagues and enthusiasts is doing is not useful: blogging and writing about various things they experiment with is interesting and it will be useful to people. But blogs are useful until a certain limit. I think that blogs are best suited for conversations and thoughts (rather than for &#034;howto&#039;s&#034;), and what I would love to see instead is: less marketing hype when new versions are announced and more real, official documentation.</p>
<p>But I think I should stop caring about what the bandwagon is doing, because that&#039;s just another ego trip at the end of the day. What I should more sensibly do, would be listening to <a href="http://freewillastrology.com/horoscopes/pisces.html">my horoscope</a> instead:</p>
<blockquote><p>[…] &#034;How do you slay the dragon?&#034; journalist Bill Moyers asked mythologist Joseph Campbell in an interview. By &#034;dragon,&#034; he was referring to the dangerous beast that symbolizes the most unripe and uncontrollable part of each of our lives. In reply to Moyers, Campbell didn&#039;t suggest that you become a master warrior, nor did he recommend that you cultivate high levels of sleek, savage anger. &#034;Follow your bliss,&#034; he said simply. Personally, I don&#039;t know if that&#039;s enough to slay the dragon &#8212; I&#039;m inclined to believe that you also have to take some defensive measures &#8212; but it&#039;s definitely worth an extended experiment. Would you consider trying that in 2009? […]</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/12/30/early-adoptions-health-checks-and-new-year-rants/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmatically Check for Management Pack updates in OpsMgr 2007 R2</title>
		<link>http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/</link>
		<comments>http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 22:10:21 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[R2]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/</guid>
		<description><![CDATA[One of the cool new features of System Center Operations Manager 2007 R2 is the possibility to check and update Management Packs from the catalog on the Internet directly from the Operators Console: Even if the backend for this feature is not yet documented, I was extremely curious to see how this had actually been [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>One of the cool new features of <a href="http://technet.microsoft.com/en-us/opsmgr/dd239186.aspx">System Center Operations Manager 2007 R2</a> is the possibility to check and update <a href="http://www.microsoft.com/technet/prodtechnol/scp/opsmgr07.aspx">Management Packs from the catalog on the Internet</a> directly from the Operators Console:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb12.png" border="0" alt="Select Management Packs from Catalog" width="640" height="406" /></p>
<p>Even if the backend for this feature is not yet documented, I was extremely curious to see how this had actually been implemented. Especially since it took a while to have this feature available for OpsMgr, I had the suspicion that it could not be as simple as one downloadable XML file, like <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A24CEA3A-1920-4B18-8CF2-8BF78C94C917&amp;displaylang=en">the old MOM2005&#039;s MPNotifier</a> had been using in the past.</p>
<p>Therefore I observed the console&#039;s traffic through the lens of my proxy, and got my answer:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image18.png" border="0" alt="ISA Server Log" width="813" height="58" /></p>
<p>So that was it: a .Net Web Service.</p>
<p>I tried to ask the web service itself for discovery information, but failed:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image19.png" border="0" alt="WSDL" width="653" height="145" /></p>
<p>Since there is no WSDL available, but I badly wanted to interact with it, I had to figure out: what kind of requests would be allowed to it, how should they be written, what methods could they call and what parameters should I pass in the call. In order to get started on this, I thought I could just observe its network traffic. And so I did&#8230; I fired up <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&amp;displaylang=en">Network Monitor</a> and captured the traffic:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/clip-image0025-thumb.jpg" border="0" alt="Microsoft Network Monitor 3.2" width="640" height="335" /></p>
<p><a href="http://blogs.technet.com/netmon/">Microsoft Network Monitor</a> is beautiful and useful for this kind of stuff, as it lets you easily identify which application a given stream of traffic belongs to, just like in the picture above. After I had isolated just the traffic from the Operations Console, I then saved those captures packets in CAP format and opened it again in <a href="http://www.wireshark.org/">Wireshark</a> for a different kind of analysis &#8211; &#034;Follow TCP Stream&#034;:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/clip-image0027-thumb.jpg" border="0" alt="Wireshark: Follow TCP Stream" width="640" height="450" /></p>
<p>This showed me the reassembled conversation, and what kind of request was actually done to the Web Service. That was the information I needed.</p>
<p>Ready to rock at this point, I came up with <a href="http://www.muscetta.org/Check-MPUpdates.zip"><strong>this Powershell script</strong></a> (to be run in OpsMgr Command Shell) that will:</p>
<p>1) connect to the web service and retrieve the complete MP list for R2 (this part is also useful on its own, as it shows how to interact with a SOAP web service in <a href="http://www.microsoft.com/powershell">Powershell</a>, invoking a method of the web service by issuing a specially crafted POST request. To give due credit, for this part I first looked at <a href="http://users.skynet.be/pascalbotte/rcx-ws-doc/perlpost.htm">this PERL code</a>, which I then adapted and ported to Powershell);</p>
<p>2) loop through the results of the &#034;Get-ManagementPack&#034; opsmgr cmdlet and compare each MP found in the Management Group with those pulled from the catalog;</p>
<p>3) display a table of all imported MPs with both the version imported in your Management Group AND the version available on the catalog:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb13.png" border="0" alt="Script output in OpsMgr Command Shell" width="596" height="480" /></p>
<p>Remember that this is just SAMPLE code, it is not meant to be used in production environment and it is worth mentioning again that OpsMgr2007 R2 this is BETA software at the time of writing, therefore this functionality (and its implementation) might change at any time, and the script will break. Also, at present, the MP Catalog web service still returns slightly older MP versions and it is not yet kept in sync and updated with MP Releases, but it will be ready and with complete/updated content by the time R2 gets released.</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/11/29/programmatically-check-for-management-pack-updates-in-opsmgr-2007-r2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CentOS discovery in OpsMgr2007 R2 beta</title>
		<link>http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/</link>
		<comments>http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 14:51:58 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[openpegasus]]></category>
		<category><![CDATA[openwsman]]></category>
		<category><![CDATA[R2]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[unsupported]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=361</guid>
		<description><![CDATA[Here we go again. Now that the OpsMgr2007 R2 beta is out, with an improved and revamped version of the System Center Cross Platform Extensions, I faced the issue of how to upgrade my test lab. I have to say that OpsMgr2007 R2 beta release notes explain the known issues, and I had no trouble [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Here we go again. Now that the <a href="http://technet.microsoft.com/en-us/opsmgr/dd239186.aspx" target="_blank">OpsMgr2007 R2 beta is out</a>, with an improved and revamped version of the <a href="http://blogs.msdn.com/scxplat/archive/2008/04/29/announcing-system-center-operations-manager-2007-cross-platform-extensions-and-connectors.aspx" target="_blank">System Center Cross Platform Extensions</a>, I faced the issue of how to upgrade my test lab.</p>
<p>I have to say that OpsMgr2007 R2 beta release notes explain the known issues, and I had no trouble whatsoever upgrading the windows part. It just took its time (I am running virtual machines in my test lab, that don&#039;t have the best performance), but it went smoothly and without a glitch. In a couple of hours I had everything upgraded: databases, RMS, reporting, agents, gateway. All right then. The new purple icons in System Center look cute, and <a href="http://contoso.se/blog/?p=304" target="_blank">the new UI has some great stuff</a>, such as a long-awaited way to update your management packs directly from the Internet, better display of Overrides (kind of what we used to rely on <a href="http://blogs.msdn.com/boris_yanushpolsky/archive/2007/08/09/override-explorer-v3-3.aspx" target="_blank">Override Explorer</a> for)&#8230; and  A LOT more new stuff that I won&#039;t be wasting my Sunday writing about since everybody else has already done it two days ago:</p>
<p><a href="http://twitter.com/opsmgr" target="_blank"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image4.png" border="0" alt="opsmgr aggregated feed on Twitter" width="630" height="480" /></a></p>
<p>Therefore let&#039;s get back to my upgrade, which is a lot more interesting (to me) than the marketing tam-tam <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>As part of the upgrade to R2, I had to first uninstall the Xplat beta refresh bits, which I had installed, including all Unix Management Packs. Including my <a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/" target="_blank">CentOS Management Pack</a> I had <a href="http://blogs.msdn.com/scxplat/archive/2008/05/06/another-first-experience-with-cpe.aspx" target="_blank">improvised</a>.</p>
<p>So this is the new start page of the integrated Discovery Wizard:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb.png" border="0" alt="Discovery Wizard" width="624" height="480" /></p>
<p>Looks nice and integrates the functionality of discovering and deploying Windows machines, SNMP Devices, and Unix/Linux machines.</p>
<p>Of course, my CentOS machine would not be discovered, and showed up as an unsupported platform. Of course my old Management Pack I had hacked together in XPlat Beta 1 did not work anymore. Therefore, I figured out I had to see what changes were there, and how to make it work again (of course it IS possible &#8211; It is NOT SUPPORTED, but I don&#039;t care, as long as it works).</p>
<p>Since the existing agent could not be discovered, the first step I took was logging on the Linux box, un-install the old agent, and install the new one:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb1.png" border="0" alt="XPlat Agent RPM Install on CentOS" width="617" height="480" /></p>
<p>There I tried to discover again, but of course it still failed.</p>
<p>At that point I started taking a look at the new layout of things on the unix side. Most stuff is located in the same directories where beta1 was installed, and there are a bunch of useful commands under <strong>/opt/microsoft/scx/bin/tools</strong>.<br />
You can check out the <a href="http://www.openpegasus.org/" target="_blank">Open Pegasus</a> version used:</p>
<p>[root@centos tools]# <strong>./scxcimconfig &#8211;version<br />
</strong>Version 2.7.0</p>
<p>Let&#039;s take a look at what SCX classes we have available:</p>
<p><strong>./scxcimcli nc -n root/scx -di |grep SCX | sort</strong></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb2.png" border="0" alt="./scxcimcli nc -n root/scx -di |grep SCX | sort" width="640" height="439" /></p>
<p>Nice. That&#039;s the stuff we will be querying over WS-Man from the Management Server.</p>
<p>So let&#039;s look at the OS Discovery, and we test it from the OpsMgr 2007 box:</p>
<p><strong>winrm enumerate </strong><strong>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/SCX_OperatingSystem?__cimnamespace=root/scx</strong><strong> -username:root -password:password -r:</strong><strong>https://centos:1270/wsman</strong><strong> -auth:basic -skipCACheck</strong></p>
<p>it returns results:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb3.png" border="0" alt="OS WS-Man Query" width="610" height="480" /></p>
<p>At first I assumed this worked like in Beta1, therefore I exported RedHat management pack and I made my own version of it, replacing the strings it is expecting to find to discover CentOS instead than Redhat.</p>
<p>While the MP was syntactically correct and would import fine, the Discovery wizard still didn&#039;t work.</p>
<p>I took one more look at the discoveries in the MP, and I found there are two more, targeted to Management Server, which is probably what gets used by the Discovery Wizard to understand what kind of agent kit needs to be deployed.</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb4.png" border="0" alt="MP XML - Discoveries" width="640" height="472" /></p>
<p>So basically this discovery checks for the returned value from the module to determine if the discovered platform is a supported one:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb5.png" border="0" alt="Discovery Settings" width="640" height="467" /></p>
<p>But how does the module get its data?</p>
<p>Look at the layout of the <strong>/AgentManagement/UnixAgents</strong> folder on the Management Server:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb6.png" border="0" alt="/AgentManagement/unixAgents " width="640" height="291" /></p>
<p>That&#039;s it: <strong>GetOSVersion.sh</strong> &#8211; a shell script. A nice, open, clear text, hackable shell script. Let&#039;s take a look at it:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb7.png" border="0" alt="Discovery Script Hack" width="640" height="392" /></p>
<p>So that&#039;s it, and how my modification looks like. What happens during the discovery wizard is that we probably copy the script over SCP to the box, execute it, look at a number of things, and return the discovery data we need.</p>
<p>If you do those steps manually, you see how the script returns something very similar to a <a href="http://technet.microsoft.com/en-us/magazine/cc983816.aspx" target="_blank">PropertyBag, just like discoveries done by VBScript on Windows machines</a>:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb8.png" border="0" alt="Discovery Script Output" width="640" height="393" /></p>
<p>So after modifying the script&#8230; here we go. The Wizard now thinks CentOS is Red Hat, and can install an agent on it:</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb9.png" border="0" alt="Discovery Wizard" width="548" height="480" /></p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb10.png" border="0" alt="Deploying Agent" width="551" height="480" /></p>
<p>Only when the Management Server discovery finally considers the CentOS machine worth managing, then the other discoveries that use WS-Man queries start kicking in, like the old one did, and find the OS objects and all the other hosted objects. In order for this to work you don&#039;t only need to hack the shell script, but to have a hacked MP &#8211; the &#034;regular&#034; Red Har one won&#039;t find CentOS, which is and remains an UNSUPPORTED platform.</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://www.muscetta.com/wp-content/uploads/image-thumb11.png" border="0" alt="CentOS Health Model" width="640" height="454" /></p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION. The solution presented here IS NOT SUPPORTED by Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/11/23/centos-discovery-in-opsmgr2007-r2-beta/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Protecting custom Resolution State in OpsMgr 2007</title>
		<link>http://www.muscetta.com/2008/09/13/protecting-custom-resolution-state-in-opsmgr-2007/</link>
		<comments>http://www.muscetta.com/2008/09/13/protecting-custom-resolution-state-in-opsmgr-2007/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 09:32:17 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[resolution state]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[unsupported]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=298</guid>
		<description><![CDATA[In System Center Operations Manager 2007, you can add and remove resolution states for your alerts at will. Other than states &#034;0&#034; (&#034;New&#034;) and &#034;255&#034; (&#034;Closed&#034;) you can create other 254 resolution states to suit your needs. This is a simple feature that was already present in previous MOM versions, and it is very useful [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>In System Center Operations Manager 2007, you can add and remove resolution states for your alerts at will. Other than states &#034;0&#034; (&#034;New&#034;) and &#034;255&#034; (&#034;Closed&#034;) you can create other 254 resolution states to suit your needs. This is a simple feature that was already present in previous MOM versions, and it is very useful to do a kind of tricks with your alerts. The amount of possible states you can create should be able to satisfy any kind of alert and incident management process you might have in place, and any kind of filtering or forwarding or escalation need you might want to perform by using resolution states.</p>
<p><img src="http://www.muscetta.com/wp-content/uploads/image.png" alt="image" width="810" height="350" /></p>
<p>By default, only OpsMgr Administrators can change these settings, with the exception of the two built-in states of &#034;New&#034; and &#034;Closed&#034;: those two states are REQUIRED if you want the product to continue working, therefore the GUI won&#039;t let you change, edit or delete them. Which is good.</p>
<p>This is not true for your own resolution states, which can be edited or even deleted any time. All that is really saved in an alert when you change an alert&#039;s resolution state is the NUMBER associated with it. In fact you even use that number when querying for alerts in the Command Shell:</p>
<p><img src="http://www.muscetta.com/wp-content/uploads/image1.png" alt="get-alert | where {$_.resolutionstate -eq 0}" width="718" height="122" /></p>
<p>That means that if by accident you delete a resolution state you have defined, you won&#039;t see its description anymore in the GUI. Also, if you try to re-organize your resolution state, you can easily change the IDs for existing ones&#8230; Sure, you need to have the permissions in order to change or delete them, but what if you have implemented your important Alert and Incident management process by using resolution states and you want a bit of extra protection from mistakes or unintended deletion for them?</p>
<p>Then you can protect them by making the product think they were &#034;built-in&#034; too, just like &#034;New&#034; and &#034;Closed&#034;.</p>
<p>How would you do this? In an UNSUPPORTED WAY: editing the database <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  In fact, those resolution states are written in a table in the database, called &#034;ResolutionState&#034; (who would have guessed it?), that looks like the following picture:</p>
<p><img src="http://www.muscetta.com/wp-content/uploads/image2.png" alt="dbo.ResolutionState" width="693" height="274" /></p>
<p>Can you see the &#034;IsPredefined&#034; column? That can be set to &#034;True&#034; or &#034;False&#034; and that value is used by the SDK service to tell the GUI if that Resolution State can be edited/deleted or not.</p>
<p>Of course changing the database directly IS NOT SUPPORTED by Microsoft. You do this at your own risk, and if it was me, I would *NEVER* touch, change or remove the default two states (&#034;New&#034; and &#034;Closed&#034;) as THAT really would BREAK the product. For example, Alerts that are not set to &#034;Closed&#034; (255) won&#039;t be ever groomed. And that is VERY BAD. NEVER, NEVER DO THAT.</p>
<p>On the other end, changing a custom Resolution State to make the product believe it is Predefined/Built-in has not had any negative impact in my (limited) testing so far, and has added the advantage of &#034;protecting&#034; my resolution state from unintended deletion, as shown below:</p>
<p><img src="http://www.muscetta.com/wp-content/uploads/image3.png" alt="image" width="623" height="162" /></p>
<p>As usual, do this at your own risk. Remember what&#039;s written in my <strong>Disclaimer</strong>:</p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MICROSOFT, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS HACK.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/09/13/protecting-custom-resolution-state-in-opsmgr-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I am the Empire</title>
		<link>http://www.muscetta.com/2008/07/31/i-am-the-empire/</link>
		<comments>http://www.muscetta.com/2008/07/31/i-am-the-empire/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 22:27:00 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[ariel]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Empire]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[lifestream]]></category>
		<category><![CDATA[maglietta]]></category>
		<category><![CDATA[microspotting]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[TShirt]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=282</guid>
		<description><![CDATA[I have been talking to Ariel last month, asking for a Microspotting T-Shirt since I had mentioned her earlier on my blog. I have been on holiday in the meantime… but the T-Shirt had arrived and was waiting for me in my letterbox in the office !! How cool is that??? So today I am [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/2719326262/"><img src="http://farm4.static.flickr.com/3159/2719326262_2f58e5da94.jpg" alt="I am the Empire" /></a></p>
<p class="flickr-yourcomment">I have been talking to <a href="http://www.flickr.com/photos/ariel/">Ariel</a> last month, asking for a <a href="http://www.microspotting.com/2008/06/microspotting-tshirts">Microspotting T-Shirt</a> since I had <a href="http://www.muscetta.com/2008/05/02/a-rant-about-openness/">mentioned her earlier on my blog</a>.</p>
<p>I have been on holiday in the meantime… but the T-Shirt had arrived and was waiting for me in my letterbox in the office !! How cool is that???</p>
<p>So today I am walking around the Rome office in it… and I am looking at people’s faces: you need to understand that Italian dress code is more or less the opposite of <a href="http://www.microspotting.com/2008/05/not-all-softies-believe-in-business-casual">how people usually dress in Redmond</a>&#8230; Italy is historically more formal,  and it would be the norm to dress fancy…  one would definitely look BAD here if he would show up in sandals in the office… and VERY bad going on sandals to a customer… <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/07/31/i-am-the-empire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Got a new PC (finally)</title>
		<link>http://www.muscetta.com/2008/06/27/got-a-new-pc-finally/</link>
		<comments>http://www.muscetta.com/2008/06/27/got-a-new-pc-finally/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 23:08:09 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[HyperV]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=280</guid>
		<description><![CDATA[So this is a screenshot from my new Quad-Core Intel Q6600, 8GB RAM with Windows 2008 Enterprise x64, running Hyper-V. I have bought it and installed it a few days ago, and migrated my home Active Directory off the old windows 2003 machine to Windows 2008. Yes, because I have an Active Directory at home. [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<div class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/2613086287/"><img class="flickr-photo" src="http://farm4.static.flickr.com/3095/2613086287_7c29deaf6e.jpg" alt="Got a new PC" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/2613086287/"></a></span></p>
</div>
<p class="flickr-yourcomment">So this is a screenshot from my new Quad-Core Intel Q6600, 8GB RAM with Windows 2008 Enterprise x64, running <a href="http://www.microsoft.com/Hyper-V">Hyper-V</a>.<br />
I have bought it and installed it a few days ago, and migrated my home <a href="http://www.microsoft.com/windowsserver2008/en/us/active-directory.aspx">Active Directory</a> off the old windows 2003 machine to Windows 2008. Yes, because I have an Active Directory at home. I know, I am probably nuts, but you already knew that much.</p>
<p>Today, I just updated Hyper-V to RTM version. Oh yeah, because Hyper-V has been Released To Manufacturing today! You can <a href="http://www.microsoft.com/Hyper-V">get it HERE</a>.</p>
<p>I am having lot of fun with this. I had not bought a new PC in about 7 years and could not really test anything on that old one anymore&#8230;<br />
I paid 8GB roughly 100euros, which is not a lot if you think about it. These days even standard &#034;budget&#034; PCs for just doing email and web surfing ship with 2 or 4GB&#8230;<br />
With that amount of RAM, I expect it to last several years like the previous one. The one I bought 7 years ago had 512MB when everybody was buying 128 or 256MB. Kinda the same story here.</p>
<p>Wonder what happens to the old PC? That glorious machine that has been my server for years has now been converted to the new kids&#039; PC and will go on for a few more years like that, I hope.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/06/27/got-a-new-pc-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS 5 Management Pack for OpsMgr SCX</title>
		<link>http://www.muscetta.com/2008/05/13/centos-5-management-pack-for-opsmgr-scx/</link>
		<comments>http://www.muscetta.com/2008/05/13/centos-5-management-pack-for-opsmgr-scx/#comments</comments>
		<pubDate>Tue, 13 May 2008 09:43:07 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[scx]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=277</guid>
		<description><![CDATA[As I mentioned here, I have been testing the SCX beta. Not having one of the &#034;supported&#034; platforms pushed me into playing with the provided Management Packs, and in turn I managed to use the MP for Red Hat Enterprise Linux 5 as a base, and replaced a couple of strings in the discoveries in [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions">As I mentioned here</a>, I have been testing the <a href="http://blogs.msdn.com/scxplat/">SCX</a> beta.</p>
<p>Not having one of the &#034;supported&#034; platforms pushed me into playing with the provided Management Packs, and in turn I managed to use the MP for Red Hat Enterprise Linux 5 as a base, and replaced a couple of strings in the discoveries in order to get a working <a href="http://www.centos.org">CentOS</a> 5 Management Pack.</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.muscetta.com/wp-content/uploads/centos-healthexplorer01-new.jpg" border="0" alt="CentOS_HealthExplorer01_NEW" width="997" height="681" /></p>
<p>I still have not looked into the &#034;hardware&#034; monitors and health model / service model, so those are not currently monitored. But it is a start.</p>
<p>A lot of people have asked me a lot of information and would like to get the file &#8211; both in the blog&#039;s comment, on the newsgroup, or via mail. I am sorry, but I cannot provide you with the file, because it has not been throughly tested and might render your systems unstable, and also because there might be licensing and copyright issues that I have not checked within Microsoft.</p>
<p>Keep also in mind that using CentOS as a monitored platform <strong>is NOT a SUPPORTED scenario/platform for SCX</strong>. I only used it because I did not have a Suse or Redhat handy that day, and because I wanted to understand how the Management Packs using WS-Man worked.</p>
<p>This said, should you wish to try to do the same &#034;MP Hacking&#034; I did,  <a href="http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/">I pretty much explained all you need to know in my previous post and its comments</a>, so that should not be that difficult.</p>
<p>Actually, I still think that the best way to figure out how things are done is by looking at the actual implementation, so I encourage you to look at the management packs and figure out how those work. There are a few mature tools out there that will help you author/edit Management Packs if you don&#039;t want to edit the XML directly: the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6c8911c3-c495-4a03-96df-9731c37aa6d7&amp;DisplayLang=en">Authoring Console</a>, and <a href="http://www.silect.com/solutions/opsmgr_Sol/opsmgr_Sol_studio2007_Lite.html">Silect MP Studio Lite</a>, for example. If you want to delve in the XML details, instead, then I suggest you read the <a href="http://download.microsoft.com/download/7/4/d/74deff5e-449f-4a6b-91dd-ffbc117869a2/OM2007_AuthGuide.doc">Authoring Guide</a> and peek at <a href="http://www.authormps.com/">Steve Wilson&#039;s AuthorMPs.com site</a>.</p>
<p><strong>Disclaimer<br />
</strong>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS PROGRAM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/05/13/centos-5-management-pack-for-opsmgr-scx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Content Accessible to All</title>
		<link>http://www.muscetta.com/2008/05/10/making-content-accessible-to-all/</link>
		<comments>http://www.muscetta.com/2008/05/10/making-content-accessible-to-all/#comments</comments>
		<pubDate>Sat, 10 May 2008 07:32:45 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[commercial]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[reclame]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=275</guid>
		<description><![CDATA[&#034;[...] Technology, when it evolves around people&#039;s actual needs rather than the needs of the designer, that&#039;s when it starts to work [...]&#034; DAISY is a technology that promises to revolutionize the reading experience for people who have print disabilities like blindness or dyslexia. DAISY (Digital Accessible Information SYstem) XML is a universal standard format [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/PJwBdVr_1LM&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/PJwBdVr_1LM&amp;hl=en" wmode="transparent"></embed></object></p>
<p><em><strong>&#034;[...] Technology, when it evolves around people&#039;s actual needs rather than the needs of the designer, that&#039;s when it starts to work [...]&#034;</strong></em></p>
<p>DAISY is a technology that promises to revolutionize the reading experience for people who have print disabilities like blindness or dyslexia. DAISY (Digital Accessible Information SYstem) XML is a universal standard format for reading and publishing digital talking books, and allows for new ways to deliver information quickly and efficiently using high quality synthetic speech or human voice. Microsoft, The DAISY Consortium (<a href="http://www.daisy.org">www.daisy.org</a>) and Sonata Software have worked together to build a &#034;Save as DAISY XML&#034; add-in for Microsoft Office Word. This free, downloadable XML-based add-in, available at <a href="http://sourceforge.net/projects/openxml-daisy">http://sourceforge.net/projects/openxml-daisy</a>, makes it possible for Microsoft Office Word (including XP, 2003 and 2007) users to convert Open XML-based content into DAISY XML.</p>
<p><a href="http://www.microsoft.com/presspass/presskits/DAISY/default.mspx">http://www.microsoft.com/presspass/presskits/DAISY/default.mspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/05/10/making-content-accessible-to-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing System Center Cross Plaform Extentions</title>
		<link>http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/</link>
		<comments>http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/#comments</comments>
		<pubDate>Sun, 04 May 2008 07:35:48 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[xplat]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[certificate]]></category>
		<category><![CDATA[connect]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[openpegasus]]></category>
		<category><![CDATA[openwsman]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[scx]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ws-man]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=274</guid>
		<description><![CDATA[I am testing the beta bits of the cross-platform extensions that were released on Microsoft Connect&#160; This post wants to describe my limited testing so far &#8211; I hope this can benefit/help everyone testing the beta for some stuff that might currently not be incredibly clear &#8211; unless you attended the MMS class, at least [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I am testing the beta bits of the cross-platform extensions that were released on <a href="http://connect.microsoft.com/">Microsoft Connect</a>&nbsp; </p>
<p>This post wants to describe my limited testing so far &#8211; I hope this can benefit/help everyone testing the beta for some stuff that might currently not be incredibly clear &#8211; <a href="http://blogs.msdn.com/scxplat/archive/2008/05/01/cross-platform-extensions-overview-session-at-mms.aspx">unless you attended the MMS class</a>, at least <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )  </p>
<p>I started out with <a href="http://download.microsoft.com/download/7/7/6/7762e198-cad4-4fac-9946-e8978e90823c/OpsMgr2007-CrossPlat-WP_CD_April2008.pdf">the White Paper that has been posted on the web, which describes the architecture pretty well</a>, but from a higher level (with diagrams and the like). Then I downloaded the beta bits, which contain another document about setting the thing up. It is pretty well done, to be honest (especially if you consider that it is beta documentation for a beta product!), but it does not really go all the way down to troubleshooting things a lot, yet. I will try to cover some of that here.  </p>
<p>I installed the agent manually &#8211; it’s just a RPM package, not much that can go wrong with that. There is a reason why I did not use the push discovery and deployment of the agent, which you will figure out reading later on. Once installed, I tried to figure out how things were looking like on the linux machine. It is all pretty understandable, after all, if you look around on the machine (documented or not, linux and open source stuff is easy to figure out by reading configuration files and the like, and by searching on the web).  </p>
<p>Basically the “agent” is not properly an &#034;agent&#034; the way the windows agent is, since it does not really &#034;sends&#034; stuff to the Management Server on its own: It consists of a&nbsp; couple of services/daemons, based on existing opensource projects, but configured in their own folder, with their own name, and using different ports than a standard install of those,&nbsp; not to conflict with possible existing ones on those machines.  </p>
<p>The Management Service uses these services remotely (similar to doing agentless monitoring towards a windows box) using these services. The two services are:
<ul>
<li><b>scx-cimd</b> which implements the CIM daemon (<a href="http://www.openpegasus.org">openpegasus.org</a>)  </li>
<li><b>scx-wsmand</b> which implements Ws-Man daemon (<a href="http://www.openwsman.org">openwsman.org</a>)</li>
</ul>
<p>&nbsp;<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="245" alt="scx-services commands" src="http://www.muscetta.com/wp-content/uploads/image001.png" width="640" border="0"/> </p>
<p>It is easy to figure out how they are layed out. Even if undocumented, you look at the processes  </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="130" alt="SCX processes" src="http://www.muscetta.com/wp-content/uploads/image002.png" width="640" border="0"/>  </p>
<p>and you can figure out WHERE they live (<b>/opt/microsoft/scx/bin/</b>….) and where their configuration files are located (/etc/opt/microsoft/scx/conf …).  </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="169" alt="SCX Configuration" src="http://www.muscetta.com/wp-content/uploads/image003.png" width="640" border="0"/>  </p>
<p>The files are self explanatory, and the documentation of the opensource projects can be found on the Internet:&nbsp; </p>
<p>for <strong>wsmand</strong> </p>
<ul>
<li>at <a href="http://www.openwsman.org">openwsman.org</a> (for wsmand) </li>
</ul>
<p>for <strong>cimd</strong> </p>
<ul>
<li>at openpegasus site (<a href="http://www.openpegasus.org/documents.tpl?CALLER=doc.tpl&amp;dcat=">http://www.openpegasus.org/documents.tpl?CALLER=doc.tpl&amp;dcat=</a> )  </li>
<li>on the openpegasus wiki (<a href="http://wiki.opengroup.org/pegasus-wiki/doku.php?id=start">http://wiki.opengroup.org/pegasus-wiki/doku.php?id=start</a> )  </li>
<li>at the linux management IBM page <a href="http://www.ibm.com/developerworks/linux/library/os-ltc-systemsmanagement/">http://www.ibm.com/developerworks/linux/library/os-ltc-systemsmanagement/</a>&nbsp; </li>
</ul>
<p>&nbsp; </p>
<p>I still have to delve into them properly as I would like to, but I already figured out a bunch of interesting things by quickly looking at them.  </p>
<p>Agent Communication someone must have decided to “recycle” the <strong>1270</strong> port number that was used in MOM2005 <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Basically openwsman listens as a SSL listener (with basic auth – connected via PAM module with the “regular” unix /etc/passwd users, so you can authenticate as those without having to define specific users for the service). So all that happens is that the Management Server asks things/executes WS-Man queries and commands on this channel. The Management Server connects every time to the agent on port 1270 using SSL, authenticates as “root” (or as the specified &#034;Action Account&#034;) and does its stuff, or asks the agent to do it. So the communication is happening from the Management Server to the agent… not the other way around like it happens with Windows &#034;agents&#034;. That’s why it feels to me more like an “agentless” thing, at least for what concerns the “direction” of traffic and who does the actual querying.  </p>
<p>For the rest, the provided Management Packs have “normal” discoveries and “normal” monitors. Pretty much like the Windows Management Packs often discover thing by querying WMI, here they use WS-Man to run CIM queries against the Unix boxes.  </p>
<p>The Service Model is totally cool to actually *<b>SEE</b>* in action, don’t you think so ?  </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="654" alt="Service Model" src="http://www.muscetta.com/wp-content/uploads/image004.png" width="451" border="0"/>  </p>
<p>&nbsp; </p>
<p>A few more debugging/troubleshooting information:  </p>
<p>I searched a bit and found the openwsman.org documentation and forum to be useful to figure some things out. For example I banged my head a few times before managing to actually TEST a query from windows to linux using WINRM. <a href="http://openwsman.org/openwsman-users-guide/vista-winrm-over-openwsman-setup">This document helped a lot</a>.  </p>
<p>Of course you have to solve some other things such as DNS resolution AND trusting the self-issued certificates that the agent uses, first. Once you have done that, you can run test queries from the Windows box towards the Unix ones by using WinRM.  </p>
<p>For example, this is how I tested what the discovery for a Linux RedHat Computer type should be returning (I read that by opening the MP in authoring console, as one would usually do for any MP):  </p>
<p><b>winrm enumerate http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/</b><b>SCX_OperatingSystem?__cimnamespace=root/scx</b><b> -username:root -password:password -r:https://centos:1270/wsman -auth:basic</b>  </p>
<p>If you need to test the query directly *<b>ON</b>* the linux box (querying the CIMD instead than WSMAND), the <b>WBEMEXEC</b> utility is packaged with the agent (under <b>/opt/microsoft/scx/bin/tools </b>). It is not as easy as some windows administrators (that have used WBEMTEST or WMI Tools in the past) would hope, but not even that bad. Just to run a few queries to the CIM daemon locally it is not really interactive, so you need to create a XML file that looks like the following (basically you build the RAW request the way the CIMD accepts it):  </p>
<p>&nbsp; </p>
<p>&nbsp; </p>
</p>
<p>&lt;?xml version=&#034;1.0&#034; ?&gt; </p>
<p>&lt;CIM CIMVERSION=&#034;2.0&#034; DTDVERSION=&#034;2.0&#034;&gt; </p>
<p>&lt;MESSAGE ID=&#034;50000&#034; PROTOCOLVERSION=&#034;1.0&#034;&gt; </p>
<p>&lt;SIMPLEREQ&gt; </p>
<p>&lt;IMETHODCALL NAME=&#034;EnumerateInstanceNames&#034;&gt; </p>
<p>&lt;LOCALNAMESPACEPATH&gt; </p>
<p>&lt;NAMESPACE NAME=&#034;root&#034;/&gt; </p>
<p>&lt;NAMESPACE NAME=&#034;scx&#034;/&gt; </p>
<p>&lt;/LOCALNAMESPACEPATH&gt; </p>
<p>&lt;IPARAMVALUE NAME=&#034;ClassName&#034;&gt; </p>
<p>&lt;CLASSNAME NAME=&#034;SCX_OperatingSystem&#034;/&gt; </p>
<p>&lt;/IPARAMVALUE&gt; </p>
<p>&lt;/IMETHODCALL&gt; </p>
<p>&lt;/SIMPLEREQ&gt; </p>
<p>&lt;/MESSAGE&gt; </p>
<p>&lt;/CIM&gt; </p>
<p>&nbsp; </p>
<p>&nbsp; </p>
<p>Once you have made such a file, you can execute the query in the file with the tool like the following:  </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="296" alt="./wbemexec -d2 query.xml" src="http://www.muscetta.com/wp-content/uploads/image005.png" width="640" border="0"/>  </p>
<p>&nbsp; </p>
<p>As you can see from here, CIMD uses HTTP already. This differs from Windows&#039; WMI that uses RPC/DCOM. In a way, this is much simpler to troubleshoot, and more firewall-friendly.  </p>
<p>&nbsp; </p>
<p>I have not really found an activity or debug log for any of those components, yet… but in the end they are not doing anything ON THEIR OWN, unless asked by the MS…. So the “healthservice” logic is all on the MS anyway. Errors about failed discoveries, permissions of the Action Account user, and anything else will be logged by the HealthService on the Windows machine (the Management Server) that is actually performing monitoring towards the Unix box.  </p>
<p>It really is *<b>just</b>* getting the WMI and WinRM-equivalent layer on linux/Unix up and running– after that, everything is done from windows anyway!  </p>
<p>After this common management infrastructure has been provided, 3<sup>rd</sup> parties will be facilitated in writing *<b>just</b>* MPs, without having to worry about the TRANSPORT of information anymore.  </p>
<p>&nbsp; </p>
<p>As you have probably noticed from the screenshots and commandlines, I don’t have a “real” Redhat Enterprise Linux or “supported” linux distribution… Therefore I started my testing using CentOS 5 (which is very similar to RHEL 5) &#8211; the agent installed fine as you can see, but I was not getting anything really “discovered” &#8211; the MP had only found a “linux computer” but was not finding any “RedHat” or “SuSe” or any other &#034;Operating System&#034; instances… and if you are somewhat familiar with the way <a href="http://technet.microsoft.com/en-us/library/bb309476.aspx">Operations Manager targeting</a> works, <a href="http://blogs.technet.com/momteam/archive/2007/10/31/targeting-series-part-1-differences-between-2005-and-2007.aspx">you would understand that monitors are targeted at object classes</a>. <a href="http://support.microsoft.com/kb/938999">If I don&#039;t have any instance of those objects being discovered, NO MONITORING actually happens</a>, even if the infrastructure is in place and the pieces are talking to each other:  </p>
<p>&nbsp;<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="93" alt="CentOS not discovered" src="http://www.muscetta.com/wp-content/uploads/image006.png" width="640" border="0"/>  </p>
<p>Therefore my machine was not being monitored.  </p>
<p>In the end, I actually even got it to work, but I had to create a new Management Pack (exporting and modifying the RHEL5 one as a base) that would actually search for different Property values and discover CentOS instead as if it were RedHat:  </p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="140" alt="CentOS Discovered" src="http://www.muscetta.com/wp-content/uploads/image007.png" width="640" border="0"/>&nbsp;</p>
<p>After importing my hacked Management Pack the machine started to be monitored. Here you can see Health Explorer in all of its glory:</p>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="680" alt="image008" src="http://www.muscetta.com/wp-content/uploads/image008.png" width="999" border="0"/> </p>
<p>Of course this is a hack I made just to have a test setup somewhat working and to familiarize myself with the SCX components. It is not guaranteed that my Management pack actually works on CentOS the way it is supposed to work and that there aren&#039;t other &#8211; more subtle &#8211; differences between RedHat and CentOS that will make it fail. I only modified a couple of Discoveries to let it discover the &#034;Operating System&#034; instance&#8230; everything else should follow, but not necessarily. One difference you see already in the screenshot above is that I am not yet seeing the hardware being monitored, so my hack is already only partially working and <strong>it is definitely something that won&#039;t be supported</strong>, so I cannot provide it here. Also, this is a beta, so I I think that the Management Packs will be re-released with following beta versions, and this change is something that would need to be re-done all over again. Also, the unsupported distribution is the reason why I installed the agent manually in the first place, as the &#034;Discovery Wizard&#034; would not really &#034;agree&#034; to go and let me install the agent remotely on an unsupported &#034;platform!&#034;. </p>
<p>But I could not wait to see this working, <a href="https://www.redhat.com/apps/webform.html?event_type=simple_form&amp;eid=871">while waiting two business days (we are on a weekend!) for confirmation that I am allowed to actually download a 30-day-unsupported-Trial of the &#034;real&#034; RedHat Enteprise Linux</a>, so I cheated <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Disclaimer</strong></p>
<p>The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS INFORMATION.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/05/04/testing-system-center-cross-plaform-extentions/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>A Rant about Openness</title>
		<link>http://www.muscetta.com/2008/05/02/a-rant-about-openness/</link>
		<comments>http://www.muscetta.com/2008/05/02/a-rant-about-openness/#comments</comments>
		<pubDate>Fri, 02 May 2008 08:32:09 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[LiveID]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WebSite]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/05/02/a-rant-about-openness/</guid>
		<description><![CDATA[It is interesting to see that a bunch of open source projects written on and for the Microsoft platform grows and grows, and also nice to see that a lot of Microsoft employees are very active and aware of the open source ecosystem, rather than being stuck with only what the company makes. Phil Haack, [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>It is interesting to see that a bunch of open source projects written on and for the Microsoft platform grows and grows, and also nice to see that a lot of Microsoft employees are very active and aware of the open source ecosystem, rather than being stuck with <em>only</em> what the company makes. <a href="http://haacked.com/archive/2008/04/09/interview-with-brad-wilson-on-microsoft-and-open-source.aspx">Phil Haack, in a post about an interview to Brad Wilson,&#160; wisely writes</a>: </p>
<blockquote><p>&quot;[...] What I particularly liked about this post was the insight Brad provides on the diverse views of open source outside and inside of Microsoft as well as his own personal experience contributing to many OSS projects. It&#039;s hard for some to believe, but there are developers internal to Microsoft who like and contribute to various open source projects. [...]&quot; </p>
</blockquote>
<p>In fact, being made by Microsoft people or not, the list of open source software on CodePlex keeps growing too. Mentioning CodePlex and interviews, <a href="http://www.microspotting.com/2008/04/sara-ford-open-source">another interesting one is that of Sara Ford, Program Manager for CodePlex posted on Microspotting</a>. But Microspotting is awesome in general. My favorite quote by her: </p>
<blockquote><p>&quot;[...] Hey. My name is Ariel and I&#039;m the person you thought would never work at MSFT [...]&quot;. </p>
</blockquote>
<p>In fact, just as I do, she is <a href="http://www.microspotting.com/">running that blog on WordPress</a>, posting <a href="http://www.flickr.com/photos/ariel/">her photos on Flickr</a>, using a <a href="http://feeds.feedburner.com/microspotting">RSS feed on Feedburner</a> and in general using a bunch of things that are out there that might be seen as &quot;competing&quot; with what Microsoft makes. In fact, this attitude towards other products and vendors on the market is what I am mainly interested in. Should we only use flagship products? Sure, when they help us, but not necessarily. Who cares? People&#039;s blogs are not, as someone would like them to be, a coordinated marketing effort. This is about real people, real geeks, who just want to share and communicate personal ideas and thoughts. I had a blog before being at Microsoft, after all. Obviously I had exposure to competing products. <a href="http://toolbar.netcraft.com/site_report?url=www.muscetta.net">My server was running LAMP on Novell Netware in 2002 &#8211; after which I moved it to Linux</a>. It is not a big deal. And if I try to put things in perspective, in fact, this is turning out to be an advantage. I am saying this, as the latest news about interoperability comes from MMS (Microsoft Management Summit): and that is <a href="http://blogs.msdn.com/scxplat/archive/2008/04/29/announcing-system-center-operations-manager-2007-cross-platform-extensions-and-connectors.aspx">the announcement</a> that <a href="http://edge.technet.com/Media/Operations-Manager-with-Barry-Shilmover/">System Center Operations Manager will monitor Linux natively</a>. I find this to be extremely exciting, and a step in the right direction&#8230; to say it all I am LOVING this!!! But at the same time I see some other colleagues in technical support that are worrying and being scared by this &#8211; &quot;if we do monitor Linux and Unix, we are supposed to have at least some knowledge on those systems&quot;, they are asking. Right. We probably do. At the moment there are probably only a limited number of people that actually can do that, at least in my division. But this is because in the past <a href="http://www.muscetta.com/2006/05/29/specialization-is-bullshit/">they must have sacrificed their own curiosity</a> to <a href="http://www.muscetta.com/2006/11/05/more-on-specialization/">become &quot;experts&quot; in some very narrow and &quot;specialized&quot; thing</a>. <a href="http://www.muscetta.com/2007/12/27/simply-works/">Here we go</a>. On the opposite, I kept using Linux &#8211; even when other &quot;old school&quot; employees would call me names. All of a sudden, someone else realizes my advantage.&#160; &#8230;but <a href="http://blogs.msdn.com/johnmont/archive/2008/04/11/popfly-on-moonlight.aspx">a lot of geeks already understood the power of exploration</a>, and won&#039;t stop defining people by easy labels. Another cool quote I read the other day is what <a href="http://jimmy.schementi.com/">Jimmy Schementi</a> has written in his Flickr profile: </p>
<blockquote><p>&quot;[...] I try to do everything, and sometimes I get lucky and get good at something [...]&quot;. </p>
</blockquote>
<p>Reading on his blog it looks like he also gave up on trying to write a Twitter plugin for <strike>MSN</strike>Live Messenger (or maybe he never tried, but at least <a href="http://www.muscetta.com/2007/10/01/facebook-implemented-a-usersetstatus-api/">I wanted to do that</a>, instead) and <a href="http://blog.jimmy.schementi.com/2008/04/pidgin-and-twitter.html">wrote it for Pidgin instead</a>.&#160; Why did he do that ? I don&#039;t know, I suppose because it was quicker/easier &#8211; and there were API&#039;s and code samples to start from.</p>
<p>The bottom line, for me, is that geeks are interested in figuring out cool things (no matter what language or technology they use) and eventually communicating them. They tend to be pioneers of technologies. They try out new stuff. Open Source development is a lot about agility and &quot;trying out&quot; new things. Another passage of <a href="http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/">Brad&#039;s interview</a> says: </p>
<blockquote><p>&quot;[...] That&#039;s true&#8211;the open source projects I contribute to tend to be the &#034;by developer, for developer&#034; kind, although I also consume things that are less about development [...] Like one tool that I&#039;ve used forever is the GIMP graphics editor, which I love a lot&quot;. </p>
</blockquote>
<p>That holds true, when you consider that a lot of these things are not really mainstream. Tools made &quot;by developer, for developer&quot; are usually a sort of experimental ground. Like <a href="http://www.twitter.com">Twitter</a>. Every geek is talking about Twitter these days, but <a href="http://twitter.com/Carnage4Life/statuses/799199971">you can&#039;t really say that it is mainstream</a>. Twitter has quite a bunch of interesting aspects, though, and that&#039;s why geeks are on it. Twitter lets me keep up-to-date quicker and better (and with a personal, conversational touch) even better than RSS feeds and blogs do. Also, there are a lot of Microsofties on Twitter. And the cool thing is that yo can really talk to everybody, at any level. Not just everybody &quot;gets&quot; blogs, social networks, and microblogging. Of course you cannot expect everybody to be on top of the tech news, or use experimental technologies. So in a way stuff like Twitter is &quot;by geeks, for geeks&quot; (not really just for developers &#8211; there&#039;s a lot of &quot;media&quot; people on Twitter). Pretty much in the same way, a lot of people I work with (at direct contact, everyday) only found out about LinkedIN during this year (2008!). I joined Orkut and LinkedIN in 2004. Orkut was in private beta, back then. A lot of this stuff never becomes mainstream, some does. But it is cool to discover it when it gets born. How long did it take for Social Networking to become mainstream? So long that when it is mainstream for others, I have seen it for so long that I am even getting tired of it.</p>
<p>For some reason, geeks love to be pioneers. This is well expressed in a <a href="http://blogs.msdn.com/chris_pratley/archive/2008/04/28/my-new-gig-is-office-labs.aspx">digression by Chris Pratley</a>:</p>
<blockquote><p>&quot;[...] some of them we will be putting out on officelabs.com for the general public (you folks!) to try so we can understand how &quot;normal&quot; people would use these tools. Now of course, as we bloggers and blog-readers know, we&#039;re not actually normal &#8211; you could even debate whether the blogosphere is more warped than the set of Microsoft employees, who comprise an interesting cross-section of job types, experiences, and cultures. But I digress. [...]&quot;</p>
</blockquote>
<p>But I have been digressing, too, all along. As usual. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/05/02/a-rant-about-openness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Popfly Virtual Earth Mashup on Moonlight</title>
		<link>http://www.muscetta.com/2008/04/12/popfly-virtual-earth-mashup-on-moonlight/</link>
		<comments>http://www.muscetta.com/2008/04/12/popfly-virtual-earth-mashup-on-moonlight/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 08:44:02 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[popfly]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/04/12/popfly-virtual-earth-mashup-on-moonlight/</guid>
		<description><![CDATA[Installed moonlight on Ubuntu from source by following these instructions (there are some typo&#039;s but they are understandable and correctable). All in all, even being still under heavy development, what Miguel de Icaza has achieved (with moonlight, just like with mono) is amazing. After I posted the above picture on Flickr, John Montgomery was amazed [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<div class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/2401024181/"><img class="flickr-photo" src="http://farm3.static.flickr.com/2215/2401024181_d9b74faf81.jpg" alt="Popfly Virtual Earth Mashup on Moonlight" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/2401024181/"></a></span></p>
</div>
<p class="flickr-yourcomment">Installed <a href="http://go-mono.org/moonlight">moonlight</a> on Ubuntu from source by following <a href="http://www.nino-net.org/2008/02/29/moon-use-silverlight-plugin-in-ubuntu-710">these instructions</a> (there are some typo&#039;s but they are understandable and correctable).</p>
<p>All in all, even being still under heavy development, what Miguel de Icaza has achieved (with moonlight, just like with <a href="http://go-mono.org">mono</a>) is amazing.</p>
<p>After I posted the above picture on Flickr, John Montgomery was amazed to see <a href="http://www.popfly.com/">PopFly</a> (his creature) working on moonlight, and <a href="http://blogs.msdn.com/johnmont/archive/2008/04/11/popfly-on-moonlight.aspx">he linked to me from his blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/04/12/popfly-virtual-earth-mashup-on-moonlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conversation about Blogs with a customer</title>
		<link>http://www.muscetta.com/2008/03/28/conversation-about-blogs-with-a-customer/</link>
		<comments>http://www.muscetta.com/2008/03/28/conversation-about-blogs-with-a-customer/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 14:24:17 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[gapingvoid]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/03/28/conversation-about-blogs-with-a-customer/</guid>
		<description><![CDATA[I usually don&#039;t like mentioning specific facts that happened to me at work. But work is part of life, so even if this is mostly a personal blog, I cannot help myself but write about certain things that make me think when they happen. When I end up having conversations such as this, I get [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I usually don&#039;t like mentioning specific facts that happened to me at work. But work is part of life, so even if this is mostly a personal blog, I cannot help myself but write about certain things that make me think when they happen.</p>
<p>When I end up having conversations such as this, I get really sad: I thought we had finally passed the arrogant period where we had to spoon-feed customers, and I thought we were now mature enough to consider them smart people and providing <a href="http://www.microsoft.com/powershell">cool, empowering technologies</a> for them to use. I also thought that pretty much everybody liked Microsoft finally opening up and actually talking TO people&#8230; not only talking them INTO buying something, something &#8211; but having real conversations.</p>
<p>I get sad when I find that people still don&#039;t seem to be accepting that, and wanting back the old model, instead. Kinda weird.</p>
<p>&nbsp;</p>
<p>The conversation goes as follows (words are not exactly those &#8211; we were speaking Italian and I sort of reconstructed the conversation &#8211; you should get the sense of it anyway):</p>
<p>&nbsp;</p>
<blockquote><p>[...]</p>
<p><strong>Me:</strong> &#034;The SDK service allows you to do quite a lot of cool stuff. Unfortunately not all of that functionality is completely or always easily exposed in the GUI. That is, for example: it is very EASY to define overrides, but it can get very tricky to find them back once set. That&#039;s why you can use <a href="http://blogs.msdn.com/boris_yanushpolsky/archive/2007/08/09/override-explorer-v3-3.aspx">this little useful tool</a> that the developer of that SDK service has posted on his blog&#8230;&#034; </p>
<p><strong>Cust:</strong> &#034;&#8230;but we can&#039;t just read blogs here and there!&#034; </p>
<p><strong>Me:</strong> &#034;Well, I mean, then you may have to wait for the normal release cycle. It might be that those improvements will make it in to the product. That might happen in months, if you are lucky, or maybe never. What&#039;s wrong if he publishes that on his blog, bypassing the bureaucracy crap, and makes your life easier with it RIGHT NOW?&#034; </p>
<p><strong>Cust:</strong> &#034;It is not official, I want it in the product!&#034; </p>
<p><strong>Me:</strong> &#034;I see, and even understand that. But right now that feature just isn&#039;t there. But you can use this tool to have it. Don&#039;t worry: it is not made by some random guy who wants to trojan your server! It is made by the very same developer who wrote the product itself&#8230;&#034; </p>
<p><strong>Cust:</strong> &#034;It is not supported, what if it breaks something?&#034; </p>
<p><strong>Me: </strong>&#034;So are all resource kit tools, in general. written by some dev guy in his free five minutes, and usually unsupported. Still very useful, though. Most of them. And they usually do work, you know that much, don&#039;t you?&#034; </p>
<p><strong>Cust:</strong> &#034;But why on a blog?&#034; </p>
<p><strong>Me:</strong> &#034;What&#039;s wrong with this? People are just trying to make customer&#039;s life easier by <a href="http://www.gapingvoid.com/Moveable_Type/archives/001607.html">being transparent and open and direct in their communication, just talking RIGHT to the customers. People talking to people</a>, bypassing the prehistoric bureaucracy structure of companies&#8230; the same happens on many other sites, just think <a href="http://isatools.org/">isatools.org</a> for example&#8230; those are just tools that a support guy like me has written and wants to share because they might be useful&#8230;&#034; </p>
<p><strong>Cust:</strong> &#034;But I can&#039;t follow/read all the blogs out there! I don&#039;t have time for it&#034; </p>
<p><strong>Me:</strong> &#034;Why not? I have thousands of feeds in my aggregator and&#8230;&#034; </p>
<p><strong>Cust:</strong> &#034;I don&#039;t have time and I don&#039;t want to read them, because I pay for support, so I don&#039;t expect this stuff to be in blogs&#034; </p>
<p><strong>Me:</strong> &#034;Well, I see, since you pay for support, you are paying ME &#8211; in fact I am working with you on this product precisely as part of that paid support. That&#039;s why I am here to tell you that this tool exists, in case you had not heard of it, so you actually know about it without having to read that yourself on any blog&#8230; does that sound like a deal? Where&#039;s the issue?&#034; </p>
<p><strong>Cust:</strong> &#034;Sgrunt. I want something official, I don&#039;t like this blog stuff&#034; </p>
<p>[...]</p>
</blockquote>
<p>&nbsp;</p>
<p>I thought this was particularly interesting, not because I want to make fun of this person. I do respect him and I think he just has a different point of view. But in my opinion this conversation shows (and made me think about) an aspect of that &#034;generation gap&#034; inside Microsoft that <a href="http://www.gapingvoid.com/Moveable_Type/archives/004459.html">Hugh talks about here</a>: </p>
<blockquote><p><em>&#034;[...]4.30 Hugh talks about a conversation he had with a few people inside Microsoft- how there’s a generation gap growing within the company, between the Old Guard, and the new generation of Microsofties, who see their company in much more open, organic terms.[...]&#034;</em> </p>
</blockquote>
<p>Basically this tells me that the generation gap is not happening only INSIDE Microsoft: it invests our customers too. Which makes it even more <a href="http://www.gapingvoid.com/Moveable_Type/archives/004181.html">difficult to talk to some of them, as we change</a>. Traditions are hard to change.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/03/28/conversation-about-blogs-with-a-customer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ca(p)tching Cats and Dogs</title>
		<link>http://www.muscetta.com/2008/03/09/captching-cats-and-dogs/</link>
		<comments>http://www.muscetta.com/2008/03/09/captching-cats-and-dogs/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 08:36:22 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Asirra]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/03/09/captching-cats-and-dogs/</guid>
		<description><![CDATA[I read on Jeff Atwood&#039;s blog about most strong Captcha having been defeated. Also, on top of visitors getting annoyed by it, the Captcha plugin I am using has gone unmantained lately. And, one way or another, I am getting comment spam again. Which is something I really hate as you know what I would [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I read on <a href="http://www.codinghorror.com/blog/archives/001067.html">Jeff Atwood&#039;s blog about most strong Captcha having been defeated</a>. Also, on top of visitors getting annoyed by it,  <a href="http://www.boriel.com/2006/05/27/bye-bye-captcha/">the Captcha plugin I am using has gone unmantained</a> lately. And, one way or another, I am getting comment spam again. Which is something I really hate as you know <a href="http://www.43things.com/things/view/13248/transmit-spammers-to-a-deserted-island-where-they-can-cannibalize-each-other">what I would love to do to spammers</a>&#8230;</p>
<p>I am seriously considering giving <a href="http://research.microsoft.com/asirra/">Asirra</a> a try. It is an interesting project from Microsoft Research for an HIP (Human Interaction Proof) that uses info from <a href="http://www.petfinder.com/">petfinder.com</a> to let users set apart pictures of dogs from those of cats. There is also a <a href="http://research.microsoft.com/asirra/WordPressPlugin/">WordPress plugin</a>, in the best and newest &#034;<a href="http://www.microsoft.com/opensource/interop/default.mspx">we want to interoperate</a>&#034; fashion that we are finally getting at Microsoft (this has always been the way to go, IMHO, and BTW).</p>
<p>Anyway, what do you think ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/03/09/captching-cats-and-dogs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Looking at OpsMgr2007 Alert trend with Command Shell</title>
		<link>http://www.muscetta.com/2008/01/25/looking-at-opsmgr2007-alert-trend-with-command-shell/</link>
		<comments>http://www.muscetta.com/2008/01/25/looking-at-opsmgr2007-alert-trend-with-command-shell/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 20:01:02 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[Alert]]></category>
		<category><![CDATA[Command Shell]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[trend]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/01/25/looking-at-opsmgr2007-alert-trend-with-command-shell/</guid>
		<description><![CDATA[It&#039;s friday night, I am quite tired and I can&#039;t be asked of writing a long post. But I have not written much all week, not even updated my Twitter, and now I want to finish the week with at least some goodies. So this is the turn of a couple of Powershell commands/snippets/scripts that [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>It&#039;s friday night, I am quite tired and I can&#039;t be asked of writing a long post. But I have not written much all week, not even updated my Twitter, and now I want to finish the week with at least some goodies. So this is the turn of a couple of <a href="http://www.microsoft.com/powershell">Powershell</a> commands/snippets/scripts that will count alerts and events generated each day: this information could help you understand the trends of events and alerts over time in a Management Group. It is nothing fancy at all, but they can still be useful to someone out there. In the past (MOM 2005) I used to gather this kind of information with SQL Queries against the operations database. But now, with Powershell, everything is exposed as objects and it is much easier to get information without really getting your hands dirty with the database <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>#Number of Alerts per day</strong></p>
<p><em>$alerttimes = Get-Alert | Select-Object TimeRaised<br />
$array=@() </em></p>
<p><em>foreach ($datetime in $alerttimes){<br />
$array += $datetime.timeraised.date<br />
} </em></p>
<p><em>$array | Group-Object Date</em></p>
<p><strong>#Number of Events per day</strong></p>
<p><em>$eventtimes = Get-Event | Select-Object TimeGenerated<br />
$array=@() </em></p>
<p><em>foreach ($datetime in $eventtimes){<br />
$array += $datetime.timegenerated.date<br />
} </em></p>
<p><em>$array | Group-Object Date</em></p>
<p>Beware that these &#034;queries&#034; might take a long time to execute (especially the events one) depending on the amount of data and your retention policy.</p>
<p>This is of course just scratching the surface of the amount of amazing things you can do with Powershell in Operations Manager 2007. For this kind of information you might want to keep an eye on the official &#034;System Center Operations Manager Command Shell&#034; blog: <a href="http://blogs.msdn.com/scshell/" title="http://blogs.msdn.com/scshell/">http://blogs.msdn.com/scshell/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/01/25/looking-at-opsmgr2007-alert-trend-with-command-shell/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Welcome www.powershell.it!</title>
		<link>http://www.muscetta.com/2008/01/04/welcome-wwwpowershellit/</link>
		<comments>http://www.muscetta.com/2008/01/04/welcome-wwwpowershellit/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 21:35:50 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2008/01/04/welcome-wwwpowershellit/</guid>
		<description><![CDATA[I just read from Jeffrey Snover about this newly born Italian PowerShell community site. I just created an account for myself on the site&#8230; as you know I like PowerShell, so even if I usually prefer writing stuff in english, I will try to hang out there and see how can I contribute to it. [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://blogs.msdn.com/powershell/archive/2008/01/04/www-powershell-it-italian-powershell-community-website.aspx">just read from Jeffrey Snover</a> about this newly born <a href="http://www.powershell.it/">Italian PowerShell community site</a>.</p>
<p>I just created an account for myself on the site&#8230; as you know <a href="http://www.muscetta.com/category/powershell/">I like PowerShell</a>, so even if I usually prefer writing stuff in english, I will try to hang out there and see how can I contribute to it.</p>
<p>After all, I am italian&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2008/01/04/welcome-wwwpowershellit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simply Works</title>
		<link>http://www.muscetta.com/2007/12/27/simply-works/</link>
		<comments>http://www.muscetta.com/2007/12/27/simply-works/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 18:24:27 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[MOM2005]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Energy]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[lifestream]]></category>
		<category><![CDATA[Risk]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/12/27/simply-works/</guid>
		<description><![CDATA[Simply Works, uploaded by Daniele Muscetta on Flickr. I don&#039;t know about other people, but I do get a lot to think when the end of the year approaches: all that I&#039;ve done, what I have not yet done, what I would like to do, and so on&#8230; And it is a period when memories [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/2141526220/"><img src="http://farm3.static.flickr.com/2222/2141526220_7754fa3134.jpg" alt="Simply Works" class="flickr-photo" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/2141526220/">Simply Works</a>, uploaded by <a href="http://www.flickr.com/people/dani3l3/">Daniele Muscetta</a> on Flickr.</span></p>
<p class="flickr-yourcomment">I don&#039;t know about other people, but I do get a lot to think when the end of the year approaches: all that I&#039;ve done, what I have not yet done, what I would like to do, and so on&#8230;</p>
<p>And it is a period when memories surface.</p>
<p>I found the two old CD-ROMs you can see in the picture. And those are memories.<br />
missioncritical software was the company that invented a lot of stuff that became Microsoft&#039;s products: for example <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6f86937b-533a-466d-a8e8-aff85ad3d212&amp;displaylang=en">ADMT</a> and <a href="http://www.microsoft.com/systemcenter/opsmgr/default.mspx">Operations Manager</a>.</p>
<p>The black CD contains SeNTry, the &#034;enterprise event manager&#034;, what later became Operations Manager.<br />
On the back of the CD, the company motto at the time: &#034;software that works simply and simply works&#034;.<br />
So true. I might digress on this concept, but I won&#039;t do that right now.</p>
<p>I have already explained in my other blog <a href="http://blogs.msdn.com/dmuscett/archive/2005/09/02/459914.aspx">what I do for work</a>. Well, that was a couple of years ago anyway. Several things have changed, and we are moving towards offering services that are more measurable and professional. So, since it happens that in a certain job you need to be an &#034;expert&#034; and &#034;specialize&#034; in order to be &#034;seen&#034; or &#034;noticed&#034;.<br />
You know <a href="http://www.muscetta.com/2006/05/29/specialization-is-bullshit/">I don&#039;t really believe in specialization</a>. I have written it <a href="http://www.muscetta.com/2006/11/05/more-on-specialization/">all over the place</a>. But you need to make other people happy as well and let them believe what they want, so when you &#034;specialize&#034; they are happier. No, really, it might make a difference in your carrer <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In this regard, I did also mention my <a href="http://blogs.msdn.com/dmuscett/archive/2004/11/18/263280.aspx">&#034;meeting again&#034; with Operations Manager</a>.<br />
That&#039;s where Operations manager helped me: it let me &#034;specialize&#034; in systems and applications management&#8230; a field where you need to know a bit of everything anyway: infrastructure, security, logging, scripting, databases, and so on&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
This way, everyone wins.</p>
<p>Don&#039;t misunderstand me, this does not mean I want to know everything. One cannot possibly know everything, and the more I learn the more I believe I know nothing at all, to be honest. I don&#039;t know everything, <a href="http://thedailywtf.com/Articles/Classic-WTF-Lock-In-Key-Security.aspx">so please don&#039;t ask me everything &#8211; I work with mainframes</a> <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
While that can be a great excuse to avoid neighbours and relatives annoyances with their PCs though, on the serious side I still believe that any intelligent individual cannot be locked into doing a narrow thing and know only that one bit just because it is common thought that you have to act that way.</p>
<p>If I would <a href="http://twitter.com/gapingvoid/statuses/535752142">stop where I have to stop</a> I would be the standard &#034;IT Pro&#034;. I would be fine, sure, but I would get bored soon. I would not learn anything. <a href="http://www.muscetta.com/2007/09/11/itpro-vs-dev-there-is-no-such-a-thing/">But I don&#039;t feel I am the standard &#034;IT Pro&#034;</a>. In fact, funnily enough, <a href="http://www.google.com/search?hl=en&amp;q=link:www.muscetta.com&amp;btnG=Search">on some other blogs out there I have been referenced as a &#034;Dev&#034;</a> (find it on your own, look at their blogrolls <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). But I am not a Dev either then&#8230; I don&#039;t write code for work. I would love to, but I rarely actually do, other than some scripts. Anyway, I tend to escape the definition of the usual &#034;expert&#034; on something&#8230; mostly because I want to escape it. I don&#039;t see myself represented by those generalization.</p>
<p>As <a href="http://haacked.com/archive/2007/12/21/faceoff-haack-vs-hanselman-it-gets-real.aspx">Phil puts it</a>, when asked &#034;Are software developers &#8211; engineers or artists?&#034;:</p>
<blockquote><p>&#034;[...] Don’t take this as a copout, but a little of both. I see it more as craftsmanship. Engineering relies on a lot of science. Much of it is demonstrably empirical and constrained by the laws of physics. Software is less constrained by physics as it is by the limits of the mind. [...]&#034;</p></blockquote>
<p>Craftmanship. Not science.<br />
And stop calling me an &#034;engineer&#034;. I am not an engineer. I was even crap in math, in school!</p>
<p>Anyway, what does this all mean? In practical terms, it means that in the end, wether I want it or not, I do get considered an &#034;expert&#034; on MOM and OpsMgr&#8230; and that I will mostly work on those products for the next year too. But that is not bad, because, as I said, working on that product means working on many more things too. Also, I can point to different audiences: those believing in &#034;experts&#034; and those going beyond schemes. It also means that I will have to continue teaching a couple of scripting classes (both VBScript and PowerShell) that nobody else seems to be willing to do (because they are all *expert* in something narrow), and that I will still be hacking together my other stuff (my facebook apps, my wordpress theme and plugins, my server, etc) and even continue to have strong opinions in those other fields that I find interesting and where I am not considered an *expert* <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Well, I suppose I&#039;ve been ranting enough for today&#8230;and for this year <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
I really want to wish everybody again a great beginning of 2008!!! What are you going to be busy with, in 2008 ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/12/27/simply-works/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Monitoring Syslog with OpsMgr 2007</title>
		<link>http://www.muscetta.com/2007/11/09/monitoring-syslog-with-opsmgr-2007/</link>
		<comments>http://www.muscetta.com/2007/11/09/monitoring-syslog-with-opsmgr-2007/#comments</comments>
		<pubDate>Fri, 09 Nov 2007 12:45:05 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/11/09/monitoring-syslog-with-opsmgr-2007/</guid>
		<description><![CDATA[I had missed it&#8230; finally guidance on how to collect and monitor UNIX syslog in System Center Operations Manager 2007 has been published! This is much more sysadmin-oriented than what was availble before (that remais of course still relevant, but more from a Management Pack developer&#039;s point of view, who wants to know how things [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I had missed it&#8230; finally guidance on <a href="http://support.microsoft.com/kb/942863">how to collect and monitor UNIX syslog in System Center Operations Manager 2007</a> has been published!</p>
<p>This is much more sysadmin-oriented than <a href="http://blogs.msdn.com/komal/archive/2007/10/05/syslog-module-enhanced.aspx">what was availble before</a> (that remais of course still relevant, but more from a Management Pack developer&#039;s point of view, who wants to know how things work &#034;behind the hood&#034;).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/11/09/monitoring-syslog-with-opsmgr-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Live ID to authenticate to WordPress</title>
		<link>http://www.muscetta.com/2007/11/02/using-live-id-to-authenticate-to-wordpress/</link>
		<comments>http://www.muscetta.com/2007/11/02/using-live-id-to-authenticate-to-wordpress/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 21:39:23 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[LiveID]]></category>
		<category><![CDATA[Passport]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WebSite]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/11/02/using-live-id-to-authenticate-to-wordpress/</guid>
		<description><![CDATA[Yesterday I&#039;ve been hacking a bit with the Windows Live ID SDK and I wrote a very small and simple plugin for WordPress that enables you to login in to WordPress with your passport Live ID. I had read in various places that such a plugin would be welcome&#8230; I looked around and found none [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I&#039;ve been hacking a bit with the <a href="http://msdn2.microsoft.com/en-us/library/bb676633.aspx">Windows Live ID SDK</a> and I wrote a very small and simple plugin for <a href="http://www.wordpress.org/">WordPress</a> that enables you to login in to WordPress with your <span style="text-decoration: line-through;">passport</span> Live ID.<br />
I had read <a href="http://wordpress.org/extend/ideas/topic.php?id=689">in various</a> <a href="http://microsoft.blognewschannel.com/archives/2007/08/17/windows-live-id-cardspace-info-cards-available-for-websites">places</a> that such a plugin would be welcome&#8230; I looked around and found none yet (if anyone has instead already written something like this and I missed it I will happily waste the simple stuff I did  for something more advanced/well written&#8230; just let me know <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ).<br />
I took a look at <a href="http://mvolo.com/blogs/serverside/archive/2007/08/12/IIS-Authentication-plugin-for-the-Wordpress-PHP-blogging-engine.aspx">a similar experiment</a>, and eventually even found that there is <a href="http://verselogic.net/projects/wordpress/wordpress-openid-plugin">some conceptually similar plugin written to work with OpenID</a>. The wordpress openid plugin is much more complex and much more advanced than what I did, tough. It will let you log in with just ANY OpenID user, it will automatically create a user for you on that wordpress installation and associate it with your ID, even just for the purpose of commenting, etc.</p>
<p>But in my blog I don&#039;t require or need people to actually log in to do anything. I actually like anonymous/free comment. A CAPTCHA takes care of spammers and I am fine with it so far. Probably for a big site with a lot of users it might make sense, but for my blog so far it doesn&#039;t. But there&#039;s one thing for which this is instead useful: I have always been worried, when logging in through HTTP (thus, without SSL) to my blog from networks I don&#039;t manage or completely trust, that my password could be sniffed over the wire and stolen. Live ID solves my problem by letting Microsoft validate my identity: I have associated my Live ID to the blog&#039;s main user account(=myself), the one writing this post. So the plugin in its current form <a href="http://www.muscetta.com/wp-content/plugins/liveauth/auth.php">is used as a replacement of the login form</a> (the <a href="http://www.muscetta.com/wp-login.php">standard wp-login.php wordpress form</a> CAN still be used if you like, of course, you just don&#039;t HAVE to. Also the use of xmlrpc will still require local user/pwd combination.). Anyway, this new form will authenticate you thorugh Live ID and then check if your Live ID is associated to any local user. If it is, it will log you on to wordpress with that account. Otherwise it will inform you that you are successfully logged on to passport Live, but unfortunately there is no corresponding local account for you, and that it would need to be set up. Setting it up is as difficult as adding a line to the database&#8230; probably adding a form or a property page would be nice, but in my case I just did it with a query:</p>
<p>INSERT INTO `wordpress`.`wp-usermeta` (<br />
`umeta_id` ,<br />
`user_id` ,<br />
`meta_key` ,<br />
`meta_value`<br />
)<br />
VALUES (<br />
NULL , &#039;1&#039;, &#039;LiveID&#039;, &#039;f11fa1d3e82c68776f94a3a5c459b70b&#039;<br />
);</p>
<p>which adds an extra &#034;property&#034; for the first user (admin) called &#039;LiveID&#039; which contains your Live ID (the one above is not my real one, in case you were wondering). When you are authenticated by LiveID and you get back this value, the plugin checks in this table which WordPress userid in the database has been associated with this Live ID and &#8211; if it finds one &#8211; it authenticates you as that user. Of course you should not have duplicates.</p>
<p>My code is mostly based on <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8BA187E5-3630-437D-AFDF-59AB699A483D&amp;displaylang=en">the SDK PHP Sample</a>, with some modification to integrate it in WordPress as a plugin. Of course I removed the file that is used as &#034;user database&#034; and used wordpress DB instead.</p>
<p>There&#039;s a ton of things that could be improved. I just did not put any more effort and time in it. As you might know if you read this blog, I am not a full time developer. Actually I shouldn&#039;t write code at all for work and I am mainly considered an &#034;infrastructure&#034; guy. Anyway, I would like to code more and even if I am not supposed to, I always try to find stimulating situations that require a bit of integration, thinking out of the box, some scripting, etc&#8230;</p>
<p><strong>[updated: november 3rd 2007]</strong> You can download the sample plugin &#034;AS-IS&#034; here: <strong><a href="http://www.muscetta.com/wp-content/uploads/liveauth.zip">liveauth.zip</a></strong> . This has only been tested and only works with WordPress 2.3.x serie (but should also work with earlier versions &#8211; not tested) <a href="http://www.muscetta.com/wp-content/uploads/liveauth.zip"><br />
</a><br />
<strong>[updated: march 30th 2008]</strong> <a href="http://wordpress.org/development/2008/03/wordpress-25-brecker/">WordPress 2.5</a> has changed the way the authentication cookie is generated, therefore here is an updated version of the plugin that works with the new secure cookies: <strong><a href="http://www.muscetta.com/wp-content/uploads/liveauth02.zip">liveauth02.zip</a></strong><br />
I should really invest some more time in this and clear up the code. I should also make an interface to make the configuration easier, and maybe make a version that works on both 2.3 and 2.5 branches. I am not sure when I will have time for that, though&#8230;</p>
<p><strong>[updated: april 20th 2008]</strong> I have released version 0.3c of the plugin which now finally includes a simple configuration page, and should work on both WordPress 2.3 (and older) and on the 2.5 brach. Please visit the new Windows <strong><a href="http://www.muscetta.com/live-id-wordpress-plugin/">Live ID Authentication WordPress Plugin Page</a></strong>.<a href="http://www.muscetta.com/wp-content/uploads/liveauth.zip"><br />
</a></p>
<p><strong>Disclaimer:</strong><br />
The information in this weblog is provided &#034;AS IS&#034; with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my own personal opinion. All code samples are provided &#034;AS IS&#034; without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.<br />
THIS WORK IS NOT ENDORSED AND NOT EVEN CHECKED, AUTHORIZED, SCRUTINIZED NOR APPROVED BY MY EMPLOYER, AND IT ONLY REPRESENT SOMETHING WHICH I&#039;VE DONE IN MY FREE TIME. NO GUARANTEE WHATSOEVER IS GIVEN ON THIS. THE AUTHOR SHALL NOT BE MADE RESPONSIBLE FOR ANY DAMAGE YOU MIGHT INCUR WHEN USING THIS PROGRAM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/11/02/using-live-id-to-authenticate-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Live Photo Gallery and Flickr</title>
		<link>http://www.muscetta.com/2007/10/25/live-gallery-and-flickr/</link>
		<comments>http://www.muscetta.com/2007/10/25/live-gallery-and-flickr/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 10:48:21 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/10/25/live-gallery-and-flickr/</guid>
		<description><![CDATA[I actually read this (Live Photo Gallery  allowing you to post to Flickr) a couple of days ago in an internal mail, and &#8211; even tough I Love Flickr - I have been extremely quiet and cautious and I did not blog about it. In fact I felt like waiting about blogging this GREAT new, because I [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I actually read this (<a href="http://get.live.com/betas/photogallery_betas">Live Photo Gallery</a>  allowing you to post to <a href="http://www.flickr.com">Flickr</a>) a couple of days ago in an internal mail, and &#8211; even tough I Love <a href="http://www.flickr.com/photos/dani3l3">Flickr</a> - I have been extremely quiet and cautious and I did not blog about it. In fact I felt like waiting about blogging this GREAT new, because I thought that it was internal-only, confidential information, and I was worried that someone would tell me off <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>In the end it turns out that I did not have to wait or be worried, since <a href="http://blogs.msdn.com/pix/archive/2007/10/18/do-you-use-flickr-then-check-out-windows-live-photo-gallery-beta.aspx">the cat was already out of the bag</a>!!!</p>
<p>[As a side note, it happens a lot of times that stuff gets public much earlier than when I actually read that internally. In those internal communication it very often is still considered "confidential" when the whole world is speaking about it.... I don't get this whole "confidentiality" thing in these days of <a href="http://www.gapingvoid.com/Moveable_Type/archives/001607.html">porous membranes</a>...]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/10/25/live-gallery-and-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Fixes ISO images</title>
		<link>http://www.muscetta.com/2007/10/25/security-fixes-iso-images/</link>
		<comments>http://www.muscetta.com/2007/10/25/security-fixes-iso-images/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 08:51:28 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/10/25/security-fixes-iso-images/</guid>
		<description><![CDATA[I learn now from Robert Hensing that Microsoft provides ISO images of DVD containing the security fixes for those who can&#039;t do an online update due to bandwidth and other constraints. It has probably been there for ages, only I had missed it. And if I have missed it, I am quite sure that a [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.technet.com/robert_hensing/archive/2007/10/24/getting-microsoft-updates-offline.aspx">I learn now from Robert Hensing</a> that <a href="http://support.microsoft.com/kb/913086">Microsoft provides ISO images of DVD containing the security fixes</a> for those who can&#039;t do an online update due to bandwidth and other constraints. It has probably been there for ages, only I had missed it. And if I have missed it, I am quite sure that a lot of other people have missed it too. So, it does not hurt to &#034;echo&#034; it <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/10/25/security-fixes-iso-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft in the Open</title>
		<link>http://www.muscetta.com/2007/10/18/microsoft-in-the-open/</link>
		<comments>http://www.muscetta.com/2007/10/18/microsoft-in-the-open/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 10:31:26 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Open]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/10/18/microsoft-in-the-open/</guid>
		<description><![CDATA[Two of Microsoft’s Shared Source licenses have been approved by the OSI. Read more on port25! (yes, I did read this yesterday, but I was teaching and then travelling so I did not make it to blog).<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Two of Microsoft’s Shared Source licenses <a href="http://opensource.org/node/207">have been approved by the OSI</a>. <a href="http://port25.technet.com/archive/2007/10/16/microsoft-out-in-the-open.aspx">Read more on port25</a>! (yes, I did read this yesterday, but I was teaching and then travelling so I did not make it to blog).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/10/18/microsoft-in-the-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.Net Framework CODE is going to be available!</title>
		<link>http://www.muscetta.com/2007/10/04/net-framework-code-is-going-to-be-available/</link>
		<comments>http://www.muscetta.com/2007/10/04/net-framework-code-is-going-to-be-available/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 06:01:11 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[MS Italy Blogs]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/10/04/net-framework-code-is-going-to-be-available/</guid>
		<description><![CDATA[I am amazed and excited to read that Microsoft has decided to release the source code of the .Net libraries. Scott Guthrie writes: &#034;[...] One of the things my team has been working to enable has been the ability for .NET developers to download and browse the source code of the .NET Framework libraries, and [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I am amazed and excited to <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">read that Microsoft has decided to release the source code of the .Net libraries</a>.</p>
<p>Scott Guthrie writes:</p>
<blockquote><p><em>&#034;[...] One of the things my team has been working to enable has been the ability for .NET developers to download and browse the source code of the .NET Framework libraries, and to easily enable debugging support in them. [...] VS 2008 will include support to automatically retrieve the appropriate .NET Framework source files on demand from Microsoft.  This means that the source code for the ASP.NET GridView and BaseDataBoundControl classes above do not have to already be installed on the machine before we started the debugger.  Instead, when we use F11 to step into their implementation VS can automatically download the source files from Microsoft and open it within the IDE. [...]&#034;</em></p></blockquote>
<p>WOW. This is so cool, and a further step in the right direction.</p>
<p>Thanks to <a href="http://blogs.technet.com/alead_msft/archive/2007/10/03/codice-sorgente-delle-librerie-del-framework-net-aperto.aspx">Alessandro</a> for having picked this up, as I read it on his blog, and I thought it was an information worth spreading!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/10/04/net-framework-code-is-going-to-be-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu on Virtual PC 2007</title>
		<link>http://www.muscetta.com/2007/09/26/ubuntu-on-virtual-pc-2007/</link>
		<comments>http://www.muscetta.com/2007/09/26/ubuntu-on-virtual-pc-2007/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 17:30:34 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/09/26/ubuntu-on-virtual-pc-2007/</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } Ubuntu on Virtual PC 2007, uploaded by Daniele Muscetta on Flickr. This was a VMWare &#034;virtual appliance&#034; with Ubuntu that I was using for testing. As I mostly use Virtual PC [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">    .flickr-photo { border: solid 2px #000000; }  .flickr-yourcomment { }  .flickr-frame { text-align: left; padding: 3px; }  .flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/1442745259/" title="photo sharing"><img src="http://farm2.static.flickr.com/1258/1442745259_35ae73bd8c.jpg" alt="Ubuntu on Virtual PC 2007" class="flickr-photo" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/1442745259/">Ubuntu on Virtual PC 2007</a>, uploaded by <a href="http://www.flickr.com/people/dani3l3/">Daniele Muscetta</a> on Flickr.</span>
</p>
<p class="flickr-yourcomment">This was a VMWare &#034;virtual appliance&#034; with Ubuntu that I was using for testing. As I mostly use Virtual PC or Virtual Server, I found it annoying having to switch to VMWare player to use that specific machine, and I could not be asked to install a new one. So I converted the .VMDK to .VHD format (the other way around than it is described on <a href="http://www.techlog.nl/archive/2007/08/29/convert_virtual_disks_from_vhd">this article</a> ).</p>
<p>After that, I had to change GRUB&#039;s configuration to inform it that the SCSI disk (/dev/sda1) was all of a sudden become an IDE one (/dev/hda1), and then I also had to reconfigure X.</p>
<p>After that it runs like a charme!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/09/26/ubuntu-on-virtual-pc-2007/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows Server 2008 Release Candidate available!!</title>
		<link>http://www.muscetta.com/2007/09/25/windows-server-2008-release-candidate-available/</link>
		<comments>http://www.muscetta.com/2007/09/25/windows-server-2008-release-candidate-available/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 13:10:54 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/09/25/windows-server-2008-release-candidate-available/</guid>
		<description><![CDATA[It can be downloaded from here. The Italian Technet team has a nice post about it (in Italian). Go download it, and enjoy your testing!<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>It can be downloaded from <a href="http://www.microsoft.com/technet/prodtechnol/beta/lhs/default.mspx">here</a>. The Italian Technet team has <a href="http://blogs.technet.com/italy/archive/2007/09/25/disponibile-la-release-candidate-0-di-windows-server-2008.aspx">a nice post about it</a> (in Italian). Go download it, and enjoy your testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/09/25/windows-server-2008-release-candidate-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Live Install on 2003 Server ?</title>
		<link>http://www.muscetta.com/2007/09/13/windows-live-install-on-2003-server/</link>
		<comments>http://www.muscetta.com/2007/09/13/windows-live-install-on-2003-server/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 18:40:31 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/09/13/windows-live-install-on-2003-server/</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } I used to have Windows Live Writer and Windows Live Messenger on my Windows 2003 Server box. Now, this new fantastic integrated setup says it won&#039;t install on this operating system. [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">    .flickr-photo { border: solid 2px #000000; }  .flickr-yourcomment { }  .flickr-frame { text-align: left; padding: 3px; }  .flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/1367258774/" title="photo sharing"><img src="http://farm2.static.flickr.com/1182/1367258774_0fb46fdf80.jpg" alt="Windows Live Install on 2003 Server ?" class="flickr-photo" /></a></p>
<p>I used to have <a href="http://get.live.com/betas/writer_betas">Windows Live Writer</a> and <a href="http://get.live.com/betas/messenger_betas">Windows Live Messenger</a> on my <a href="http://www.microsoft.com/windowsserver2003/default.mspx">Windows 2003 Server</a> box. Now, <a href="http://windowslivewire.spaces.live.com/blog/cns!2F7EB29B42641D59!224.entry">this new fantastic integrated setup</a> says it won&#039;t install on this operating system. Ridiculous. You read the release notes, and in fact it only says Windows XP and Vista.</p>
<p>I see.</p>
<p>Well, I happen to use a Windows 2003 Server at home &#8211; the same machine for day to day use (like writing this post or checking private email) and doing some study/testing. I don&#039;t have loads of machines. I don&#039;t actually have money for a new machine (even if I would really need a new one to test stuff).<br />
I try to do more with less.</p>
<p>Well, if this does not install, what am I supposed to do ?<br />
I want to chat with people, which means I&#039;ll keep using <a href="http://www.pidgin.im">Pidgin</a> on this machine. That way I also have my GTalk, ICQ and Yahoo buddies all in one place. And it eats up much less memory that the &#034;real&#034; live messenger. And without advertisements. How nice.</p>
<p>I am sorry when my employer does this kind of stupid things. This is not interoperability. It does not even work on OUR operating systems!</p>
<p>As for Windows Live Writer, <a href="http://haacked.com/archive/2007/07/29/cleanup-the-crap-that-windows-live-writer-injects-with-this.aspx">read Phil&#039;s post</a>. It seems like FrontPage, all over again.<br />
For writing this post I&#039;ve used <a href="http://www.flickr.com">Flickr</a>.<br />
Since I happen to post quite a bunch of photos or images on my blog, I find it ideal. The ONLY thing Flickr is missing, when used as a blogging tool, is the ability to post tags/categories too. Otherwise it would be perfect.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/09/13/windows-live-install-on-2003-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ITPro vs. Dev: there is no such a thing.</title>
		<link>http://www.muscetta.com/2007/09/11/itpro-vs-dev-there-is-no-such-a-thing/</link>
		<comments>http://www.muscetta.com/2007/09/11/itpro-vs-dev-there-is-no-such-a-thing/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 19:05:49 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/09/11/itpro-vs-dev-there-is-no-such-a-thing/</guid>
		<description><![CDATA[Dave Winer wisely writes: [...] I&#039;ve been pushing the idea that every app should be a platform for a long time, that in addition to a user interface, every app should have a programmatic interface. For me the idea came from growing up using Unix in the 70s, where every app is a toolkit and [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.scripting.com/stories/2007/09/10/shouldEveryAppBeAPlatform.html">Dave Winer wisely writes</a>:</p>
<blockquote><p><em>[...] I&#039;ve been pushing the idea that every app should be a platform for a long time, that in addition to a user interface, every app should have a programmatic interface. For me the idea came from growing up <strong>using Unix</strong> in the 70s, <strong>where every app is a toolkit and the operating system is a scripting language</strong>. Wiring things together is an integral part of being a Unix user. It&#039;s why programmers like Unix so much [...]</em></p></blockquote>
<p>It is entirely true. The limits are blurry, IMHO. In the Unix world it is common to find full-fledged &#034;applications&#034; which have been written by the ground up by people that were doing SysAdmin tasks, and those &#034;applications&#034; are usually just&#8230; scripts. Simple shell scripts, or something more evolved (PERL, PHP, Python) it does not really matter.</p>
<p>I am so tired of the division traditionally made in the Microsoft world between &#034;Developers&#034; and &#034;IT Professionals&#034;. We even have separate sites for the two audiences: <a href="http://msdn.microsoft.com">MSDN</a> and <a href="http://technet.microsoft.com">Technet</a>. There are separate &#034;TechED&#034; events: for&#034;<a href="http://www.mseventseurope.com/teched/07/developers/Content/Pages/Default.aspx">Devs</a>&#034; and for &#034;<a href="http://www.mseventseurope.com/teched/07/itforum/Content/Pages/Default.aspx">IT Pros</a>&#034;. There are blogs that are divided among the two &#034;audiences&#034;&#8230;</p>
<p>There aren&#039;t two different audiences, really. There are people, with various degrees of expertise. There is no such a thing as a &#034;developer&#034; if he doesn&#039;t know a bit how the underlying system works. His code is gonna suck. And there is not such a thing such a &#034;IT Pro&#034; that builds and integrates and manages systems if he does not have the palest idea of how things work &#034;behind the GUI&#034;. He&#039;s gonna screw things up regardless of how many step-by-step (click-by-click ?) procedures you spoon feed him.</p>
<p>That&#039;s why automation and integration are best done by people who know how to write a bit code.</p>
<p>The <a href="http://www.microsoft.com/powershell">PowerShell</a> <a href="http://blogs.msdn.com/PowerShell/">folk</a> GET IT.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/09/11/itpro-vs-dev-there-is-no-such-a-thing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Source Projects and Microsoft</title>
		<link>http://www.muscetta.com/2007/08/24/open-source-projects-and-microsoft/</link>
		<comments>http://www.muscetta.com/2007/08/24/open-source-projects-and-microsoft/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 12:16:50 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/24/open-source-projects-and-microsoft/</guid>
		<description><![CDATA[This CNet article about CodePlex has some VERY interesting points: [...] Bayarsaikhan has posted the top 25 most active open-source projects on Microsoft&#039;s Codeplex site. Looking at the list, it looks like Microsoft developers spend their time doing much the same as the rest of the Java/other world: play games and make the Web world pretty [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://news.com.com/8301-10784_3-9761998-7.html">This CNet article about CodePlex</a> has some VERY interesting points:</p>
<blockquote><p><em>[...] Bayarsaikhan </em><a href="http://www.plentyofcode.com/2007/08/most-active-open-source-projects-in.html" class="external-link"><font color="#0048c0"><em>has posted</em></font></a><em> the top 25 most active open-source projects on </em><a href="http://www.codeplex.com/"><font color="#20328e"><em>Microsoft&#039;s Codeplex</em></font></a><em> site. Looking at the list, it looks like Microsoft developers spend their time doing much the same as the rest of the Java/other world: play games and make the Web world pretty with AJAX. You can see the top project interests below in the Codeplex tag cloud.</em></p>
<p><em>Codeplex is interesting to me for several reasons, but primarily because it demonstrates something that I&#039;ve argued for many years now: </em><a href="http://asay.blogspot.com/2005/06/windows-as-open-source-platform.html" class="external-link"><font color="#0048c0"><em>open source on the Windows platform is a huge opportunity for Microsoft</em></font></a><em>. It is something for the company to embrace, not despise.</em></p>
<p><em>And it does several things well (better than Sourceforge, in my opinion) [...]</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/24/open-source-projects-and-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tafiti</title>
		<link>http://www.muscetta.com/2007/08/23/tafiti/</link>
		<comments>http://www.muscetta.com/2007/08/23/tafiti/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 15:30:57 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tree]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/23/tafiti/</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } Tafiti, uploaded by Daniele Muscetta on Flickr. www.tafiti.com/#p=0&#38;q=%22Daniele%20Muscetta%22 Try it out.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">      .flickr-photo { border: solid 2px #000000; }  .flickr-yourcomment { }  .flickr-frame { text-align: left; padding: 3px; }  .flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/1214899138/" title="photo sharing"><img src="http://farm2.static.flickr.com/1085/1214899138_6ca27a6f53.jpg" alt="Tafiti" class="flickr-photo" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/1214899138/">Tafiti</a>, uploaded by <a href="http://www.flickr.com/people/dani3l3/">Daniele Muscetta</a> on Flickr.</span></p>
<p class="flickr-yourcomment"><a href="http://www.tafiti.com/#p=0&amp;q=%22Daniele%20Muscetta%22">www.tafiti.com/#p=0&amp;q=%22Daniele%20Muscetta%22</a></p>
<p>Try it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/23/tafiti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get a funky-colored Logon Desktop</title>
		<link>http://www.muscetta.com/2007/08/20/how-to-get-a-funky-colored-logon-desktop/</link>
		<comments>http://www.muscetta.com/2007/08/20/how-to-get-a-funky-colored-logon-desktop/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 11:32:07 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[colors]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/20/how-to-get-a-funky-colored-logon-desktop/</guid>
		<description><![CDATA[aka &#8211; how to (mis)use the information in a KB article to make your logon screen on Windows 2003 Server look like a candy shop: http://support.microsoft.com/?id=906510<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>aka &#8211; how to (mis)use the information in a KB article to make your logon screen on Windows 2003 Server look like a candy shop: <a href="http://support.microsoft.com/?id=906510">http://support.microsoft.com/?id=906510</a></p>
<p><a href="http://www.muscetta.com/wp-content/uploads/funky_logon_screen.jpg" rel="lightbox[210]"><img class="alignnone size-medium wp-image-255" title="Candy Colored Logon Screen" src="http://www.muscetta.com/wp-content/uploads/funky_logon_screen-300x203.jpg" alt="" width="300" height="203" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/20/how-to-get-a-funky-colored-logon-desktop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Live ID Web Authentication 1.0 SDK !</title>
		<link>http://www.muscetta.com/2007/08/16/windows-live-id-web-authentication-10-sdk/</link>
		<comments>http://www.muscetta.com/2007/08/16/windows-live-id-web-authentication-10-sdk/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 14:28:50 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Hotmail]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[LiveID]]></category>
		<category><![CDATA[Passport]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/16/windows-live-id-web-authentication-10-sdk/</guid>
		<description><![CDATA[Check this out: Windows Live ID Team has published on the web the SDK that lets you liveID (or &#034;passport&#034;)-enable your applications! http://msdn2.microsoft.com/en-us/library/bb676633.aspx There are even code samples in six different languages: C#, Java, PHP, Python, Ruby e Perl! You can download them from http://go.microsoft.com/fwlink/?LinkId=91761 Wow! Having time, it would be cool to write a [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Check this out:</p>
<p>Windows Live ID Team has published on the web the SDK that lets you liveID (or &#034;passport&#034;)-enable your applications!</p>
<p><a href="http://msdn2.microsoft.com/en-us/library/bb676633.aspx">http://msdn2.microsoft.com/en-us/library/bb676633.aspx</a></p>
<p>There are even code samples in six different languages: C#, Java, PHP, Python, Ruby e Perl! You can download them from <a href="http://go.microsoft.com/fwlink/?LinkId=91761">http://go.microsoft.com/fwlink/?LinkId=91761</a></p>
<p>Wow! Having time, it would be cool to write a WordPress plugin using Passport authentication to authenticate/identify users that want to comment&#8230; mumble mumble&#8230;.. <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Interoperability. Wow.</p>
<p>More info at the Live ID starting Page: <a href="http://dev.live.com/blogs/liveid/archive/2006/05/18/8.aspx">http://dev.live.com/blogs/liveid/archive/2006/05/18/8.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/16/windows-live-id-web-authentication-10-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#039;t touch the Surface!</title>
		<link>http://www.muscetta.com/2007/08/13/dont-touch-the-surface/</link>
		<comments>http://www.muscetta.com/2007/08/13/dont-touch-the-surface/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 14:29:54 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Funny]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/13/dont-touch-the-surface/</guid>
		<description><![CDATA[I am sorry I only read this blog post by Eileen Brown today, not when she posted it. It got lost somewhere among loads of other feeds. Anyway I am sorry I read it so late, because, by now, commenting on that post is not possible anymore. Hope she does get the pingback at least&#8230; Anyway, the post [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I am sorry I only read <a href="http://blogs.technet.com/eileen_brown/archive/2007/06/28/touching-microsoft-surface-or-not.aspx">this blog post by Eileen Brown</a> today, not when she posted it. It got lost somewhere among loads of other feeds. Anyway I am sorry I read it so late, because, by now, commenting on that post is not possible anymore. Hope she does get the pingback at least&#8230;</p>
<p>Anyway, the post goes about <a href="http://www.microsoft.com/surface">Microsoft Surface</a>. Which is something really cool. Eileen goes saying that she&#039;s worried if her cat would jump on the touch-screen table doing some damage to her information / data /accounts&#8230;. when I first saw the technology presented, I actually thought sort of the same thing&#8230;. what about my son going to the table with his hands dirty of chocolate paste ?? <a href="http://blogs.msdn.com/dmuscett/archive/2005/01/06/347523.aspx">I have blogged in the past about the danger he poses&#8230;</a></p>
<p>Since kids these days do use the computers, having to replace keyboards because they are full of biscuits&#039;crumbles or because they spilled fruit juice on them is quite common. Just less expensive than the special touch-screen, at the moment&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/13/dont-touch-the-surface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell and RegExp: a &quot;match&quot; made my day.</title>
		<link>http://www.muscetta.com/2007/08/09/powershell-and-regexp-a-match-made-my-day/</link>
		<comments>http://www.muscetta.com/2007/08/09/powershell-and-regexp-a-match-made-my-day/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 18:45:31 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[ISA]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/08/09/powershell-and-regexp-a-match-made-my-day/</guid>
		<description><![CDATA[Today I was working with a customer and friend (Claudio Latini, who I thank for the permission to post this, which is also work of his brain &#8211; especially the regular expression you&#039;ll see reading on!). We are running several projects and activities together and, among several other things, he&#039;s in the process of migrating his users from [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Today I was working with a customer and friend (Claudio Latini, who I thank for the permission to post this, which is also work of his brain &#8211; especially the regular expression you&#039;ll see reading on!).</p>
<p>We are running several projects and activities together and, among several other things, he&#039;s in the process of migrating his users from Exchange 2003 to Exchange 2007. In this infrastructure, he has some ISA Server that publish both the Exchange2003 and the Exchange2007 frontends.</p>
<p>Now he wanted to know HOW MANY and WHICH ONES of his users actually have a PocketPC or other WIndows Mobile device and were actively connecting to the old FrontEnd. You give out mobile devices to people but those things are usually less &#034;managed&#034; &#8211; when compared to corporate PCs, at least. So you loose a bit control of the thing&#8230; usually people with mobile devices using ActiveSync in companies are managers, and especially since some of them might be on holiday at the moment, it was important to know WHO were the people that had to be told to reconfigure their device to point to the new name/server BEFORE he would start complaining about ActiveSync not working anymore&#8230;</p>
<p>So how do you figure out who&#039;s connecting ?</p>
<p>I am NO Exchange expert whatsoever&#8230; but a thing that came in handy was the thing that an ISA Server was reverse-publishing the frontend server. I know ISA (and firewalls/proxies in general) much better than Exchange, so I can help on that side. In the log files, ActiveSync Connections looked like the following URL, passing most parameters in the POST request: <a title="http://www.company.com/exchange?User=Mario&amp;DeviceID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla" href="http://www.muscetta.org/Admin">http://www.company.com/exchange?User=Mario&amp;DeviceID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla</a> (and on an unrelated note: yes, if you try to crawl this link, you are a bot <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p>So we exported ISA logs (there are several tools for this, including &#034;<a href="http://www.isatools.org/tools/ISA_Extract_Logs_v1.8.zip">Extract logs</a>&#034;, but we did not use a script, we just used a filter for the correct publishing rule in the &#034;Monitoring &#8211; Logging&#034; tag in ISA Server Console and then copied and pasted those log lines) and tried to see if <a href="http://www.microsoft.com/powershell">PowerShell</a> could help tackle the issue.</p>
<p>Here we load our sample log (in a real log you would have much more information &#8211; each single line wrapping several console rows; I cut it short to the URL to make it more readable.</p>
<pre style="color: #eeedf0; background-color: #012456"><span style="background-color: #012456; color: #00ff00;">PS&gt;</span> get-content log.txt    

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Gino&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Gino&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Antonio&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla

http://www.company.com/exchange?User=Mario&amp;DevideID=186hkjw6gjw76463uh2g5gi2j3h&amp;Bla=bla</pre>
<p>We know Get-Content does not just display the file, it loads the file into a string array.</p>
<p>So we can cycle through the file and try to extract (using a regexp) the string after &#034;User=&#034; and before the first ampersand (&#034;&amp;&#034;), which translates in the following regular expression:</p>
<p><strong>&#034;User=(?&lt;nome&gt;.*?)&amp;&#034;</strong></p>
<p>(the regexp has been the most difficult thing to figure out, but it is very worth the hassle once you&#039;ve done it&#8230;)</p>
<pre style="color: #eeedf0; background-color: #012456"><span style="background-color: #012456; color: #00ff00;">PS&gt;</span> get-content log.txt | foreach {$_ -match "User=(?<span>&lt;</span>nome&gt;.*?)&amp;" | out-null; $matches}
Name                           Value
----                           -----
nome                           Mario
0                              User=Mario&amp; nome                           Gino
0                              User=Gino&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Gino
0                              User=Gino&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Antonio
0                              User=Antonio&amp;
nome                           Mario
0                              User=Mario&amp;
nome                           Mario
0                              User=Mario&amp;</pre>
<p>This seems to work. Now we only have to get the Named Captures called &#034;nome&#034; (containing the user name):</p>
<pre style="color: #eeedf0; background-color: #012456"><span style="background-color: #012456; color: #00ff00;">PS&gt;</span> <strong>get-content log.txt | foreach {$_ -match "User=(?<span>&lt;</span>name&gt;.*?)&amp;" | out-null; $matches["name"]}
</strong>Mario
Gino
Antonio Antonio
Gino
Antonio
Antonio
Mario
Mario
Mario
Mario
Antonio
Antonio
Mario
Antonio
Antonio
Mario
Antonio
Antonio
Mario
Antonio
Antonio
Mario
Mario</pre>
<p>Awesome. Now sort them and remove duplicates. Which is one more command in our pipeline:</p>
<p><strong>get-content log.txt | foreach {$_ -match &#034;User=(?&lt;nome&gt;.*?)&amp;&#034; | out-null; $matches["nome"]} | sort-object -uniq</strong></p>
<pre style="color: #eeedf0; background-color: #012456"><span style="background-color: #012456; color: #00ff00;">P&gt;</span> get-content log.txt | foreach {$_ -match "User=(?<span>&lt;</span>name&gt;.*?)&amp;" | out-null; $matches["name"]} | sort-object -uniq
Antonio
Gino
Mario     

<span style="background-color: #012456; color: #00ff00;">PS&gt;</span>
<span style="background-color: #012456; color: #00ff00;">PS&gt;</span></pre>
<p>Now you can call those three users and tell them to modify their ActiveSync configuration <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/08/09/powershell-and-regexp-a-match-made-my-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &quot;WOW&quot; starts *NOW*!</title>
		<link>http://www.muscetta.com/2007/07/27/the-wow-starts-now/</link>
		<comments>http://www.muscetta.com/2007/07/27/the-wow-starts-now/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 05:21:48 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/07/27/the-wow-starts-now/</guid>
		<description><![CDATA[I&#039;m speechless. Read it on your own: http://www.microsoft.com/opensource/ . Wow.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I&#039;m speechless. Read it on your own: <a href="http://www.microsoft.com/opensource/">http://www.microsoft.com/opensource/</a> . Wow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/07/27/the-wow-starts-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IronPython and Visual Studio Shell</title>
		<link>http://www.muscetta.com/2007/06/08/ironpython-and-visual-studio-shell/</link>
		<comments>http://www.muscetta.com/2007/06/08/ironpython-and-visual-studio-shell/#comments</comments>
		<pubDate>Fri, 08 Jun 2007 17:47:03 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/06/08/ironpython-and-visual-studio-shell/</guid>
		<description><![CDATA[I read on the IronPython Mailing List about this cool integration with Visual Studio Shell! Also, further in the same thread, you can find out that the current CTP of ASP.NET (ASP.NET Futures) also includes ironPython integration. Look at this:<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://lists.ironpython.com/pipermail/users-ironpython.com/2007-June/005045.html">I read on the IronPython Mailing List about this cool integration with Visual Studio Shell</a>! Also, further in the same thread, you can find out that <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9323777E-FE78-430C-AD92-D5BE5B5EAD98&amp;displaylang=en">the current CTP of ASP.NET (ASP.NET Futures) also includes ironPython integration</a>. Look at this:</p>
<p><a href="http://msdn2.microsoft.com/en-us/vstudio/bb510103.vss_IronPython_large.jpg" title="IronPython running in VS Shell" rel="lightbox[188]"><img src="http://farm2.static.flickr.com/1213/536136720_869f05cb29.jpg" alt="IronPython running in VS Shell" height="389" width="500" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/06/08/ironpython-and-visual-studio-shell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This blog in C#</title>
		<link>http://www.muscetta.com/2007/05/30/this-blog-in-c/</link>
		<comments>http://www.muscetta.com/2007/05/30/this-blog-in-c/#comments</comments>
		<pubDate>Wed, 30 May 2007 10:18:21 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/30/this-blog-in-c/</guid>
		<description><![CDATA[I have been busy trying to write a new frontend for this blog that uses .Net. I already blogged about it here. In the last couple of weeks I have been adding stuff &#8211; permalinks using mod_rewrite, I finally show the comments properly, I have added categories and category archives (as in http://www.muscetta.net/dotnet/tag/coding). There is [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I have been busy trying to write <a href="http://www.muscetta.net/dotnet/Blog.aspx">a new frontend for this blog that uses .Net</a>. I already blogged about it <a href="http://www.muscetta.com/2007/05/01/wordpressnet/">here</a>. In the last couple of weeks I have been adding stuff &#8211; permalinks using mod_rewrite, I finally show the comments properly, I have added categories and category archives (as in <a href="http://www.muscetta.net/dotnet/tag/coding">http://www.muscetta.net/dotnet/tag/coding</a>). There is even an <a href="http://www.muscetta.net/dotnet/Feed.aspx">RSS Feed</a>.</p>
<p>The layout is still crap, but I sort of like it being so light weight, so that is not on my priority list so far. Moreover, I am a crap designer.</p>
<p>Before that, tough, I still have to add important functionalities like the possibility to POST comments (which needs a new CAPTCHA, etc, so it will take me a while), and I am having issues with text encoding (it does not show the accented characters properly, yet).</p>
<p>But I am having fun doing it.</p>
<p>[Edit of December 2009 - I killed the above experiment. I had fun doing it, but there is not time for all, it needs a lot of work to keep it running/update it with every wordpress update, and mod_mono is wasting too many resources on the server.]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/30/this-blog-in-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Death by right-click -&gt; Delete ? Nope. PowerShell.</title>
		<link>http://www.muscetta.com/2007/05/30/death-by-right-click-delete-nope-powershell/</link>
		<comments>http://www.muscetta.com/2007/05/30/death-by-right-click-delete-nope-powershell/#comments</comments>
		<pubDate>Wed, 30 May 2007 09:55:42 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/30/death-by-right-click-delete-nope-powershell/</guid>
		<description><![CDATA[So at one stage I was testing the RSS reader capabilities of Outlook 2007, and I imported an OPML file with roughly 500 feeds! Of course I was NOT interested in reading ALL of them, and it was causing quite a bit of work to do on my machine to fetch them all and sync [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>So at one stage I was testing the RSS reader capabilities of Outlook 2007, and I imported an OPML file with roughly 500 feeds! Of course I was NOT interested in reading ALL of them, and it was causing quite a bit of work to do on my machine to fetch them all and sync the content in my mailbox&#8230;</p>
<p>So I figured out it was possible to remove the subscription (from the Tools menu -&gt; Account Settings -&gt; RSS Feeds) but the folders were left there. Now, I didn&#039;t want to have those 500 folders in my mailbox, and I did not even want to die by right-clicking, pressing &#034;delete&#034;, confirming&#8230;. all of this 500 times! No way.</p>
<p>So I wrote this little PowerShell script, I guess it *might* be helpful to someone at one stage, who knows ?</p>
<p>[System.Reflection.Assembly]::LoadWithPartialName(&#039;Microsoft.Office.Interop.Outlook&#039;)<br />
$oApp = New-Object -COM &#039;Outlook.Application&#039;<br />
$rss = $oApp.GetNamespace(&#034;MAPI&#034;).GetDefaultFolder(&#034;olFolderRssFeeds&#034;)<br />
forach ($folder in $rss.Folders)<br />
{<br />
$folder.Delete()<br />
}</p>
<p>Please note that if you don&#039;t have the Office Interop Assemblies installed on your machine, you can&#039;t use the first line. As a result, you will have to change the third line hardcoding the number that represents the RSSFeeds folder, so it would become:</p>
<p>$rss = $oApp.GetNamespace(&#034;MAPI&#034;).GetDefaultFolder(25)</p>
<p>Note: I found out (later, of course) that there is a much more general post on this subject (that is, automating Outlook through PowerShell): <a href="http://www.leeholmes.com/blog/GettingThingsDoneOutlookTaskAutomationWithPowerShell.aspx">http://www.leeholmes.com/blog/GettingThingsDoneOutlookTaskAutomationWithPowerShell.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/30/death-by-right-click-delete-nope-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Popfly</title>
		<link>http://www.muscetta.com/2007/05/19/microsoft-popfly/</link>
		<comments>http://www.muscetta.com/2007/05/19/microsoft-popfly/#comments</comments>
		<pubDate>Sat, 19 May 2007 07:26:24 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[popfly]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/19/microsoft-popfly/</guid>
		<description><![CDATA[You can build complex web-mashups in minutes. Read on an interesting review at programmableweb.com and, obviously, more info at the official site http://www.popfly.ms<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.popfly.ms" title="Microsoft Popfly"><img src="http://farm1.static.flickr.com/204/504146344_4b0ad07f51.jpg" alt="Microsoft Popfly" height="375" width="500" /></a></p>
<p>You can build complex web-mashups in minutes.</p>
<p>Read on <a href="http://blog.programmableweb.com/2007/05/19/microsoft-popfly/">an interesting review at programmableweb.com</a> and, obviously, more info at the <a href="http://www.popfly.ms">official site http://www.popfly.ms</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/19/microsoft-popfly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Italian Microsoft Bloggers</title>
		<link>http://www.muscetta.com/2007/05/11/italian-microsoft-bloggers/</link>
		<comments>http://www.muscetta.com/2007/05/11/italian-microsoft-bloggers/#comments</comments>
		<pubDate>Fri, 11 May 2007 18:11:37 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/11/italian-microsoft-bloggers/</guid>
		<description><![CDATA[Some days ago some of my colleagues (most of them in Milan) who have a blog, decided to gather together to talk to each other and to share experiences about blogging, technology, Microsoft, etc. What they basically did for now was to make a list of all italian Microsoft blogger. I could not attend, as [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Some days ago some of my colleagues (most of them in Milan) who have a blog, decided to gather together to talk to each other and to share experiences about blogging, technology, Microsoft, etc.<br />
What they basically did for now was to make <a href="http://vincos.spaces.live.com/Blog/cns!1BE30B71856FFF9D!2724.entry">a list of all italian Microsoft blogger</a>.</p>
<p>I could not attend, as it turns out I am the only guy in Rome, among all of them.<br />
That is strange. What is also strange is being all of a sudden in a list of *Microsoft* bloggers. I had never thought of myself like a *Microsoft* Blogger. Sure enough I work at Microsoft, but as my <a href="http://www.muscetta.com/disclaimer/">disclaimer</a> says it clear <em>&#034;The content of this site are my own personal opinions and do not represent my employer’s view in anyway.&#034;</em>. I just feel like I am myself. And I also have a blog. <a href="http://reports.internic.net/cgi/whois?whois_nic=muscetta.com&#038;type=domain">MUSCETTA.COM</a> has been online for 5 years now, and I have only been working for Microsoft for less than three years now.<br />
For sure, I do blog about technology, also Microsoft technology. Of course, I also talk and write and blog about NON-Microsoft technology. In the past I did try to get an <a href="http://blogs.msdn.com/dmuscett">official blog (which I called a &#034;corporate blog&#034;)</a> but then <a href="http://blogs.msdn.com/dmuscett/archive/2006/06/09/623680.aspx">I preferred to keep using my own domain</a>, just because a lot of what you find here is often personal, politically incorrect and even &#8211; yes, I am gonna write it &#8211; open source.</p>
<p>Don&#039;t get me wrong, I love being at this company, because there&#039;s a lot of brilliant people and you cannot find anywhere in any other company such a huge mix of techies that rock so much and are so passionate about what they do! Those other bloggers in that list are this kind of people.</p>
<p>This said, this will stay my random and personal thoughts&#039; basket. I like being in the community, but don&#039;t take my word for &#034;official&#034; please. Those you find written here are just my ramblings written from the couch after dinner.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/11/italian-microsoft-bloggers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Create a Script-Based Unit Monitor in OpsMgr2007 via the GUI</title>
		<link>http://www.muscetta.com/2007/05/10/create-a-script-based-unit-monitor-in-opsmgr2007-via-the-gui/</link>
		<comments>http://www.muscetta.com/2007/05/10/create-a-script-based-unit-monitor-in-opsmgr2007-via-the-gui/#comments</comments>
		<pubDate>Thu, 10 May 2007 20:31:40 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA["Management Packs"]]></category>
		<category><![CDATA[authoring]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[management pack]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[MP]]></category>
		<category><![CDATA[MPs]]></category>
		<category><![CDATA[opsmgr]]></category>
		<category><![CDATA[scom]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/10/create-a-script-based-unit-monitor-in-opsmgr2007-via-the-gui/</guid>
		<description><![CDATA[Warning for people who landed here: this post is VERY OLD. It was written in the early days of struggling with OpsMgr 2007, and when nobody really knew how to do things. I found that this way was working &#8211; and it surely does &#8211; but what is described here is NOT the recommended way [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><span style="color: red;"><strong>Warning for people who landed here: this post is VERY OLD. It was written in the early days of struggling with OpsMgr 2007, and when nobody really knew how to do things.<br />
I found that this way was working &#8211; and it surely does &#8211; but what is described here is NOT the recommended way to do things nowadays. This post was only meant to fill in a gap I was feeling existed, back in 2007.<br />
But as time passes, and documentation gets written, knowledge improves.<br />
Therefore, I recommend you read the newly released Composition chapter of the MP Authoring Guide instead<br />
<a href="http://technet.microsoft.com/en-us/library/ff381321.aspx">http://technet.microsoft.com/en-us/library/ff381321.aspx</a> &#8211; and start building your custom modules to embed scripts as <a href="http://blogs.technet.com/brianwren">Brian Wren</a> describes in there, so that you can share them between multiple rules and monitors.</strong></span><br />
This said, below is the original post.</p>
<p><!--  .flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; }  --></p>
<p class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/492786198/"><img class="flickr-photo" src="http://farm1.static.flickr.com/221/492786198_d85d81a5b4.jpg" alt="Create a Script-Based Unit Monitor in OpsMgr2007 via the GUI" /></a><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/492786198/"></a></span></p>
<p class="flickr-yourcomment">There is not a lot of documentation for System Center Operations Manager 2007 yet.<br />
It is coming, but there&#039;s a lot of things that changed since the previous release and I think some more would only help. Also, a lot of the content I am seeing is either too newbie-oriented or too developer-oriented, for some reason.</p>
<p>I have not yet seen a tutorial, webcast or anything that explains how to create a simple unit monitor that uses a VBS script using the GUI.</p>
<p>So this is how you do it:</p>
<p>Go to the <strong>&#034;Authoring&#034;</strong> space of OpsMgr 2007 Operations Console.<br />
Select the <strong>&#034;Management Pack objects&#034;</strong>, then <strong>&#034;Monitors&#034;</strong> node. Right click and choose <strong>&#034;Create a monitor&#034;</strong> -&gt; <strong>&#034;Unit Monitor&#034;</strong>.</p>
<p>You get the &#034;Create a monitor&#034; wizard open:<br />
<a href="http://www.flickr.com/photos/dani3l3/492786202/"><img src="http://farm1.static.flickr.com/202/492786202_861b4818fa.jpg" alt="wizard02" width="500" height="444" /></a></p>
<p>Choose to create a two-states unit monitor based on a script. Creating a three- state monitor would be pretty similar, but I&#039;ll show you the most simple one.<br />
Also, choose a Management pack that will contain your script and unit monitor, or create a new management pack.<br />
<a href="http://www.flickr.com/photos/dani3l3/492786204/"><img src="http://farm1.static.flickr.com/220/492786204_57fb878a47.jpg" alt="wizard03" width="500" height="444" /></a></p>
<p>Choose a &#034;monitor target&#034; (object classes or instances &#8211; see this webcast about targeting rules and monitors: <a href="http://www.microsoft.com/winme/0703/28666/Target_Monitoring_Edited.asx">www.microsoft.com/winme/0703/28666/Target_Monitoring_Edit&#8230;</a> ) and the aggregate rollup monitor you want to roll the state up to.</p>
<p>Choose a schedule, that is: how often would you like your script to run. For demonstration purposes I usually choose a very short interval such a two or three minutes. For production environments, tough, choose a longer time range.<br />
<a href="http://www.flickr.com/photos/dani3l3/492786208/"><img src="http://farm1.static.flickr.com/231/492786208_b48ef74259.jpg" alt="wizard04" width="500" height="444" /></a></p>
<p>Choose a name for your script, complete with a .VBS extension, and write the code of the script in the rich text box:<br />
<a href="http://www.flickr.com/photos/dani3l3/492786212/"><img src="http://farm1.static.flickr.com/196/492786212_60a675bdf5.jpg" alt="wizard05" width="500" height="444" /></a></p>
<p>As the sample code and comments suggest, you should use a script that checks for the stuff you want it to check, and returns a &#034;Property Bag&#034; that can be later interpreted by OpsMgr workflow to change the monitor&#039;s state.<br />
This is substantially different than scripting in MOM 2005, where you could only launch scripts as responses, loosing all control over their execution.</p>
<p>For demonstration purpose, use the following script code:<br />
<em> </em></p>
<p><em>On Error Resume Next<br />
Dim oAPI, oBag<br />
Set oAPI = CreateObject(&#034;MOM.ScriptAPI&#034;)<br />
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)<br />
Const FOR_APPENDING = 8<br />
strFileName = &#034;c:\testfolder\testfile.txt&#034;<br />
strContent = &#034;test &#034;<br />
Set objFS = CreateObject(&#034;Scripting.FileSystemObject&#034;)<br />
Set objTS = objFS.OpenTextFile(strFileName,FOR_APPENDING)<br />
If Err.Number &lt;&gt; 0 Then<br />
Call oBag.AddValue(&#034;State&#034;,&#034;BAD&#034;)<br />
Else<br />
Call oBag.AddValue(&#034;State&#034;,&#034;GOOD&#034;)<br />
objTS.Write strContent<br />
End If<br />
Call oAPI.Return(oBag)</em><em><br />
</em></p>
<p>[edited on 29th of May as <a href="http://ianblythmanagement.wordpress.com/2007/05/27/scripting-in-2007/">pointed out by Ian</a>: if you cut and paste the example script you might need to change the apostrophes (“) as that causes the script to fail when run - it is an issue with the template of this blog.] [edited on 30th of May: I fixed the blog so that now post content shows just plain, normal double quotes instead than fancy ones. It seems like a useful thing when from time to time I post code...]</p>
<p>The script will try to write into the file c:\testfolder\testfile.txt.<br />
If it finds the file and manages to write (append text) to it, it will return the property &#034;State&#034; with a value of &#034;GOOD&#034;.<br />
If it fails (for example if the file does not exist), it will return the property &#034;State&#034; with a value of &#034;BAD&#034;.</p>
<p>In MOM 2005 you could only let script generate Events or Alerts directly as a mean to communicate their results back to the monitoring engine. In OpsMgr 2007 you can let your script spit out a property bag and then continue the monitoring workflow and decide what to do depending on the script&#039;s result.</p>
<p><a href="http://www.flickr.com/photos/dani3l3/492786214/"><img src="http://farm1.static.flickr.com/225/492786214_96af0cc463.jpg" alt="wizard06" width="500" height="444" /></a></p>
<p>So the next step is to go and check for the value of the property we return in the property bag, to determine which status the monitor will have to assume.</p>
<p>We use the syntax <strong>Property[@Name='State']</strong> in the parameter field, and we search for a content that means an unhealthy condition:</p>
<p><a href="http://www.flickr.com/photos/dani3l3/492787088/"><img src="http://farm1.static.flickr.com/217/492787088_3b3107fb59.jpg" alt="wizard07" width="500" height="444" /></a></p>
<p>Or for the healty one:<br />
<a href="http://www.flickr.com/photos/dani3l3/492787092/"><img src="http://farm1.static.flickr.com/207/492787092_a8559eecf5.jpg" alt="wizard08" width="500" height="444" /></a></p>
<p>Then we decide which status will the monitor have to assume in the healty and unhealty conditions (Green/Yellow or Green/Red usually)<br />
<a href="http://www.flickr.com/photos/dani3l3/492787094/"><img src="http://farm1.static.flickr.com/223/492787094_fac28573d3.jpg" alt="wizard09" width="500" height="444" /></a></p>
<p>Optionally, we can decide to raise an Alert when the status changes to unhealthy, and close it again when it goes back to healty.</p>
<p><a href="http://www.flickr.com/photos/dani3l3/492787098/"><img src="http://farm1.static.flickr.com/194/492787098_72d6ad227f.jpg" alt="wizard10" width="500" height="444" /></a></p>
<p>Now our unit monitor is done.<br />
All we have to do is waiting it gets pushed down to the agent(s) that should execute it, and wait for its status to change.<br />
In fact it should go to the unhealthy state first.<br />
To test that it works, just create the text file it will be searching for, and wait for it to run again, and the state should be reset to Healthy.</p>
<p>Have fun with more complex scripts!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/10/create-a-script-based-unit-monitor-in-opsmgr2007-via-the-gui/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
<enclosure url="http://www.microsoft.com/winme/0703/28666/Target_Monitoring_Edited.asx" length="126" type="video/x-ms-asf" />
		</item>
		<item>
		<title>Luca is loving Purble Place</title>
		<link>http://www.muscetta.com/2007/05/05/luca-is-loving-purble-place/</link>
		<comments>http://www.muscetta.com/2007/05/05/luca-is-loving-purble-place/#comments</comments>
		<pubDate>Sat, 05 May 2007 13:57:31 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Luca]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/05/luca-is-loving-purble-place/</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } Purble Place is a new educational game that ships with Windows Vista (even with Starter and Home Basic editions) that can help teach colors, shapes, and pattern recognition. My kid absolutely [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">      .flickr-photo { border: solid 2px #000000; }  .flickr-yourcomment { }  .flickr-frame { text-align: left; padding: 3px; }  .flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/484997159/" title="photo sharing"><img src="http://farm1.static.flickr.com/215/484997159_89e5df3169.jpg" alt="Luca is loving Purble Place" class="flickr-photo" /></a></p>
<p class="flickr-yourcomment"><a href="http://en.wikipedia.org/wiki/Purble_Place">Purble Place</a> is a new educational game that ships with <a href="http://www.microsoft.com/windows/products/windowsvista/editions/default.mspx">Windows Vista</a> (even with Starter and Home Basic editions) that can help teach colors, shapes, and pattern recognition.</p>
<p>My kid absolutely LOVES it, especially the section of the game where you have to make and decorate cakes <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/05/luca-is-loving-purble-place/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress.Net</title>
		<link>http://www.muscetta.com/2007/05/01/wordpressnet/</link>
		<comments>http://www.muscetta.com/2007/05/01/wordpressnet/#comments</comments>
		<pubDate>Tue, 01 May 2007 08:14:41 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/05/01/wordpressnet/</guid>
		<description><![CDATA[WordPress.Net, uploaded by Daniele Muscetta on Flickr. It has been quite a while that I wanted to experiment a bit more with ASP.Net but I don&#039;t have a windows machine on the internet. Not one that performs enough anyway. My server runs linux. I have had mono running on it for a while, but its [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><!-- .flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } --></p>
<div class="flickr-frame"><a title="photo sharing" href="http://www.flickr.com/photos/dani3l3/479584212/"><img class="flickr-photo" src="http://farm1.static.flickr.com/222/479584212_c5acb5300c.jpg" alt="WordPress.Net" /></a></p>
<p><span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/479584212/">WordPress.Net</a>, uploaded by <a href="http://www.flickr.com/people/dani3l3/">Daniele Muscetta</a> on Flickr.</span></p>
</div>
<p class="flickr-yourcomment">It has been quite a while that I wanted to experiment a bit more with <a href="http://www.asp.net">ASP.Net</a> but I don&#039;t have a windows machine on the internet. Not one that performs enough anyway. My server runs linux. I have had <a href="http://www.mono-project.com">mono</a> running on it for a while, but its support was not complete with the <a href="http://www.debian.org/releases/sarge">old release of Debian</a>, so part of my mono and mod_mono installation were a custom compile and they were breaking from time to time, each time some library got updated. So I did run a &#034;Hello World&#034; page with it, but nothing more, because it was a bit of a mess to mantain and, moreover, because I had not yet figured out how to have it connect with mysql instead than with MS SQL Server.<br />
Also, I did not have any real project or idea to implement in my mind.</p>
<p>Now that I have upgraded to <a href="http://www.debian.org/releases/etch">Debian Etch</a>, mono support seems to be much more out-of-the-box and stable on this release. I also got an idea of what to do with it, so I finally gave it a try.</p>
<p>As a starter, I am trying to re-publish my blog, historically running at <a href="http://www.muscetta.com">www.muscetta.com</a>, on my other <a href="http://www.muscetta.net">muscetta.NET</a> domain (it makes sense to use a .NET domain, right?). But this is not a new site, it is a republish of the same content, but done using C# &#8211; just pointing at the same wordpress&#039; mysql database. Connection to MySQL is done with <a href="http://dev.mysql.com/doc/refman/5.1/en/connector-net-ref-mysqlclient.html">MySql.Data (the ADO.Net driver for MySQL)</a>.</p>
<p>I still need to implement a lot of things/features, such as comment posting (you can only read them now), some layout/styling/framing to make it look nicer, some sidebar/blogroll, feeds, and a many other things. I am not aiming at a complete rewrite (for example I won&#039;t do an administrative interface or a webservice so far), but just a republish/frontend to the visitors.<br />
I don&#039;t know when I will have time to continue writing it, but all in all I am glad it works so far, and I had fun doing it.</p>
<p>Writing ASP.Net for mono on linux in the absence of Frontpage server extentions and WebDAV and the remote debugger is proving slightly more challenging than just dragging and dropping controls in Visual Studio and let it do a lot of work with you. You have to write the code, upload it, and see if it works. No debugging, no intellisense. Just the hard old way of trial and error, which makes development slower, but you learn a hell of a lot more that way. Of course you need  to keep the <a href="http://msdn2.microsoft.com/en-us/Library">MSDN library</a> handly <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>[Edit of December 2009 - I killed the above experiment. I had fun doing it, but there is not time for all, it needs a lot of work to keep it running/update it with every wordpress update, and mod_mono is wasting too many resources on the server.]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/05/01/wordpressnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOM2005 vs. OpsMgr2007 and ITIL ?</title>
		<link>http://www.muscetta.com/2007/04/27/mom2005-vs-opsmgr2007-and-itil/</link>
		<comments>http://www.muscetta.com/2007/04/27/mom2005-vs-opsmgr2007-and-itil/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 13:05:30 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[MOM]]></category>
		<category><![CDATA[MOM2005]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OpsMgr2007]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/04/27/mom2005-vs-opsmgr2007-and-itil/</guid>
		<description><![CDATA[&#160; MOM has always been a great tool out of the box because it sort of FORCED you to implement an Incident Management Process to deal with Alerts, as described here:http://ianblythmanagement.wordpress.com/2006/07/27/mom-2005-and-itil-part-1/In fact, Alerts had to be actually set to &#034;Resolved&#034;, and this had to be done manually. I have now been wondering for a while: [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>MOM has always been a great tool out of the box because it sort of FORCED you to implement an Incident Management Process to deal with Alerts, as described here:<br /><a href="http://ianblythmanagement.wordpress.com/2006/07/27/mom-2005-and-itil-part-1/">http://ianblythmanagement.wordpress.com/2006/07/27/mom-2005-and-itil-part-1/</a><br />In fact, Alerts had to be actually set to &#034;Resolved&#034;, and this had to be done manually. </p>
<p>I have now been wondering for a while: &#034;How is OpsMgr2007 going to affect this?&#034; I refer to the fact that now OpsMgr2007 does something customers have been asking for a while: it can auto-resolve alerts as soon as the incident/issue is fixed, by monitoring the state of the component rather than waiting for people to resolve it!  </p>
<p>Practically, people were often the bottleneck, due to a missing Incident Management Process. MOM has tried for nearly 8 years to push them to implement one&#8230; and I feel that it finally gave up even trying. </p>
<p>All the other stuff described in the other <a href="http://ianblythmanagement.wordpress.com/2006/07/27/mom-2005-and-itil-part-2/">two</a> <a href="http://ianblythmanagement.wordpress.com/2006/07/27/mom-2005-and-itil-part-3/">articles</a> of Ian&#039;serie do still apply.  </p>
<p>For Capacity Management nothing substantially changes.<br />Availability Management is greatly improved, with the generic &#034;availability report&#034; and the state roll-up feature provided by the new Health Service and the new ways object are discovered and instantiated and the way their health models work.  </p>
<p>Problem Management can also still be done, and Alert tuning will be still required (but it should be slightly easier now, with the improved &#034;overrides&#034; kind of thing).<br />Service Level Management can also be done &#8211; this will actually be done much better: if the system <strong>knows</strong> you&#039;ve fixed the incident and it closes the alert for you, SLA calculations will be done on the REAL down/up-times of services, not on people keeping the Alerts open forever like I have seen in many places.<br />This means it will be done better, WITHOUT relying on people.  </p>
<p>All in all there are substantial changes in OpsMgr2007, most of them are for the good&#8230;. but still, I think, I will be missing the fact that people have to actively look at their consoles and manage Alerts the way they were asked to do before. I will miss all the talks I used to do about &#034;you HAVE to manage your Alerts/Incidents&#034;, now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/04/27/mom2005-vs-opsmgr2007-and-itil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#039;t talk about yourself.</title>
		<link>http://www.muscetta.com/2007/04/25/dont-talk-about-yourself/</link>
		<comments>http://www.muscetta.com/2007/04/25/dont-talk-about-yourself/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 07:24:06 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/04/25/dont-talk-about-yourself/</guid>
		<description><![CDATA[I just read this post in which Hugh MacLeod writes critically about Microsoft people writing about themselves and showing off, hoping in the power of an artificially created network to impress people (or that&#039;s I get it, at least &#8211; maybe it isn&#039;t completely that way), instead of letting people talk about the products because [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I just read <a href="http://www.gapingvoid.com/Moveable_Type/archives/003901.html">this post</a> in which Hugh MacLeod writes critically about Microsoft people writing about themselves and showing off, hoping in the power of an artificially created network to impress people (or that&#039;s I get it, at least &#8211; maybe it isn&#039;t completely that way), instead of letting people talk about the products because they believe they are just cool. He concludes: &#034;[...] [First Rule of Marketing:] If you want to be interesting, don&#039;t talk about yourself. Amen. [...]&#034; </p>
<p>You should have OTHER people talk about YOUR stuff because it is really cool. </p>
<p>Self-promotion does usually the opposite effect on peopple these days. </p>
<p>I am not into this: I just talk about technology when I feel like to, and I talk about other stuff when I want to talk about other stuff. And when I talk about technology it is usually about what interests me at that point, be it Microsoft or not. I talk of MOM as well as of Linux, of C# just as much as of Ruby. It depends what I&#039;m hacking with at that point in time. I like cool technology, it does not matter if it comes from one side or another. I even like to integrate them when it makes sense (and it makes sense a lot of times). But I&#039;ve already written about this <a href="http://blogs.msdn.com/dmuscett/archive/2005/04/28/412959.aspx">here</a> in the past. So I&#039;ll stop this rant here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/04/25/dont-talk-about-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MOM 2005 Alerts to RSS feed</title>
		<link>http://www.muscetta.com/2007/03/22/mom-2005-alerts-to-rss-feed/</link>
		<comments>http://www.muscetta.com/2007/03/22/mom-2005-alerts-to-rss-feed/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 18:07:00 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[MOM]]></category>
		<category><![CDATA[MOM2005]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/03/22/mom-2005-alerts-to-rss-feed/</guid>
		<description><![CDATA[I am an RSS Addict, you know that.So I wanted an RSS Feed to show MOM Alerts. I have been thinking of it for a while, last year (or was it the year before?). It seemed like a logical thing to me: alerts are created (and can be resolved &#8211; that is, expire), generally get [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I am an RSS Addict, you know that.So I wanted an RSS Feed to show MOM Alerts. I have been thinking of it for a while, last year (or was it the year before?).<br />
It seemed like a logical thing to me: alerts are created (and can be resolved &#8211; that is, expire), generally get sorted by the date and the time when they have been created, the look pretty much like a list. Also, many people like to receive mail notification when new alerts are generated.<br />
So, if the alert can be sent to you (push), you could also get to it(pull).<br />
Pretty much the same deal with receiving a mail or reading a newsgroup, or syndicating a feed.</p>
<p>At the time I looked around but it seemed like no one had something like this already done.<br />
So I wrote a very simple RSS feed generator for MOM Alerts.<br />
I did it quite an amount of time ago, just as an exercise.<br />
Then, after a while, I figured out that the <a href="http://www.microsoft.com/technet/mom/2005/downloads/tools/reskit.mspx">MOM 2005 Resource Kit</a> had been updated to include such a utility!</p>
<p>Wow, I thought, they finally added what I have been thinking for a while. Might it be because I mentioned it on an private Mailing list ? Maybe. Maybe not. Who cares. Of course, if it is included in the resource kit it must be way cooler than the one I made, I though.<br />
I really thought something along these lines, but never actually had the time to try it out.<br />
I think I just sort of assumed it must have been cooler than the one I made, since it was part of an official package, while I am not a developer. So I basically forgot about the one I wrote, dismissing it as being crap without looking too much into it anymore.<br />
Until today.<br />
Today I actually tried to use the alert to RSS tool included in the resource kit, because a customer asked if there was any other way to get notified, other than receiving notification or using the console (or the console notifier).<br />
So I looked at the resource kit&#039;s Alert-to-RSS Utility.<br />
My experience with it:<br />
1) it is provided in source code form &#8211; which is ok if it was ALSO provided as source. Instead it is ONLY provided as source, and most admins don&#039;t have Visual Studio installed or don&#039;t know how to compile from the command line;<br />
2) Even when they wanted to compile it, it includes a bug which makes it impossible to compile &#8211; solution <a href="http://groups.google.it/group/microsoft.public.mom/browse_thread/thread/79257d4472479fe0/2c21222bb33cb163?lnk=st&#038;q=MOM+Alert+RSS&#038;rnum=1#2c21222bb33cb163">in this newsgroup discussion</a>;<br />
3) if you don&#039;t want to mess about with code since you are using a resource Kit tool (as opposed to something present in the SDK) you can even get it already compiled by someone from somewhere on the net, but that choice is about trust.</p>
<p>Anyway, one way or another, after it is finally set up&#8230;. surprise surprise!!!<br />
It does NOT show a LIST of alerts (as I was expecting).<br />
It shows a summary of how many alerts you have. basically it is an RSS feed made of a single item, and this single item tells you how many alerts you have. What is one supposed to do with such a SUMMARY? IMHO, it is useless the way it is. It is even worse than one of those feed that only contains the excerpt of the article, rather than the full article.<br />
Knowing that I have 7 critical errors and 5 warning without actually knowing ANYTHING of them is pointless.<br />
It might be useful for a manager, but not for a sysadmin, at least.</p>
<p>So I thought my version, even if coded crap, might be useful to someone because it gives you a list of alerts (those that are not resolved) and each one of them tells you the description of the alert, the machine tat generated it, and includes links to the actual alert in the web console, so you can click, go there, and start troubleshooting from within your aggregator!<br />
My code does this. Anyway, since I am a crap coder, since I wrote it in only fifteen minutes more than a year ago, and since I don&#039;t have time to fix it and make it nicer&#8230; it has several issues, and could be improved in a million ways, in particular for the following aspects:</p>
<ol>
<li>is currently depends on the SDK Database views &#8211; it could use the MOM Server API&#039;s or the webservice instead;</li>
<li>it uses SQL Security to connect to the DB &#8211; by default MOM does not allow this &#8211; it is suggested for the SQL instance hosting &#034;OnePoint&#034; to only use Windows Integrated Authentication.. so to make my code work you have to switch back to Mixed mode, and create a login in SQL that has permission to read the database. This is due to the fact that I&#039;ve coded this in five minutes and I don&#039;t know how to use delegation &#8211; if I was able to use delegation, I would&#8230; so that the end user accessing IIS would be the one connecting to the DB. If anybody wants to teach me how to do this, I will be most grateful.</li>
<li>it could accept parameters as URL variables, so to filter out only events for a specific machine, or a specific resolution state, etc etc</li>
<li>At present it uses <a href="http://rss-net.sourceforge.net/">RSS.Net</a> to generate the feed. It could made independent from it, but I don&#039;t really see why, and I quite like that library.</li>
</ol>
<p>The code is just an ASP.Net page and its codebehind, no need to compile, but of course you need to change a couple of lines to match your webconsole address.<br />
Also, you need to get <a href="http://rss-net.sourceforge.net/">RSS.NET</a> and copy its library (RSS.Net.dll) in the /bin subfolder of the website directory where you place the RSSFeed generator page. I see that I wrote this with version 0.86, but any version should do, really.</p>
<p>Here is what it will look like:</p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photo_zoom.gne?id=430556283&#038;size=o"><img width="500" height="375" alt="AlertToRSS" src="http://farm1.static.flickr.com/173/430556283_6eb615a080.jpg" /></a></p>
<p>And here&#039;s the code of the page (two files):</p>
<p><strong>Default.aspx</strong></p>
<p>&lt;%@ Page Language=&#034;C#&#034; AutoEventWireup=&#034;true&#034; CodeFile=&#034;Default.aspx.cs&#034; Inherits=&#034;_Default&#034; %&gt;</p>
<p><strong>Default.aspx.cs</strong></p>
<p>using System;<br />
using System.Data;<br />
using System.Data.SqlClient;<br />
using System.Configuration;<br />
using System.Web;<br />
using Rss;</p>
<p>public partial class _Default : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
string webconsoleaddress = &#034;<a href="http://192.168.0.222:1272/AlertDetail.aspx?v=a&#038;sid=">http://192.168.0.222:1272/AlertDetail.aspx?v=a&#038;sid=&#034;</a> // must change to match your address</p>
<p>// Inizializza il Feed<br />
RssChannel rssChannel = new RssChannel();<br />
rssChannel.Title = &#034;MOM Alerts&#034;<br />
rssChannel.PubDate = DateTime.Now;<br />
rssChannel.Link = new Uri(&#034;<a href="http://192.168.0.222:1272/rss/">http://192.168.0.222:1272/rss/&#034;);</a> // must change to match your address<br />
rssChannel.LastBuildDate = DateTime.Now;<br />
rssChannel.Description = &#034;Contains the latest Alerts&#034;</p>
<p>// query &#8211; you might want to change the severity<br />
string mySelectQuery = &#034;SELECT ComputerName, Name, Severity, TimeRaised, RepeatCount, GUID FROM dbo.SDKAlertView WHERE Severity &gt; 10 AND ResolutionState &lt; 255&#034;</p>
<p>// SQL Connection – must change SQL server, user name and password<br />
SqlConnection conn = new SqlConnection(&#034;Data Source=192.168.0.222;Initial Catalog=OnePoint;User ID=rss;Password=rss&#034;);<br />
SqlDataReader rdr = null;</p>
<p>try<br />
{<br />
conn.Open();<br />
SqlCommand cmd = new SqlCommand(mySelectQuery, conn);<br />
rdr = cmd.ExecuteReader();<br />
while (rdr.Read())<br />
{<br />
RssItem rssItem = new RssItem();<br />
string titleField = rdr[1].ToString();<br />
rssItem.Title = titleField;<br />
string url = webconsoleaddress + rdr[5];<br />
rssItem.Link = new Uri(url.ToString());<br />
string description = &#034;&lt;![CDATA[ &lt;p&gt;&lt;a xhref=\"" + rssItem.Link + "\"&gt;" + rdr[1] + &#034; &lt;/a&gt;&lt;/p&gt;&lt;br&gt;&#034; + &#034;&lt;br&gt;Computer: &#034; + rdr[0] + &#034;&lt;br&gt;Repeat Count: &#034; + rdr[4] + &#034;&lt;BR&gt;Original ALert Time: &#034; + rdr[3];<br />
rssItem.Description = description;<br />
rssChannel.Items.Add(rssItem);<br />
}</p>
<p>// Finalizza il feed<br />
RssFeed rssFeed = new RssFeed();<br />
rssFeed.Channels.Add(rssChannel);<br />
Response.ContentType = &#034;text/xml&#034;<br />
Response.ExpiresAbsolute = DateTime.MinValue;<br />
rssFeed.Write(Response.OutputStream);<br />
}<br />
finally<br />
{<br />
if (rdr != null)<br />
{<br />
rdr.Close();<br />
}</p>
<p>if (conn != null)<br />
{<br />
conn.Close();<br />
}<br />
}<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/03/22/mom-2005-alerts-to-rss-feed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Phrogram &#8211; Kids Programming Language</title>
		<link>http://www.muscetta.com/2007/02/25/phrogram-kids-programming-language/</link>
		<comments>http://www.muscetta.com/2007/02/25/phrogram-kids-programming-language/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 20:11:03 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/02/25/phrogram-kids-programming-language/</guid>
		<description><![CDATA[It was since the old times of LOGO that I did not see an effort to bring kids closer to computer programming. This is what makes Phrogram (previously called KPL &#8211; kids&#039; Programming Language) unique today. On the KPL site you can also read that &#034;KPL isn&#039;t just for kids any more&#034;. This means it [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>It was since the old times of <a title="LOGO" href="http://el.media.mit.edu/Logo-foundation/logo/index.html">LOGO</a> that I did not see an effort to bring kids closer to computer programming. This is what makes <a title="Phrogran" href="http://phrogram.com/">Phrogram</a> (previously called <a href="http://www.kidsprogramminglanguage.com/">KPL &#8211; kids&#039; Programming Language</a>) unique today. On the KPL site you can also read that &#034;KPL isn&#039;t just for kids any more&#034;. This means it has evolved and it is now as complete as a programming language as one of the many other you can choose among to create your full-blown applications and games.</p>
<p>Anyhow, this means that people <strong>might</strong> choose it because it is easy and straightforward to build up complex programs (especially games), but it also still primarly is a very attractive tool to teach the youngest generations how does programming work.</p>
<p>I learned the very basics of programming&#8230; in BASIC ,in fact, on my first Commodore64. What does a kid try to do ? Write a game. I also did. It was painful back then when you had to use instructions such as PEEK and POKE to &#034;draw&#034; the bitmaps making up your sprites and let them move by moving those bits around&#8230; at the elementary school it wasn&#039;t exactly crystal clear to me why did it work, and how. I actually had my issues with much simpler stuff, like figuring out what on earth a multi-dimensional array was, and stuff like that. LOGO simplified all of that, as you finally could just draw on your computer by moving the Turte simply asking her to move back, forward, right, left, and so on&#8230;</p>
<p>Of course twenty years have passed, CPU capacity has massively improved, object oriented programming has become mainstream&#8230;.. so that now, with KPL/Phrogram you can write a real Arcade videogame that uses DirectX 3D graphics with just a bunch of lines of code! This absolutely ROCKS!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/02/25/phrogram-kids-programming-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My colleague and friend Feliciano started a Security-related Blog</title>
		<link>http://www.muscetta.com/2007/01/16/my-colleague-and-friend-feliciano-started-a-security-related-blog/</link>
		<comments>http://www.muscetta.com/2007/01/16/my-colleague-and-friend-feliciano-started-a-security-related-blog/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 09:58:00 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/01/16/my-colleague-and-friend-feliciano-started-a-security-related-blog/</guid>
		<description><![CDATA[Surely he will write more about security @microsoft than I do. Here he goes: http://blogs.technet.com/feliciano_intini/default.aspxWelcome to the blogging scene, Feliciano! Keep up the great work! Note: The blog above is written in italian, and it is addressed to italian IT Professionals having to deal with security.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Surely he will write more about security @microsoft than I do. Here he goes: <a href="http://blogs.technet.com/feliciano_intini/default.aspx">http://blogs.technet.com/feliciano_intini/default.aspx</a><br />Welcome to the blogging scene, Feliciano! Keep up the great work!</p>
<p>Note: The blog above is written in italian, and it is addressed to italian IT Professionals having to deal with security.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/01/16/my-colleague-and-friend-feliciano-started-a-security-related-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Out-Flickr!!</title>
		<link>http://www.muscetta.com/2007/01/10/out-flickr/</link>
		<comments>http://www.muscetta.com/2007/01/10/out-flickr/#comments</comments>
		<pubDate>Wed, 10 Jan 2007 15:02:28 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2007/01/10/out-flickr/</guid>
		<description><![CDATA[This is soooo cool! An &#034;Out-Flickr&#034; script for PowerShell: http://abhishek225.spaces.live.com/blog/cns!13469C7B7CE6E911!285.entry<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>This is soooo cool! An &#034;Out-Flickr&#034; script for PowerShell:</p>
<p><a href="http://abhishek225.spaces.live.com/blog/cns!13469C7B7CE6E911!285.entry">http://abhishek225.spaces.live.com/blog/cns!13469C7B7CE6E911!285.entry</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2007/01/10/out-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Out-Blog!</title>
		<link>http://www.muscetta.com/2006/11/24/out-blog/</link>
		<comments>http://www.muscetta.com/2006/11/24/out-blog/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 11:21:19 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2006/11/24/out-blog/</guid>
		<description><![CDATA[[Edited again 25th November -&#160;Jachym gave me some suggestions and insights on the use of parameters, and I slightly changed/fixed the original code I had posted yesterday. There&#160;are still some more things that could be improved, of course, but I'll leave them to the future, next time I'll have time fot it (who knows when [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><span style="color: black">[Edited again 25th November -&nbsp;<a href="http://blog.vyvojar.cz/jachymko/">Jachym</a> gave me some suggestions and insights on the use of parameters, and I slightly changed/fixed the original code I had posted yesterday. There&nbsp;are still some more things that could be improved, of course, but I'll leave them to the future, next time I'll have time fot it (who knows when that will be?)]</span></p>
<p><span style="color: black">This one is a post regarding my first test writing a cmdlet for PowerShell. After a few days since having change my blog&#039;s title to <strong><em>&#034;$daniele.rant | Out-Blog&#034;</em></strong> (where Out-Blog was a fantasy cmdlet name, and the title just meant to mimick PowerShell syntax in a funny way), I stumbled across this wonderful blog post: </span><span style="color: #669966; text-decoration: underline"><a href="http://blog.boschin.it/archive/2006/09/21/4375.aspx">http://blog.boschin.it/archive/2006/09/21/4375.aspx</a></span>&nbsp;<span style="color: black">that describes how to use the assemblies of &#034;Windows Live Writer&#034;. Then I saw the light: I could actually implement an &#034;Out-Blog&#034; cmdlet. I am not sure what this could be useful for&#8230; but I thought it was funny to experiment with. I followed the HOW TO information on this other blog post to guide me through the coding: </span><span style="color: #669966; text-decoration: underline"><a href="http://www.proudlyserving.com/archives/2005/10/lets_all_write_1.html">http://www.proudlyserving.com/archives/2005/10/lets_all_write_1.html</a></span></p>
<p><span style="color: #669966; text-decoration: underline"></span><span style="font-size: 10pt">The result is the&nbsp;</span><span style="font-size: 10pt; color: black">code that follows. you see is pretty much Boschin&#039;s code wrapped into a cmdlet class. Nothing fancy. Just a&nbsp;test. I thought someone might find it interesting. It is provided &#034;AS IS&#034;, mainly for educational purpose (MINE, only&nbsp;mine&#8230;. I&#039;m the one whose education is being improved, not you <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</span></p>
<p><span style="font-size: 10pt; font-family: trebuchet ms"></span></p>
<p><img src="http://static.flickr.com/119/304859662_fa52bac956.jpg"/>&nbsp;</p>
<p>&nbsp;</p>
</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> System; </p>
<p><span style="color: blue">using</span> System.Collections.Generic; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> System.Text; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> System.Management.Automation; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> WindowsLive.Writer.BlogClient.Clients; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> WindowsLive.Writer.BlogClient; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> WindowsLive.Writer.CoreServices; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> WindowsLive.Writer.CoreServices.Settings; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> WindowsLive.Writer.Extensibility.BlogClient; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">using</span> Microsoft.Win32; </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">namespace</span> LiveWriterCmdlet </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Cmdlet</span>(<span style="color: maroon">"out"</span>, <span style="color: maroon">"blog"</span>, SupportsShouldProcess=<span style="color: blue">true</span>)] </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">sealed</span> <span style="color: blue">class</span> <span style="color: teal">OutBlogCmdlet</span> : <span style="color: teal">Cmdlet </span></p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 0, Mandatory = <span style="color: blue">true</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> Title </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _title; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _title = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _title; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position=1,Mandatory=<span style="color: blue">true</span>,ValueFromPipeline=<span style="color: blue">true</span>,ValueFromPipelineByPropertyName=<span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> Text </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _text; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _text = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _text; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 2, Mandatory = <span style="color: blue">true</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> BlogApiEndPoint </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _blogapiendpoint; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _blogapiendpoint = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _blogapiendpoint; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 3, Mandatory = <span style="color: blue">true</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> UserName </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _username; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _username = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _username; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 4, Mandatory = <span style="color: blue">true</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> Password </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _password; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _password = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _password; </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 6, Mandatory = <span style="color: blue">false</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> ProxyAddress </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _proxyaddress; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _proxyaddress = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _proxyaddress; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 7, Mandatory = <span style="color: blue">false</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">ValidateNotNullOrEmpty</span>] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">int</span> ProxyPort </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _proxyport; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _proxyport = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">int</span> _proxyport; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 8, Mandatory = <span style="color: blue">false</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> ProxyUserName </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _proxyusername; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _proxyusername = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _proxyusername; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 9, Mandatory = <span style="color: blue">false</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: blue">string</span> ProxyPassword </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _proxypassword; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _proxypassword = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">string</span> _proxypassword; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">[</span><span style="color: teal">Parameter</span>(Position = 10, Mandatory = <span style="color: blue">false</span>, ValueFromPipeline = <span style="color: blue">false</span>, ValueFromPipelineByPropertyName = <span style="color: blue">true</span>)] </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">public</span> <span style="color: teal">SwitchParameter</span> Published </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">get</span> { <span style="color: blue">return</span> _published; } </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">set</span> { _published = <span style="color: blue">value</span>; } </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">private</span> <span style="color: blue">bool</span> _published; </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> BeginProcessing() </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">base</span>.BeginProcessing(); </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">ApplicationEnvironment</span>.Initialize(); </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">if</span> ((ProxyAddress != <span style="color: blue">null</span>) | (ProxyAddress != <span style="color: maroon">&#034;&#034;</span>)) </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.ProxyEnabled = <span style="color: blue">true</span>; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.Hostname = ProxyAddress; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.Port = ProxyPort; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.Username = ProxyUserName; </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.Password = ProxyPassword; </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">else</span> </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">WebProxySettings</span>.ProxyEnabled = <span style="color: blue">false</span>; </p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">protected</span> <span style="color: blue">override</span> <span style="color: blue">void</span> ProcessRecord() </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: blue">if</span> (ShouldProcess(Text)) </p>
<p><span style="font-size: 10pt; font-family: courier new">{ </span></p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">ISettingsPersister</span> persister = <span style="color: blue">new</span> <span style="color: teal">RegistrySettingsPersister</span>(<span style="color: teal">Registry</span>.CurrentUser, <span style="color: maroon">@&#034;Software\Windows Live Writer&#034;</span>); </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">IBlogCredentials</span> credentials = <span style="color: blue">new</span> <span style="color: teal">BlogCredentials</span>(<span style="color: blue">new</span> <span style="color: teal">SettingsPersisterHelper</span>(persister)); </p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">IBlogCredentialsAccessor</span> credentialsAccessor = <span style="color: blue">new</span> <span style="color: teal">BlogCredentialsAccessor</span>(<span style="color: maroon">&#034;dummy-value&#034;</span>, credentials); </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">credentials.Username = UserName; </span></p>
<p><span style="font-size: 10pt; font-family: courier new">credentials.Password = Password; </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">MovableTypeClient</span> client = <span style="color: blue">new</span> <span style="color: teal">MovableTypeClient</span>(<span style="color: blue">new</span> <span style="color: teal">Uri</span>(BlogApiEndPoint), credentialsAccessor, <span style="color: teal">PostFormatOptions</span>.Unknown); </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new"></span><span style="color: teal">BlogPost</span> MyPost = <span style="color: blue">new</span> <span style="color: teal">BlogPost</span>(); </p>
<p><span style="font-size: 10pt; font-family: courier new">MyPost.Title = Title; </span></p>
<p><span style="font-size: 10pt; font-family: courier new">MyPost.Contents = Text; </span></p>
<p><span style="font-size: 10pt; font-family: courier new">client.NewPost(</span><span style="color: maroon">&#034;dummy-value&#034;</span>, MyPost, Published); </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">WriteVerbose(</span><span style="color: maroon">&#034;Posted Successfully.&#034;</span>); </p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
<p><span style="font-size: 10pt; font-family: courier new">} </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/11/24/out-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Email talk on Port25</title>
		<link>http://www.muscetta.com/2006/11/20/email-talk-on-port25/</link>
		<comments>http://www.muscetta.com/2006/11/20/email-talk-on-port25/#comments</comments>
		<pubDate>Mon, 20 Nov 2006 12:06:13 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2006/11/20/email-talk-on-port25/</guid>
		<description><![CDATA[Interesting interview to Eric Allman on Port25. He talks of the future of email, of SenderID, of sendmail&#8230; of openness and interoperation. Very interesting. With the change in licensing of SenderID, let&#039;s how quick this gets picked up by Wietse Venema&#8230;<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://port25.technet.com/archive/2006/11/17/sendmail-sender-id-and-25-years-of-email-sam-interviews-eric-allman.aspx">Interesting interview to Eric Allman on Port25</a>.<br />
He talks of the future of email, of SenderID, of sendmail&#8230; of openness and interoperation.<br />
Very interesting.<br />
With the change in licensing of SenderID, <a href="http://www.imc.org/ietf-mxcomp/mail-archive/msg04103.html">let&#039;s how quick this gets picked up by Wietse Venema</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/11/20/email-talk-on-port25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft-Novell deal</title>
		<link>http://www.muscetta.com/2006/11/05/microsoft-novell-deal/</link>
		<comments>http://www.muscetta.com/2006/11/05/microsoft-novell-deal/#comments</comments>
		<pubDate>Sun, 05 Nov 2006 08:39:24 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=148</guid>
		<description><![CDATA[[aka: Linux is less Free and more O$$ every day] News of this Microsoft-Novell deal are all over the web. I&#039;d like to comment by cross-posting: this post in particular hides a pearl of wisdom: &#034;[...] But what does this mean to the end user?&#160; Probably not very much.&#160; SLED&#160;aficionados will continue to praise Novell [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>[aka: Linux is less Free and more O$$ every day]</p>
<p><a href="http://blogs.zdnet.com/BTL/?p=3878">News of</a> <a href="http://community.zdnet.co.uk/blog/0,1000000567,10004431o-2000331777b,00.htm">this Microsoft-Novell</a> <a href="http://news.com.com/2061-10795_3-6132156.html">deal are</a> <a href="http://www.internetfinancialnews.com/financialblogtalk/news/ifn-6-20061103MicrosoftandNovellViolatetheGPL.html">all over the web</a>.</p>
<p>I&#039;d like to comment by cross-posting: <a href="http://blogs.zdnet.com/BTL/?p=3878">this post</a> in particular hides a pearl of wisdom:</p>
<p><em>&#034;[...] But what does this mean to the end user?&nbsp; Probably not very much.&nbsp; </em></p>
<p><em>SLED&nbsp;aficionados will continue to praise Novell while espousing the virtues of free Linux&nbsp;– pretending all the while&nbsp;that Novell is not just as anxious to turn a profit on enterprise versions of their Linux products as Microsoft is to push its Windows wares.&nbsp; </em> </p>
<p><em>Others in the Linux camp will criticize Novell as a &#039;turncoat&#039; to the Linux movement — never mind that everyone&nbsp;pushing their&nbsp;own Linux distribution is desperately trying to make money off of the open source software movement [...]&#034;</em>  </p>
<p>But this is something you could see a long time ago. I even fell in the trap at the beginning <a href="http://www.muscetta.com/Novell_review.htm">when I started looking at Novell&#039;s move in the Linux and Open Source market</a>&#8230;. but <a href="http://www.zone-h.org/content/view/3512/31/">they did not fool me for long</a>&nbsp;. In the second article&nbsp;I wrote: </p>
<p><em>&#034;[...] There are people who might not like this. I even understand it. An I am not referring to Microsoft. I am referring to people who love and advocate free software. This behavior does not look fair. It looks like the competition to Microsoft is trying to use all possible weapons to regain market, using (and abusing) open source software they did not create in the first place. This might be true, but to those who might not agree, being idealistic about linux&#8230; I have to say that unfortunately the dream of &#039;complete freedom&#039; of software has already vanished. Haven&#039;t you noticed it already ? It would be great, in theory, but talking of IT is rather obviously talking of a market, rather than of just a hobby. And a market is where companies play. After all, RedHat is charging money for its up2date, while WindowsUpdate is still for free&#8230; &#8230;you might say that other distributions don&#039;t charge people for the updates&#8230; but for how long is it really going to last? Companies have stepped in, and they are going to stay. I am not trying in any way to defend their position. I am just making an analysis of this phenomenon. [...]&#034;</em></p>
<p>And that was already three years ago.</p>
<p><a href="http://www.beppegrillo.it/eng/2006/10/adopt_a_penguin.html">Still you get people insisting on free software, and how companies should use it to stop paying Microsoft</a>. Yeah, right. And to start paying IBM or Novell. They&#039;ll always pay someone anyway.</p>
<p>I stepped out of the dream and started working at Microsoft when I realized this.</p>
<p>I also still use FREE-OSS (like Debian or Gentoo Linux Distros) for myself. But companies can&#039;t really depend on those. Their mentality requires them to pay someone to do things. And this is not that terrible. It actually keeps the market going and it gives me a job after all. Why should I despise it ?</p>
<p>It&#039;s a shame that people don&#039;t see things in advance, they sometimes are even hard to figure them out when they are already old. Some other people instead do look around and see things when they are preparing to happen. They are probably those that keep their eye open. Even if not directly related to open source,&nbsp;<a href="http://blogs.msdn.com/roberdan/archive/2006/10/07/Anche-se-mi-pu_2600_ograve_3B00_-far-piacere_2C00_-son-stufo-di-sentirmi-chiamare-_2600_quot_3B00_Visionario_2600_quot_3B00_-_2800_Roberdan_2900_.aspx">Roberdan wrote this concept in Italian here</a>:</p>
<p><em>&#034;[...] ma perchè dicono che ho una visione? perchè sembra che io sappia esattamente come andranno le cose, che veda quello che accadrà tra 1 mese, tra 1 anno o tra 10 anni. Chiaramente dal punto di vista tecnologico, ma anche organizzativo. Avrò quindi poteri soprannaturali?? Sarò un fenomeno paranormale come Alberto Sordi? (e quindi riuscirò a monetizzare questa facoltà mettendomi a fare il santone? <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &#8230;.o SEMPLICEMENTE&#8230; </em></p>
<p><em>Semplicemente ho gli occhi aperti? una bocca e due orecchie per cui ascolto il doppio di quanto parlo? Un istinto non ancora represso e ingabbiato nei meandri della moderna società del lavoro? Secondo me si. </em> </p>
<p><em>Volete essere dei visionari? Aprite gli occhi, non fermatevi a guardare la goccia che cade dal vostro naso, non arrendetevi all&#039;evidenza. Scavate. Se non capite fate domande. Se avete dubbi confrontatevi, SE VOLETE CAMBIARE QUALCOSA CAMBIATELO [...]&#034;</em>  </p>
<p>It&#039;s a shame it is not written in English, but &#8211; hey, he was probably referring to an Italian audience. I love Italy, but Italian readers should really move their asses and learn english. He probably thinks different so he addresses them in writing in Italian&#8230; as of me, I just don&#039;t care anymore (I have probably never&nbsp;done) about those little italians who can&#039;t read english. Those who can&#039;t&nbsp;read my posts in english are probably also the same people that need to be spoon-fed and told everything, those who can&#039;t figure it out themselves. And when they can&#039;t figure it out themselves, that usually also means they take themselves too seriously&#8230; so why bother ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/11/05/microsoft-novell-deal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google has pissed me off this week!</title>
		<link>http://www.muscetta.com/2006/10/07/google-has-pissed-me-off-this-week/</link>
		<comments>http://www.muscetta.com/2006/10/07/google-has-pissed-me-off-this-week/#comments</comments>
		<pubDate>Sat, 07 Oct 2006 08:05:16 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[GMail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hotmail]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Risk]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=142</guid>
		<description><![CDATA[Now I pretty much liked GMail and Google in general. But this time they REALLY pissed me off! I will tell you that I am not a google-hater even if I work for a competing company. Of course not everything that Google does is wonderful, but some of their services are really cool and useful [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Now I pretty much liked GMail and Google in general. But this time they REALLY pissed me off! I will tell you that I am not a google-hater even if I work for a competing company. Of course not everything that Google does is wonderful, but some of their services are really cool and useful and I have never denied to say they rocked when I felt they did. <br />In general, people seem to love them, and their stock value shows it (with the launch of &#034;Code Search&#034; this week <a href="http://asert.arbornetworks.com/2006/10/static-code-analysis-using-google-code-search/">they made a lot of people scream &#034;how cool is this&#034;</a> so that they got back from&nbsp;just under 400&nbsp;dollars to 417!). But that&#039;s not the issue. That is cool, that works. It&#039;s ok they make money if they make cool tools. It&#039;s fine for me. </p>
<p>In fact i consider GMail&nbsp;as being&nbsp;one of the best interface for reading mail that exist&nbsp;out there &#8211; I love &#034;tagging&#034; (oops: it&#039;s called &#034;labelling&#034; in their syntax), speed of search through messages (even tough Outlook 2007 is faster on indexed content, but still you have to buy it and install it on your PC)&#8230; I also especially love the way it shows THREADING&#8230; so that I moved pretty much EVERY mailing list I read on their account: </p>
<p><a title="Photo Sharing" href="http://www.flickr.com/photos/dani3l3/262797621/"><img height="193" alt="Ma come se fa ?" src="http://static.flickr.com/96/262797621_6754165d10.jpg" width="500"/></a> <br />(ok, they could do better with the localized version of &#034;Re:&#034; in replies&#8230;. in Italian a lot of broken MUA&#039;s translate that into &#034;R:&#034; and that isn&#039;t understood by GMail and will make it think it is another thread&#8230;. but that&#039;s a minor issue, and also one that every MUA handling threading has &#8211; including &#034;mutt&#034; &#8211; the real problem is the broken MUAs sending the &#034;R:&#034; in the first place. But&nbsp;I digress too much&#8230;.).</p>
<p>I also keep GMail continuosly opened in a browser during the day because a lot of informative mail and that sent by friends goes there.&nbsp;This to say that&nbsp;I <strong>do</strong> get a lot of their ads (that is &#8211; the point of having such an application, for them&#8230;). <a href="http://mailcall.spaces.live.com/blog/cns!CC9301187A51FE33!4043.entry?_c11_blogpart_blogpart=blogview&amp;_c=blogpart#permalink">On the contrary, Windows Live Mail reduced its ads to show only one&#8230; not to annoy you too much</a>. <br />But the ads in GMail were not *really* a problem (I don&#039;t read them anyway, I just plain IGNORE THEM).</p>
<p>But&nbsp;this week they REALLY pissed me off. They REALLY have. And here is the reason: <br />I have been using a script for MONTHS to backup my database (the one powering THIS blog) and send it &#034;off-site&#034; to my GMail mailbox. Pretty much something like a lot of other people do, described in various <a href="http://www.varlinux.org/vl/html/modules/stories/article.php?storyid=6920">articles</a> and <a href="http://blog.netnerds.net/2006/04/backup-wordpress-to-gmail/">blog posts</a>. Then I was labelling them with a rule, so that I could access my backups easily in case I needed them.</p>
<p>Now I don&#039;t know if this violates their <a href="http://mail.google.com/gmail/help/terms_of_use.html">terms of use</a> in any way&#8230; because I am not really using it as storage with those programs that circulated at one stage that had &#034;reverse engineered&#034; it. Those were bypassing the web interface altogether so people did use it as storage with a program without having to see their ads. That was the issue, I think.&nbsp;In my case,&nbsp;I am just sending MAILS to myself. One per day. I also delete the old ones every now and then, and they are not even huge in sized (attachments of 40 to 50KB so far!!)&#8230; anyway, I know a lot of people that store documents and all sort of stuff even in their corporate mailboxes in Outlook (then maybe index them with <a href="http://www.microsoft.com/windows/desktopsearch/default.mspx">Windows Desktop Search</a> of Google Desktop to find it back)&#8230; I was only doing the same with GMail. I don&#039;t see the big issue here&#8230;.. they might think otherwise&#8230;. but from what happens I don&#039;t think that&#039;s the issue.</p>
<p>Anyway, now it&#039;s been three or four days that my backup mail gets rejected. My SMTP Server gets told: </p>
<p>host gmail-smtp-in.l.google.com[66.249.83.27] said: <br /><em>550-5.7.1 Our system has detected an unusual amount of unsolicited<br />550-5.7.1 mail originating from your IP address. To protect our <br />550-5.7.1 users from spam, mail sent from your IP address has been <br />550-5.7.1 rejected. Please visit <br />550-5.7.1 <a href="http://www.google.com/mail/help/bulk_mail.html">http://www.google.com/mail/help/bulk_mail.html</a> to review <br />550 5.7.1 our Bulk Email Senders Guidelines. <br /></em></p>
<p>Now for fuck&#039;s sake. You know how much I hate SPAMMERS and <a href="http://www.43things.com/things/view/13248">what I would like to do with them</a>. But I also know that it does happen to end up in RBLs and such sometimes. Fine. But&nbsp;GIVE ME&nbsp;a way to tell you that I am NOT one!&nbsp;If you go to the link above, all you find is a form where you can specify that mail that ended up in your &#034;junk&#034; folder actually wasn&#039;t spam. Yeah, right.&nbsp;In my case it does not even go into my &#034;junk&#034; folder! How am I supposed to give me the original header that arrived to THEM if I only have the one sent by my mailserver ? They just blacklisted my mail server&#039;s IP Address! As they say, I even have an SPF record, I always use the same address, etc&#8230;. <br />So I tried to fill in the form, the day after I also tried to contact their <a href="mailto:abuse@google.com">abuse@google.com</a> and <a href="mailto:abuse@gmail.com">abuse@gmail.com</a> addresses. <br />Still nothing. <br />They even tell you (in the automated reply when you contact &#034;abuse&#034;: <br /><em>&#034;[...] For privacy and security reasons, we may not reveal the final outcome of an abuse case to the person who reported it. [...]&#034;.<br /></em>How great. How am I supposed to know if they even READ my complaint ? </p>
<p>You anti-spam people at GMail: <strong>&#034;I am NOT a fucking spammer!!!!!&#034;</strong>. I &#039;haven&#039;t found a better way to tell ya this, you know, than writing it on my blog&#8230; this is just RIDICULOUS!</p>
<p>But to date my mails still get dropped. I&#039;ll probably have to send my backups somewhere else. At this point they pissed me off so much that I am also seriously considering getting back to use my own mailserver also for receiving and reading my mailing lists. Then I won&#039;t get ads there. <br />Afzetterij! <br />(I hope you have some dutch guy on board at Google, as &#034;Google Translate&#034; does not translate from/to dutch yet&#8230;. )</p>
<p>
<strong>Edited on October, 8th </strong>- While GMail REJECTS those mails (it SAYS it is not accepting them), Hotmail simply DROPS them (that is: it does not even SAY it is not accepting them): </p>
<p><em>to=<dani3l3 @hotmail.com>, relay=mx4.hotmail.com[65.54.245.104], delay=3, status=sent (250  &lt;20061008061010.GA19807@muscetta.com> Queued mail for delivery)</dani3l3></em></p>
<p>This way you THINK it is going to be delivered, but it NEVER shows up in your inbox. I don&#039;t know who&#039;s behaving the worst&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/10/07/google-has-pissed-me-off-this-week/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Human-size fits all (of work vs. relaxing)</title>
		<link>http://www.muscetta.com/2006/09/09/human-size-fits-all-of-work-vs-relaxing/</link>
		<comments>http://www.muscetta.com/2006/09/09/human-size-fits-all-of-work-vs-relaxing/#comments</comments>
		<pubDate>Sat, 09 Sep 2006 14:31:48 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Choice]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2006/09/09/human-size-fits-all-of-work-vs-relaxing/</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; } .flickr-yourcomment { } .flickr-frame { text-align: left; padding: 3px; } .flickr-caption { font-size: 0.8em; margin-top: 0px; } Black Tea, uploaded by Daniele Muscetta on Flickr. Finally the first complete weekend. After four weeks of holidays, I had pretty much got used to relax and do my stuff. On [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">
.flickr-photo { border: solid 2px #000000; }
.flickr-yourcomment { }
.flickr-frame { text-align: left; padding: 3px; }
.flickr-caption { font-size: 0.8em; margin-top: 0px; }
</style>
<div class="flickr-frame">
	<a href="http://www.flickr.com/photos/dani3l3/238356801/" title="photo sharing"><img src="http://static.flickr.com/86/238356801_8594ef4746.jpg" class="flickr-photo" alt="Black tea" /></a><br />
<br />
	<span class="flickr-caption"><a href="http://www.flickr.com/photos/dani3l3/238356801/">Black Tea</a>, uploaded by <a href="http://www.flickr.com/people/dani3l3/">Daniele Muscetta</a> on Flickr.</span>
</div>
<p class="flickr-yourcomment">
	Finally the first complete weekend.<br />
After four weeks of holidays, I had pretty much got used to relax and do my stuff.<br />
On monday 28th I started working. I worked the usual 5 days, and customers were waiting for me anxiously. I also had to work on friday night for some updates they had waited six months to do (when I was telling them &#034;let&#039;s do this&#034;) but they could not wait anymore NOW obviously.<br />
Then, late friday night I had weekend&#8230; sort of. Just saturday.<br />
In fact, I had to be ready to leave early sunday morning to go to the &#034;company meeting&#034;. Sunday and monday. Awesome. Not.<br />
Tuesday to friday: work, work, work again.</p>
<p>Not THIS weekend I am doing MY stuff, actually trying to relax.<br />
That&#039;s more my cup of tea.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/09/09/human-size-fits-all-of-work-vs-relaxing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Vista 5472</title>
		<link>http://www.muscetta.com/2006/08/21/windows-vista-5472/</link>
		<comments>http://www.muscetta.com/2006/08/21/windows-vista-5472/#comments</comments>
		<pubDate>Mon, 21 Aug 2006 14:25:09 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2006/08/21//</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; } Cool. Transparency in this RC1 build finally works on my laptop. I mean, even with a DECENT resolution. Everything is much more stable than in the previous beta1 and beta2 builds. And yes, the background image [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">  .flickr-photo { border: solid 2px #000000; }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/221044841/"><img src="http://static.flickr.com/81/221044841_08cc5ee2f3.jpg" alt="Vista_AeroGlass_Desktop_5472_02" class="flickr-photo" /></a></p>
<p class="flickr-frame">Cool. Transparency in this RC1 build finally works on my laptop. I mean, even with a DECENT resolution.<br />
Everything is much more stable than in the previous beta1 and beta2 builds.
</p>
<p class="flickr-yourcomment">And yes, the background image I am using is <a href="http://www.flickr.com/photos/dani3l3/214246019/">this photo of mine</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/08/21/windows-vista-5472/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post from Windows Live Writer</title>
		<link>http://www.muscetta.com/2006/08/20/post-from-windows-live-writer/</link>
		<comments>http://www.muscetta.com/2006/08/20/post-from-windows-live-writer/#comments</comments>
		<pubDate>Sun, 20 Aug 2006 19:55:42 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=128</guid>
		<description><![CDATA[This is a test post written from Windows Live Writer Beta!! Now&#8230; maybe it&#039;s just me&#8230; I have refused to use editors to post to my blog in the past and kept sticking with the default web interface&#8230; but this one looks very nice!<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>This is a test post written from <a href="http://windowslivewriter.spaces.live.com/">Windows Live Writer</a> Beta!! Now&#8230; maybe it&#039;s just me&#8230; I have refused to use editors to post to my blog in the past and kept sticking with the default web interface&#8230; but this one looks very nice!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/08/20/post-from-windows-live-writer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Much ado about Files Screening in R2</title>
		<link>http://www.muscetta.com/2006/07/08/much-ado-about-files-screening-in-r2/</link>
		<comments>http://www.muscetta.com/2006/07/08/much-ado-about-files-screening-in-r2/#comments</comments>
		<pubDate>Sat, 08 Jul 2006 18:33:24 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=124</guid>
		<description><![CDATA[File Screening in Windows 2003 R2 can be circumvented, but this isn&#039;t that terrible, IMHO, and I&#039;ll explain you why. You might be wondering what the heack am I talking about. I am referring to what&#039;s written in this blog post (an old one) that I spotted only today. Here the author is referring to [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>File Screening in <a href="http://www.microsoft.com/windowsserver2003/r2launch.mspx">Windows 2003 R2</a> can be circumvented, but this isn&#039;t that terrible, IMHO, and I&#039;ll explain you why.<br />
You might be wondering what the heack am I talking about. I am referring to what&#039;s written in <a href="http://www.techlog.nl/archive/2006/01/26/r2_file_screening_functionalit">this blog post (an old one) that I spotted only today</a>. Here the author is referring to <a href="http://blogs.technet.com/matthewms/archive/2006/01/23/417963.aspx">a MS Blog also mentioning a post about the fact that file screening in R2 can be circumvented</a>.</p>
<p>Yes it can be circumvented, BUT&#8230; there are seveal &#034;but&#034;s I can say; In fact, I have been presenting Windows 2003 R2 to several customers and I got asked this question several times, and I usually explain this in the following way: </p>
<p>first, it would be too heavy of a performance hit to get and check the real &#034;nature&#034; of a file, rather than just its file name.<br />
Also: how would you technically do that ? Checking some headers in the file ? In this case you would need to mantain a database of known file types, keeping it up to date as new versions of that file format appear&#8230;<br />
and then what about executables which have been passed through a &#034;packer&#034;<br />
(one of those utility that effectively shrinks them while mantaining them executable) ?<br />
What about encrypted files ? What about&#8230; ?? It just doesn&#039;t plain work. Just like many other signature-based detection mechanisms (Antivirus or IDS). Or at least, to KEEP working needs to be constantly updated (or be useless).</p>
<p>The file screening thing is not meant to be impossible to circumvent, rather is a way of saying to the user that he/she&#039;s not allowed to place that content there, to get notified about that, to get this information TRACKED somewhere possibly&#8230;.<br />
Of course this can be circumvented. But is not going to be very practicle, especially when your users are USERS and are restricted so that they can&#039;t associate new extention to be opened from within their media player as you are suggesting&#8230;.</p>
<p>Moreover, file screeing is just ONE of many features of the component called &#034;File Server Resource Manager&#034; in Windows 2003 R2. Those features are meant to be used altogether: So, for example, while a user COULD circumvent the restriction and copy &#034;.mp3&#034; files by calling them &#034;.xyz&#034;, but then with the useful reporting an admin would very easily spot them by looking at those directory that strangely contain a lot of &#034;.xyz&#034; files that happen to be roughly 5MB in size (all of them)&#8230;<br />
In the same way by using the reporting feature you could see those huge &#034;.doc&#034; files are actually divx by looking at the &#034;large files&#034; report &#8211; how many pages would you have written to get that Word document up to 700MB ?? It can&#039;t be the usual letter Mary writes, it looks a lot more like the size of Encarta&#8230; something is then fishy about it.</p>
<p>You get what I mean ? It won&#039;t block the user ALL the times, but it will still drastically reduce the user abilty to waste our space, and if implemented with the proper controls and procedures and preocesses (think ITIL) in place, this can still be a valuable tool.</p>
<p>(I also posted this answer as a comment on the above-mentioned blog).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/07/08/much-ado-about-files-screening-in-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>what you need to do is throw away you batch file and start over in this new language&#8230;</title>
		<link>http://www.muscetta.com/2006/06/28/what-you-need-to-do-is-throw-away-you-batch-file-and-start-over-in-this-new-language/</link>
		<comments>http://www.muscetta.com/2006/06/28/what-you-need-to-do-is-throw-away-you-batch-file-and-start-over-in-this-new-language/#comments</comments>
		<pubDate>Wed, 28 Jun 2006 09:36:47 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=122</guid>
		<description><![CDATA[Mainly a cross post to say &#034;me too!&#034; or &#034;I agree completely!&#034;. I am referring to this blog post: &#034;[...] For example, in response to &#034;How do I write a batch file that&#8230;&#034; some people will say, &#034;First, install &#034;. This doesn&#039;t actually solve the problem; it merely replaces it with a different problem. In [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Mainly a cross post to say &#034;me too!&#034; or &#034;I agree completely!&#034;.<br />
I am referring to <a href="http://blogs.msdn.com/oldnewthing/archive/2006/03/22/558007.aspx">this blog post</a>: </p>
<p>&#034;[...]<br />
For example, in response to &#034;How do I write a batch file that&#8230;&#034; some people will say, &#034;First, install
<perl |bash|monad|...>&#034;. This doesn&#039;t actually solve the problem; it merely replaces it with a different problem.<br />
In particular, if the solution begins with &#034;First, install&#8230;&#034; you&#039;ve pretty much lost out of the gate. Solving a five-minute problem by taking a half hour to download and install a program is a net loss.<br />
[...]<br />
So be careful when you suggest a solution that has a high activation energy. Sure, something could be taken care of by a one-line perl script, but getting perl onto the machine is hardly a one-line endeavor.<br />
[...]&#034;</p>
</perl>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/06/28/what-you-need-to-do-is-throw-away-you-batch-file-and-start-over-in-this-new-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&quot;Many Eyes Make All Bugs Shallow&quot; &#8211; UpsideDown</title>
		<link>http://www.muscetta.com/2006/06/09/many-eyes-make-all-bugs-shallow-upsidedown/</link>
		<comments>http://www.muscetta.com/2006/06/09/many-eyes-make-all-bugs-shallow-upsidedown/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 11:32:50 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Interop]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=116</guid>
		<description><![CDATA[An interesting interpretation of the &#034;Many Eyes Make All Bugs Shallow&#034; maxim gets given on Jeff Jones&#039; Blog at http://blogs.technet.com/security/archive/2006/06/07/433813.aspx. Only this time the sentence gets applied to Microsoft products, rather than to OSS&#8230;&#8230; Interesting<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>An interesting interpretation of the &#034;Many Eyes Make All Bugs Shallow&#034; maxim gets given on Jeff Jones&#039; Blog at <a href="http://blogs.technet.com/security/archive/2006/06/07/433813.aspx">http://blogs.technet.com/security/archive/2006/06/07/433813.aspx</a>.</p>
<p>Only this time the sentence gets applied to Microsoft products, rather than to OSS&#8230;&#8230; Interesting <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/06/09/many-eyes-make-all-bugs-shallow-upsidedown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browser Wars: a new (IE) hope</title>
		<link>http://www.muscetta.com/2006/04/28/browser-wars-a-new-ie-hope/</link>
		<comments>http://www.muscetta.com/2006/04/28/browser-wars-a-new-ie-hope/#comments</comments>
		<pubDate>Fri, 28 Apr 2006 15:19:01 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Funny]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=107</guid>
		<description><![CDATA[Scoble points out this funny comic parodia: &#034;Browser Wars: a new (IE) hope&#034;. ROTFL. I&#039;m cracking up laughing.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://scobleizer.wordpress.com/2006/04/26/c9park-funny-cartoon-series-continues/">Scoble</a> points out <a href="http://channel9.msdn.com/ShowPost.aspx?PostID=185793">this funny comic parodia: &#034;Browser Wars: a new (IE) hope&#034;.</a><br />
ROTFL.<br />
I&#039;m cracking up laughing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/04/28/browser-wars-a-new-ie-hope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dusting my feeds</title>
		<link>http://www.muscetta.com/2006/04/18/dusting-my-feeds/</link>
		<comments>http://www.muscetta.com/2006/04/18/dusting-my-feeds/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 20:15:16 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[Trips]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=102</guid>
		<description><![CDATA[For easter I have been going around in nice places, seen historical buildings in Rome that have just been restructured, and visited some archeological etrurian sites. Today, for the first time in months, I had some time to go through several unread posts in several of the blogs and sites that I keep in my [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>For easter I have been going around in nice places, <a href=http://www.43places.com/places/view/642610>seen historical buildings in Rome that have just been restructured</a>, and visited <a href=http://www.43places.com/places/view/644673>some archeological etrurian sites</a>.</p>
<p>Today, for the first time in months, I had some time to go through several unread posts in several of the blogs and sites that I keep in <a href=http://www.rssbandit.org>my aggregator</a>.<br />
Some random things I found interesting (not all, just some &#8211; maybe I should consider sharing links with stuff like <a href=http://del.icio.us/>delicious os similar&#8230;.):</p>
<p><a href=http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=929a7fd6-1dfc-43f4-a549-d2c9fa873655>Dare&#039;s comment of simplicity</a> (I oversimplify it now, but I really like his comments: this is not the first, won&#039;t be the last, good good, I enjoy them, I really do). Here is the part I liked most:<br />
<em>&#034;[...] how one should build RESTful applications is actually different from how the Web works. Few web applications support HTTP methods other than GET and POST, few web applications send out the correct MIME types when sending data to clients, many Web applications use cookies for storing application state instead of allowing hypermedia to be the engine of application state (i.e. keeping the state in the URL)<br />
and in a suprisingly large number of cases the markup in documents being transmitted is invalid or malformed in some ways. However the Web still works. [...]&#034;<br />
</em></p>
<p><a href=http://scobleizer.wordpress.com/2006/04/15/halfway-through-my-blog-vacation-change-in-comment-policy/>Scoble (and others) talking of relaxing, <a href=http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=c88cd703-2ae7-4bef-a712-22a28d87d690>simplyfying your life</a>, taking it easy, <a href="http://scobleizer.wordpress.com/2006/04/18/information-overload/">disconnect, unsubscribe from mailing lists</a>, etc.<br />
Sure, I know what it means. The problem for me is that information IS addictive, so even if I leave the<br />
information flow go for a while (because I&#039;m too busy actually *working*, for example), after a while I feel the urge to catch up. Like today.</p>
<p>Another interesting thing I read today is <a href=http://blogs.technet.com/jesper_johansson/archive/2006/04/17/425454.aspx>Jesper Johansson blog post about a discussion on risk management with his son</a>.<br />
Quite amusing, it happens to do some of those discussions with my kids as well, sometimes.<br />
Well, really, so far only with the older one of my two kids, of course, since <a href=http://blogs.msdn.com/dmuscett/archive/2005/01/06/347523.aspx>the younger one IS THE threat/risk himself</a> <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Another useful thing I found out today is that <a href=http://msdn.microsoft.com/vbrun/staythepath/AdditionalResources/default.aspx>some VB.Net books are available for download in PDF format</a>. Nice.</p>
<p>Then I figured out <a href=http://blogs.msdn.com/arpans/archive/2006/04/14/576432.aspx>my most excellent colleague Luca Bandinelli had been mentioned by Arpan Shah</a>, so I told him that, and he asked me &#034;why are you looking for my name on the Internet?&#034;. No, really, the honest answer to this is that I was already subscribed to <a href=http://blogs.msdn.com/arpans/Rss.Aspx>Arpan&#039;s blog</a>, again.</p>
<p>Coming back home I saw a wonderful rainbow on top of Albano&#039;s lake, ranging from one side to the other, but of course I did not have my camera with me <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /><br />
I&#039;ve heard once in India that seeing a rainbow has to be considered a blessing. Well, in this case this was a HUGE one <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>On a side note, while dusting my feeds <a href=http://www.baravalle.it/phpGrabComics/modules.php>I also found out why I could not get updates on my beloved &#034;Calvin &#038; Hobbes&#034; strip</a>.<br />
Since the original site has apparently asked not to redistribute those strips, I suspect I will have to set up my own copy of <a href="http://phpgrabcomics.org/">phpGrabComics</a> to get that. I probably will.</p>
<p>Well, now I am going to watch <a href=http://channel9.msdn.com/ShowPost.aspx?PostID=182857>this video on MOM</a>, then collapse <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Night!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/04/18/dusting-my-feeds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here&#039;s another one&#8230;</title>
		<link>http://www.muscetta.com/2006/04/02/heres-another-one/</link>
		<comments>http://www.muscetta.com/2006/04/02/heres-another-one/#comments</comments>
		<pubDate>Sun, 02 Apr 2006 06:47:31 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Funny]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=99</guid>
		<description><![CDATA[..who forgot that yesterday it was April&#039;s Fool: Stepto. Well, I don&#039;t feel alone in forgetting about things, at least &#8230;<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>..who forgot that yesterday it was April&#039;s Fool: <a href="http://www.stepto.com/default/log/displaylog1.aspx?ID=219">Stepto</a>.<br />
Well, I don&#039;t feel alone in forgetting about things, at least &#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/04/02/heres-another-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr Story</title>
		<link>http://www.muscetta.com/2006/03/11/flickr-story/</link>
		<comments>http://www.muscetta.com/2006/03/11/flickr-story/#comments</comments>
		<pubDate>Sat, 11 Mar 2006 19:00:20 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=97</guid>
		<description><![CDATA[Haven&#039;t posted in a while, and won&#039;t write much this time either. The truth is that I have been too busy lately &#8211; working, family, and beta testing Windows Vista. But that&#039;s another story and I might have time to tell yuo that another time I get time and will to blog. What I wanted [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Haven&#039;t posted in a while, and won&#039;t write much this time either. The truth is that I have been too busy lately &#8211; working, family, and <a href="http://www.microsoft.com/windowsvista/default.aspx">beta testing Windows Vista</a>. But that&#039;s another story and I might have time to tell yuo that another time I get time and will to blog.</p>
<p>What I wanted to write now, instead, is a link to an <a href="http://www.usatoday.com/tech/products/2006-02-27-flickr_x.htm?POE=TECISVA">article</a> I just read and wanted to share, which is quite interesting as it tells a bit of the <a href="http://www.usatoday.com/tech/products/2006-02-27-flickr_x.htm?POE=TECISVA">story of how Flickr has born</a>. Quite interesting.</p>
<p>Especially, the two things I linked here make you think of the &#034;top-down&#034; vs. &#034;bottom-up&#034; kind of approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/03/11/flickr-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where did you want to go that day ?</title>
		<link>http://www.muscetta.com/2006/01/21/where-did-you-want-to-go-that-day/</link>
		<comments>http://www.muscetta.com/2006/01/21/where-did-you-want-to-go-that-day/#comments</comments>
		<pubDate>Sat, 21 Jan 2006 20:34:06 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[tram]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/2006/01/21//</guid>
		<description><![CDATA[.flickr-photo { border: solid 2px #000000; }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; } This is very old photo (1997). It actually is composed of TWO photos that have been first scanned and then photoshopped together to get the whole tram &#034;rebuilt&#034;. Still like it though.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<style type="text/css">    .flickr-photo { border: solid 2px #000000; }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }</style>
<p class="flickr-frame"><a href="http://www.flickr.com/photos/dani3l3/89382893/"><img src="http://static.flickr.com/19/89382893_ead58eb9ec.jpg" alt="Microsoft Tram" class="flickr-photo" /></a></p>
<p class="flickr-yourcomment">This is very old photo (1997). It actually is composed of TWO photos that have been first scanned and then photoshopped together to get the whole tram &#034;rebuilt&#034;.<br />
Still like it though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/21/where-did-you-want-to-go-that-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr to MSN Spaces now WORKS!</title>
		<link>http://www.muscetta.com/2006/01/15/flickr-to-msn-spaces-now-works/</link>
		<comments>http://www.muscetta.com/2006/01/15/flickr-to-msn-spaces-now-works/#comments</comments>
		<pubDate>Sun, 15 Jan 2006 09:42:27 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=92</guid>
		<description><![CDATA[What I was complaining about in this post is now solved and you can finally post to your MSN Spaces blog your flickr photos! Dare explains here how to set it up.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>What I was complaining about <a href="http://www.muscetta.com/2006/01/08/flickr-to-blog-to-msn-spaces/trackback/">in this post</a> is now solved and you can finally post to your <a href="http://spaces.msn.com">MSN Spaces</a> blog your flickr photos!<br />
<a href="http://www.25hoursaday.com/weblog/Trackback.aspx?guid=69c76437-d015-49ed-b381-3d798c1705b4">Dare explains here</a> how to set it up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/15/flickr-to-msn-spaces-now-works/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ufficio del Registry</title>
		<link>http://www.muscetta.com/2006/01/14/ufficio-del-registry/</link>
		<comments>http://www.muscetta.com/2006/01/14/ufficio-del-registry/#comments</comments>
		<pubDate>Sat, 14 Jan 2006 11:38:20 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Funny]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=91</guid>
		<description><![CDATA[[WARNING: This won't make you laugh if you are not italian. Nonethless I'll try to explain it in english, why it is funny for an italian] I was searching for the &#034;public registry&#034; on MSN Search, the public registry being the office where houses are registrered, so you can search for their history, when they&#039;ve [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>[<strong>WARNING:</strong> This won't make you laugh if you are not italian. Nonethless I'll try to explain it in english, why it is funny for an italian]</p>
<p>I was searching for the &#034;public registry&#034; on <a href="http://search.msn.com">MSN Search</a>, the public registry being the office where houses are registrered, so you can search for their history, when they&#039;ve build, who owns them, if there are pending mortages on them, and so on.<br />
Of course the word I wrote &#034;REGISTRO&#034; is the correct Italian term for &#034;registry&#034;. The only use of the word &#034;registry&#034; (in english) by an italian would be for one reason: he knows about IT, and Windows,  and yes! he refers to the windows registry, the ocnfiguration database.</p>
<p>So it looked rather funny (but it makes sense, because I use english settings and not italian ones when using <a href="http://search.msn.com">MSN Search</a> ) to get this suggestion:</p>
<p><img alt="Ufficio del Registry" src="http://www.muscetta.com/images/ufficiodelregistry2.JPG" /></p>
<p>it sounds pretty much a kind of office that should exist in Microsoft somehwere&#8230;  &#034;office of the Registry&#034;&#8230;<br />
which <a href="http://windowsir.blogspot.com/2005/12/registry-reference_23.html">could even be useful to someone</a>, to have an &#034;office of the registry&#034;&#8230; sure that would hold the complete list of keys&#8230;.</p>
<p>&#8230; sorry, just being silly today <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/14/ufficio-del-registry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dare&#039;s New Year Resolutions (my open letter about those)</title>
		<link>http://www.muscetta.com/2006/01/10/dares-new-year-resolutions-my-open-letter-about-those/</link>
		<comments>http://www.muscetta.com/2006/01/10/dares-new-year-resolutions-my-open-letter-about-those/#comments</comments>
		<pubDate>Tue, 10 Jan 2006 20:33:44 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Risk]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=89</guid>
		<description><![CDATA[Dare Obasanjo writes his proposition for this year that just began. I don&#039;t personally know you, Dare, but I am a voracious reader of your blog, and I respect and estimate you a lot&#8230; so I thought I&#039;ll comment some of your thoughts here (hope you don&#039;t mind, and I hope the trackback works ). [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.25hoursaday.com/weblog/Trackback.aspx?guid=b4dc0d05-a257-4ec5-87b0-95cbce28a14e">Dare Obasanjo writes his proposition for this year that just began</a>.</p>
<p>I don&#039;t <strong>personally</strong> know you, Dare, but I am a voracious reader of your blog, and I respect and estimate you a lot&#8230; so I thought I&#039;ll comment some of your thoughts here (hope you don&#039;t mind, and I hope the trackback works <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). I&#039;ll do it because your writings often make me think, because I do have similar thoughts, because I feel like writing some more than a comment this time.</p>
<p><em><strong>1) [...] learn a new programming language: [...]</strong></em></p>
<p>Sure, why not ?<br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94082d26-e689-4f7f-859b-fec6dacf3ae8&#038;DisplayLang=en">IronPython</a> interests me too. Of course Python is widely used, a porting on .Net is interesting&#8230; but we need to see where it will end up in practice&#8230;<br />
This kind of ports are always a bit whacky, IMHO&#8230; I read in the release notes: &#034;[...] Most of the standard Python library is not currently implemented, so it is unlikely that many existing Python scripts will run successfully under this release of IronPython 1.0 Beta [...]&#034;<br />
Right, I mean&#8230; this cross platform ports of stuff is always deluding in one or another way&#8230;. to me, at least.<br />
I was also excited about MONO so I could run my C# (and ASP.Net) stuff on Linux for example&#8230; and yeah what they have done IS impressive, as some stuff simply works out of the box (I&#039;ve got <a href="http://blogs.msdn.com/dmuscett/archive/2005/09/27/SharePoint_Unortodox_RSS_Feed.aspx">the small standalone application I described on my other blog (the risky one)</a> compiled on Windows, then copied it and I&#039;m running that off my linux server, for example, without much trouble&#8230; ) but you always need to be very careful about what references you use in your projects as not everything is implemented and will actually work&#8230;<br />
Also, setting up mod_mono on Apache has been a pain and even once it is set up it is nowhere as flexible as using Visual Studio with IIS6&#8230;.<br />
So this kind of cross-porting is definitely INTERESTING, often in an achademic sense, but we&#039;ll see what happens about real usage (and usability) of these solutions&#8230;.</p>
<p>If you want something really different, though, I would suggest taking a look at Ruby / Rails. It might piss off some more people (see resolution #4), so be warned&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p><em><strong>2) [...]Write More Articles: [...]</strong><br />
[...] Looking back on various articles I&#039;ve written it&#039;s clear that since joining MSN and getting a new girlfriend my output has reduced. I only wrote two articles last year compared to a minimum of five or six in previous years. [...]</em></p>
<p>Sure since I got in Microsoft I have the same. It&#039;s not Microsoft&#039;s fault, but I&#039;ve got a couple of ideas about a number of reasons why this happens:</p>
<ol>
<li>
Some stuff you do is confidential, so you simply can&#039;t talk about it (even though some people on the very blogs.msdn.com seem to be writing about those anyway all the times: &#034;not yet published KB articles&#034;, for example IS confidential information last time I checked&#8230;. I might be wrong on this one, and I won&#039;t link to anyone nor say names to protect the innocents <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  But I&#039;ve noticed this behavious several times&#8230;)
</li>
<li>
Some other stuff would <strong>only</strong> be your opinion, but working at Microsoft your opinion can be misinterpreted/misquoted/used against you and the company.. so troubles also there. In fact, I was free to just get an idea and blog about it without getting all troubled about who reads that and what would they think about that, and&#8230; whatever including what I am saying in this very list. Examples: I was interviewing people in the security community, writing about open source things&#8230; all stuff I now think twice before doing. Sometimes even thinking twice is not enough, and I should think three times&#8230;
</li>
<li>
Sometimes <a href="http://scobleizer.wordpress.com/2006/01/02/where-are-microsofts-bloggers/">there might be unwritten rules about WHO has got the authority to blog/write about some topic so people tend to shut u</a>p in that case too. But they might be right, when there&#039;s people with authority let <strong>them</strong> speak&#8230;
</li>
<li>
Some other times you solved a problem but I feel it is just not interesting enough, and that it more or less IS already documented (this happens in my case, not sure about you).  When the documentation IS out there is a very good point. In fact, many times I find a lot more stuff on the public web by using <a href="http://www.google.com">Google</a> or <a href="http://search.msn.com">MSN Search</a> on site:microsoft.com rather than by searching on the internal KB. This is actually very good of Microsoft, and there are A LOT of resources out there in the open with pretty much everything you need to know to solve your problems&#8230; in general, our documentation rocks, so why bother solving *and writing about) obscure problems ? Some colleague has already done it most of the times!<br />
Of course this is not always the case, and sometimes stuff are not documented, and in the latter case&#8230; well,  you can usually go back to #1 in this list&#8230;. (I&#039;ve got specific examples here, but they are confidential&#8230;)
</li>
<li>
The TIME element is an interesting thing: at Microsoft I work more than I did in other places.  This does not mean Microsoft makes me work too much. I actually enjoy being busy, and my idea about this is that  you work more in general when on the vendor side of the IT market. I was working a lot in my previous jobs, then I have been less busy when I passed to the &#034;customer&#034; side or fence for a couple of years, and I was actually getting a little bored, and that&#039;s part of why I changed. Being on the vendor side (especially in Services) you are supposed to be the expert and face the customers everyday&#8230;. so you need to study more, be prepared.<br />
Also, I am very busy with my family lately (you might be with your girlfirend just as much, since you mention her <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). This issue is of course personal, but since I moved back to my own country I need to do a lot more out of work too to help out my wife while she learns the language&#8230;
</li>
</ol>
<p>Some of the above reasons (those related to your work at least) might explain why <a href="http://blogs.msdn.com/dareobasanjo/archive/2005/06/06/425830.aspx">you decided to move your blog to a private domain from blogs.msdn.com</a><br />
I have had a private blog (this one) way before even joining Microsoft. Then when I got in, I got the idea that a corporate one would be cool&#8230; but then with it comes a big responsibility as you are under a &#034;flagship&#034; site, really. Sure, everybody knows who you are anyway, but it is less&#8230; you get what I mean. In fact I feel better writing &#034;at home&#034; (but that would be better said in the &#034;resolution number 4&#034;, below&#8230;).<br />
Of course some other reasons might be the case for you, I don&#039;t know.</p>
<p><em><strong>3) [...] Come Up With New Career Goals:[...] </strong><br />
[...]When I was in school, my dream was to become a well-known technology guru like Don Box or Scott Meyers then get paid consulting gigs to be the hero that comes in to fix peoples problems and tell them how to build their software. Since then, I&#039;ve seen a lot of the people who I once idolized end up working in the b0rg cube. In conversations with Don Box, he&#039;s mentioned that the life isn&#039;t as glamorous as I assumed.[...]&#034;</em></p>
<p>You know, he&#039;s probably right&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p><em>&#034;[...] It&#039;s going to be time for my mid-year review and discussion with my boss in a couple of weeks. I hope I have a clearer idea where I want to go by then [...]&#034;</em></p>
<p>That is an issue, I never know what to say in those reviews anyway&#8230; I should work on that too&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p><em><del datetime="2006-01-07T14:09:41+00:00"><strong>4) [...] Piss of Less People with my Writing: [...]</strong></del><br />
[...]Whatever. I&#039;ve already gotten two angry emails from different folks at work about stuff I&#039;ve written online and it isn&#039;t even the first week of the year. Maybe next year. <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  [...]</em></p>
<p>Welcome to the club <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Oh well, look at the comments you received on your blog about it <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  That should bring your morale up a bit&#8230;.<br />
That&#039;s happening to everybody, especially when you don&#039;t conform to just repeating their pre-made speeches and just use your mind and speak out your own ideas.<br />
See the examples I mentioned about refraining from writing some stuff at point #2&#8230; </p>
<p>Or in general what does happen might be due to the <a href="http://www.25hoursaday.com/weblog/Trackback.aspx?guid=0bac11db-fb68-4053-9e21-fa3f1a978a01">company that you feel like being a Dinosaur</a> (a question: did <a href="http://www.microsoft.com/office/evolve/default.mspx">Office Marketing campaign</a> influence you, per chance ?) ? </p>
<p>Leaving jokes aside now, though, for what I can see so far, Microsoft luckily is open enough and DOES let you say this stuff enough, doesn&#039;t it ?&#8230;.<br />
&#8230;sure, every time I post something like this on the web (or on a public mailing list, or lately even internally) I&#039;ve got that thrill that says to me: &#034;holy shit, I am going to get fired this time&#8230;&#034;. But then it has not happenened <strong>yet</strong> (maybe I haven&#039;t pissed them off ENOUGH yet ?).<br />
Let&#039;s hope they don&#039;t really get worried by people&#039;s opinion but the look at a couple of more practical/humane things, like:<br />
1) he&#039;s doing his job all right, customers ARE happy (in my case);<br />
2) he&#039;s  got a family to feed&#8230; <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /> </p>
<p>Anyway, KEEP UP THE AWESOME WORK !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/10/dares-new-year-resolutions-my-open-letter-about-those/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr to Blog to MSN Spaces ?</title>
		<link>http://www.muscetta.com/2006/01/08/flickr-to-blog-to-msn-spaces/</link>
		<comments>http://www.muscetta.com/2006/01/08/flickr-to-blog-to-msn-spaces/#comments</comments>
		<pubDate>Sun, 08 Jan 2006 20:19:12 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=90</guid>
		<description><![CDATA[Dare Obasanjo described on his blog a while ago how to configure some blog tools to use the MetaBlog API towards MSN Spaces. Flickr says it supports the same API but I&#039;ve not been able to post from Flickr to MSN Space&#8230;. Has anyone succeeded in doing this ? I did not even get any [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.25hoursaday.com/weblog/Trackback.aspx?guid=30625275-9604-49e3-9314-39d27a5649fb">Dare Obasanjo described on his blog a while ago how to configure some blog tools to use the MetaBlog API towards MSN Spaces</a>.<br />
Flickr says it supports the same API but I&#039;ve not been able to post from Flickr to MSN Space&#8230;.</p>
<p>Has anyone succeeded in doing this ? <a href="http://www.flickr.com/forums/help/15606/">I did not even get any meaningful reply on Flickr Forum&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/08/flickr-to-blog-to-msn-spaces/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java&#8230; oh Java&#8230; (aka &quot;High vs. Low level languages rant&quot;)</title>
		<link>http://www.muscetta.com/2006/01/02/java-oh-java-aka-high-vs-low-level-languages-rant/</link>
		<comments>http://www.muscetta.com/2006/01/02/java-oh-java-aka-high-vs-low-level-languages-rant/#comments</comments>
		<pubDate>Mon, 02 Jan 2006 16:14:38 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=85</guid>
		<description><![CDATA[I said here (and someone else said that too) that &#034;Java is the new cobol&#034;. When saying so, I mentioned that En3pY hates Java, here it is another post by him written after I forwarded him this Joel Article (which I read from Scoble, in turn). All in all, in this case, I tend to [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.muscetta.com/2005/12/24/java-is-the-new-cobol-i-confirm/">I said here (and someone else said that too) that &#034;Java is the new cobol&#034;.</a><br />
When  saying so, I mentioned that <a href="http://www.en3py.net">En3pY</a> hates Java, <a href="http://spaces.msn.com/members/en3py/blog/cns!1pLSb3mam2gtAX9zlkiTgjnA!141.entry">here it is another post by him</a> written after I forwarded him <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">this Joel Article</a> (which I read from <a href="http://scobleizer.wordpress.com/2005/12/29/joel-says-teaching-java-is-bad-for-cs-students/trackback/">Scoble</a>, in turn).</p>
<p>All in all, in this case, I tend to partially agree on some points but slightly disagree on others with Joel.</p>
<p>In fact, while I do acknowledge the need of  &#034;hardcore&#034; developers to fix and build lower level things and mantain current code (and know WHAT they are doing), there are also many cases where coding in a high level language which abstracts complexity IS actually more efficient and cost effective, not having to reinvent the wheel every time.<br />
So there are a lot of useful and nice programs written by people who DO KNOW what happens under the hood (as good in C as in Assembler), that for simplicity and flexibility run in sandboxes, high level languages, even interpreted ones! <a href="http://www.immunitysec.com/products-canvas.shtml">An example is Dave Aitel&#039;s CANVAS, written in Python.</a> But that&#039;s just an example.</p>
<p>But I do agree with En3pY that I don&#039;t like Java myself, and I consider it being too &#034;heavy&#034;, in general.<br />
Solution on my side, tough, is that you don&#039;t need C or assembler to get cleaner, smaller, more efficient code, you just need better languages. An example of this is a situation I have been involved in some time ago: in that case a colleague (that works with a very large customer who has a very large exchange deployment) needed to do some performance testing of this Exchange system. He had done the testing from some Windows IMAP clients, but the customer also wanted to see the same performance values measured from a Linux box accessing the same exchange via the very same IMAP protocol.<br />
So I wrote a nice and sweet <a href="http://www.ruby-lang.org/en/">Ruby</a> script &#8211; and at the same time another colleague developer a similar application (in Java).<br />
Result: 45 kilobytes of .JAR to do the same things I did in 20 lines of <a href="http://www.ruby-lang.org/en/">Ruby</a> (20 lines &#8211; including comments!).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2006/01/02/java-oh-java-aka-high-vs-low-level-languages-rant/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Predictions</title>
		<link>http://www.muscetta.com/2005/12/28/predictions/</link>
		<comments>http://www.muscetta.com/2005/12/28/predictions/#comments</comments>
		<pubDate>Wed, 28 Dec 2005 08:10:00 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Cross Post]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=82</guid>
		<description><![CDATA[NO, I&#039;m not posting my own predictions here nor anywhere else, as I don&#039;t feel like having the gift of clairvoyance, but I am linking to some interesting prediction for 2006 written on the DailyDave mailing list by Marc Maiffret of eEye &#8211; predictions which I was reding yesterday: http://lists.immunitysec.com/pipermail/dailydave/2005-December/002747.html Agree with him or not [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>NO, I&#039;m not posting my own predictions here nor anywhere else, as I don&#039;t feel like having the gift of clairvoyance, but I am linking to some interesting prediction for 2006 written on the DailyDave mailing list by Marc Maiffret of eEye &#8211; predictions which I was reding yesterday:</p>
<p><a href="http://lists.immunitysec.com/pipermail/dailydave/2005-December/002747.html">http://lists.immunitysec.com/pipermail/dailydave/2005-December/002747.html</a></p>
<p>Agree with him or not is up to you, obviously, but I would suggest giving it a read. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/12/28/predictions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DIG on Windows (vs NSLOOKUP)</title>
		<link>http://www.muscetta.com/2005/12/24/dig-on-windows-vs-nslookup/</link>
		<comments>http://www.muscetta.com/2005/12/24/dig-on-windows-vs-nslookup/#comments</comments>
		<pubDate>Sat, 24 Dec 2005 16:38:27 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=79</guid>
		<description><![CDATA[Some time ago (actually quite a while &#8211; but I don&#039;t really get the time to blog sometimes&#8230;. you must have noticed that since I am blogging now that&#039;s Xmas holiday&#8230;. which is insane on its own, but that&#039;s another story), thanks to Peter Provost&#039;s blog I spotted NetDIG &#8211; available at http://mvptools.com ! I [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Some time ago (actually quite a while &#8211; but I don&#039;t really get the time to blog sometimes&#8230;. you must have noticed that since I am blogging now that&#039;s Xmas holiday&#8230;. which is insane on its own, but that&#039;s another story), thanks to <a href="http://www.peterprovost.org">Peter Provost&#039;s blog</a> I spotted <a href="http://mvptools.com">NetDIG &#8211; available at http://mvptools.com</a> !</p>
<p>I don&#039;t usually cross-post many links found elsewhere, but this one&#8230; I just had to.<br />
I am a &#034;command-line-guy&#034;, when possible. I like command-line power.  So I usually hang around with both &#034;Services For Unix&#034; installed, plus a collection of other unix-like external tools and external/add-on CLI commands for doing all sort of things on my laptop&#8230;.<br />
&#8230;waiting for MONAD (<a href="http://channel9.msdn.com/wiki/default.aspx/Channel9.MSHWiki">http://channel9.msdn.com/wiki/default.aspx/Channel9.MSHWiki</a>). But I&#039;ve got the beta running.</p>
<p>So this nice port of &#034;dig&#034; was missing in my collection&#8230; and I was stuck with nslookup when it came down to solve DNS issues from Windows&#8230; now I have a &#034;dig&#034; implementation on Windows too. Awesome. In fact I&#039;d always wondered why does Windows to date only comes with nslookup which is deprecated and considered a &#034;legacy&#034; thing on UNIX ??</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/12/24/dig-on-windows-vs-nslookup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS Thoughts</title>
		<link>http://www.muscetta.com/2005/12/24/rss-thoughts/</link>
		<comments>http://www.muscetta.com/2005/12/24/rss-thoughts/#comments</comments>
		<pubDate>Sat, 24 Dec 2005 15:33:01 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Cross Post]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WebSite]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=77</guid>
		<description><![CDATA[I am not quite sure I understand why Roberdan has posted this http://blogs.msdn.com/roberdan/comments/502576.aspx very basic explanation of what an RSS feed is. Probably to start educating the masses, and preparing that amount of business people to WHAT RSS is&#8230;. preparing them to actually use the format when (soon) it will finally be mainstream with Office [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I am not quite sure I understand why Roberdan has posted this <a href="http://blogs.msdn.com/roberdan/comments/502576.aspx">http://blogs.msdn.com/roberdan/comments/502576.aspx</a> very basic explanation of what an RSS feed is.<br />
Probably to start educating the masses, and preparing that amount of business people to WHAT RSS is&#8230;. preparing them to actually use the format when (soon) it will finally be mainstream with Office 12 and IE7&#8230;. to this regard Scoble says &#034;[...]don’t underestimate the effect of Outlook 12’s support of RSS here. It’ll bring millions of new businesspeople into the RSS world. This is HUGE.[...]&#034;. <a href="http://scobleizer.wordpress.com/2005/12/22/outlook-pm-talks-about-upcoming-rss-integration/">http://scobleizer.wordpress.com/2005/12/22/outlook-pm-talks-about-upcoming-rss-integration/</a><br />
And he&#039;s right of course. I keep forgetting RSS is not in the mainstream yet. &#034;My&#034; idea of what is mainstream is mostly polluted by my geeky visions&#8230;</p>
<p>But coming back to the point &#8211; that was Roberdan&#039;s post &#8211; I wanted to comment there, but for some reason I am not able to do so (even though it does not seem to be a problem with <a href="http://blogs.msdn.com">http://blogs.msdn.com</a>, as I can comment to my blog there&#8230; I don&#039;t know)&#8230; so I will comment here (hoping he sees the pingback). The comment I wanted to write is this that follows (in Italian):</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Bisognerebbe inoltre menzionare che anche le liste di SharePoint stesso si possono ri-pubblicare in formato RSS per farle fruire ad altri reader. Per il momento questa possibilita&#039; non c&#039;e&#039; nativamente in SharePoint, ma si puo&#039; attivare installando una web part quale &#034;BlogWave&#034;<br />
<a href="http://blogs.msdn.com/asanto/archive/2004/08/22/218625.aspx ">http://blogs.msdn.com/asanto/archive/2004/08/22/218625.aspx </a>oppure quella messa a disposizione da BlueDogLimited:<br />
<a href="http://www.bluedoglimited.com/Downloads/pages/SyndicationGenerator.aspx">http://www.bluedoglimited.com/Downloads/pages/SyndicationGenerator.aspx</a></p>
<p><a href="http://blogs.msdn.com/dmuscett/archive/2005/09/27/SharePoint_Unortodox_RSS_Feed.aspx">Anch&#039;io ho scritto un simile oggetto che genera feed a partire da liste di siti realizzati con SharePoint, qualora non si avesse la possibilita&#039; di installare webparts sul proprio sharepoint, e lo faccio da remoto, estraendo le informazioni dal Web Service si SPS.</a></p>
<p>Invece per fortuna lo SharePoint &#034;futuro&#034; che uscira&#039;, avra&#039; questa possibilita&#039; nativamente:<br />
<a href="http://radio.weblogs.com/0001011/2005/09/17.html#a11176">http://radio.weblogs.com/0001011/2005/09/17.html#a11176</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/12/24/rss-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File copy: 269% complete (!)</title>
		<link>http://www.muscetta.com/2005/12/14/file-copy-269-complete/</link>
		<comments>http://www.muscetta.com/2005/12/14/file-copy-269-complete/#comments</comments>
		<pubDate>Wed, 14 Dec 2005 12:57:32 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.muscetta.com/?p=75</guid>
		<description><![CDATA[Next time someone complains to me about &#034;windows time&#034; (no, not the w32time service, but the fact that copy operations across the network in windows sometimes show times that are increasing instead of decreasing, and the like&#8230;) he better remembers this&#8230;<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><img alt="269%" src="http://www.muscetta.com/images/thumb-WinSCP_Percentage.JPG" /></p>
<p>Next time someone complains to me about &#034;windows time&#034; (no, not the w32time service, but the fact that copy operations across the network in windows sometimes show times that are increasing instead of decreasing, and the like&#8230;) he better remembers this&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/12/14/file-copy-269-complete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back from America, going on Holiday now</title>
		<link>http://www.muscetta.com/2005/08/07/back-from-america-going-on-holiday-now/</link>
		<comments>http://www.muscetta.com/2005/08/07/back-from-america-going-on-holiday-now/#comments</comments>
		<pubDate>Sun, 07 Aug 2005 21:53:01 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[Trips]]></category>

		<guid isPermaLink="false">/?p=59</guid>
		<description><![CDATA[I&#039;m just back from Seattle, where I have been for training purposes, and I am going on Holiday to the South of Italy as from tomorrow morning.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>
I&#039;m just back from Seattle, where I have been for training purposes, and I am going on Holiday to the South of Italy as from tomorrow morning.</p>
<p><a href="http://www.flickr.com/photos/34997998@N00/32050624/" title="Photo Sharing"><img src="http://photos21.flickr.com/32050624_6c39c5bfc2.jpg" width="500" height="333" alt="DCP_4628" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/08/07/back-from-america-going-on-holiday-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stepto&#039;s Open Letter to Worm Author</title>
		<link>http://www.muscetta.com/2005/07/11/steptos-open-letter-to-worm-author/</link>
		<comments>http://www.muscetta.com/2005/07/11/steptos-open-letter-to-worm-author/#comments</comments>
		<pubDate>Mon, 11 Jul 2005 12:47:46 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Cross Post]]></category>

		<guid isPermaLink="false">/?p=54</guid>
		<description><![CDATA[Stephen Toulouse of MSRC fame has posted an interesting open letter addressed to Sven Jaschan, who has been the author of the painful Sasser worm.<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stepto.com/">Stephen Toulouse</a> of <a href="http://blogs.technet.com/msrc">MSRC</a> fame has posted <a href="http://www.stepto.com/default/log/displaylog1.aspx?ID=122">an interesting open letter</a> addressed to <a href="http://news.bbc.co.uk/2/hi/technology/4659329.stm">Sven Jaschan, who has been the author of the painful Sasser worm</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/07/11/steptos-open-letter-to-worm-author/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Start Something &#8211; On the Road</title>
		<link>http://www.muscetta.com/2005/07/04/start-something-on-the-road/</link>
		<comments>http://www.muscetta.com/2005/07/04/start-something-on-the-road/#comments</comments>
		<pubDate>Mon, 04 Jul 2005 11:07:33 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">/?p=51</guid>
		<description><![CDATA[<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.muscetta.com/images/start_something.jpg" alt="Start Something" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/07/04/start-something-on-the-road/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The death of the DMZ &#8211; italian translation</title>
		<link>http://www.muscetta.com/2005/02/09/the-death-of-the-dmz-italian-translation/</link>
		<comments>http://www.muscetta.com/2005/02/09/the-death-of-the-dmz-italian-translation/#comments</comments>
		<pubDate>Wed, 09 Feb 2005 13:23:14 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[DMZ]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Risk]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">/?p=36</guid>
		<description><![CDATA[I have published an italian translation of Steve Riley&#039;s speech &#034;the death of the DMZ&#034; (original on http://www.steveriley.ms/media/the%20death%20of%20the%20dmz.wmv). Since I had enjoyed the speech very much when I first listened to it, and I found myself in complete agreement with it, I started emailing the link above to some friends to notify them of its [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>I have published an italian translation of Steve Riley&#039;s speech &#034;the death of the DMZ&#034; (original on <a href="http://www.steveriley.ms/media/the%20death%20of%20the%20dmz.wmv">http://www.steveriley.ms/media/the%20death%20of%20the%20dmz.wmv</a>).</p>
<p>Since I had enjoyed the speech very much when I first listened to it, and I found myself in complete agreement with it, I started emailing the link above to some friends to notify them of its existance. Unfortunately italians are not famous for speaking and<br />
understanding english very well&#8230; so I found out that many of them could not be bothered to listen to an entire speech<br />
in english without having slides next to it&#8230; so they were asking me to &#034;explain it&#034;.</p>
<p>Thus, I decided to write it down and translate it for those fellow (illiterate?) nationals. I have asked Steve permission to publish it, and since he agreed, you can now read it here: <a target="_blank" href="http://www.itvc.net/opinion/view.asp?id=290">http://www.itvc.net/opinion/view.asp?id=290</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2005/02/09/the-death-of-the-dmz-italian-translation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attack Surface</title>
		<link>http://www.muscetta.com/2004/10/20/attack-surface/</link>
		<comments>http://www.muscetta.com/2004/10/20/attack-surface/#comments</comments>
		<pubDate>Wed, 20 Oct 2004 14:23:15 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Risk]]></category>

		<guid isPermaLink="false">/?p=31</guid>
		<description><![CDATA[Michael Howard (author of &#034;Writing Secure Code&#034;) has released an article on MSDN Magazine titled: &#034;Attack Surface &#8211; Mitigate Security Risks by Minimizing the Code You Expose to Untrusted Users&#034;. It is definitely a good read, stressing developers to adopt a coding strategy that minimizes the risks. You can find his announcement of the article [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Michael Howard (author of &#034;Writing Secure Code&#034;) has released an article on MSDN Magazine titled:<br />
&#034;Attack Surface &#8211; Mitigate Security Risks by Minimizing the Code You Expose to Untrusted Users&#034;.<br />
It is definitely a good read, stressing developers to adopt a coding strategy that minimizes the risks.</p>
<p>You can find his announcement of the article on his BLOG <a target="_blank" href="http://blogs.msdn.com/michael_howard/archive/2004/10/19/244642.aspx">http://blogs.msdn.com/michael_howard/archive/2004/10/19/244642.aspx</a><br />
with link to the article itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2004/10/20/attack-surface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux / Windows Rant</title>
		<link>http://www.muscetta.com/2004/06/18/linux-windows-rant/</link>
		<comments>http://www.muscetta.com/2004/06/18/linux-windows-rant/#comments</comments>
		<pubDate>Fri, 18 Jun 2004 22:27:10 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interop]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">/?p=27</guid>
		<description><![CDATA[Linux was free software as freedom of speech. Then people started using it for free as in free beer. &#034;Wow, it&#039;s for free, let&#039;s use it!&#034; Some people were enthousiast for they actually liked the platform better than the commercial alternative. Those people were doing it for a cause, and they were sharing their software [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>Linux was free software as freedom of speech.<br />
Then people started using it for free as in free beer.<br />
&#034;Wow, it&#039;s for free, let&#039;s use it!&#034;<br />
Some people were enthousiast for they actually liked the platform better than the commercial alternative. Those people were doing it for a cause, and they were sharing their software with the community. We do understand and respect choices.<br />
But some other people stepped in, who thought it was ok to take a lot and do their political games in the linux scene, and make a &#039;commercializazion&#039; of it all happen.<br />
At this point it means just jumping from a vendor to another. I mean, it&#039;s free market, already before if you wanted you could go to an alternative. Why *PAY* fat companies for commercial linux support ? If you choose linux for you like it, I respect your choice, and I also use it. I like to think that different OSes have different specialized tasks in an enterprise and they can coexists happily.</p>
<p>Microsoft Platform of Operating Systems is the most targeted because it is more widespread and used (each hous has at least a windows PC!). There *ARE* bugs in other software too, of course, and just as many, as complexity grows. But Linux boxes are (so far) less widespread and still coming out of the underground where customization made them hard target for automated tools.<br />
So this has given this &#039;perception&#039; of higher linux security because we have not seen major worms on that platform yet. Yet.</p>
<p>But when competitors such as RedHat and Novell/SuSE step in, and then try to standardize the platform for easiness of management and support&#039;s sake, it will come: we will get a windows clone (linux+gnome or kde&#8230; we&#039;ll see them fused soon now that novell/suse/ximian is under one umbrella i bet), just as easy to break as the original used to be, for things become configured and placed in predictable ways, and the platform is more widespread, so the exploiting can be automated at that point. I am talking of the plague of last years: Worms.</p>
<p>Does it really make sense to pass from a commercial entity to another, pretending it is *still* free ? Are you really sure it still is free ? I bet it isn&#039;t. And Microsoft is working damn hard to make its code more secure, and secured by default.<br />
Run your linux servers too, if you like them, *INTEGRATE* the two worlds to get the best of both <img src='http://www.muscetta.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Windows Services for Unix 3.5 TOTALLY ROCKS !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2004/06/18/linux-windows-rant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patching Problem</title>
		<link>http://www.muscetta.com/2003/08/07/patching-problem/</link>
		<comments>http://www.muscetta.com/2003/08/07/patching-problem/#comments</comments>
		<pubDate>Thu, 07 Aug 2003 10:01:20 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">/?p=13</guid>
		<description><![CDATA[Microsoft fixing another faulty patch http://www.computerworld.com/printthis/2003/0,4814,83584,00.html &#8230;we all have read about Microsoft releasing a patch that gave some people trouble with RRAS Services. I have instead being the lucky guy who&#039;s got another &#8211; similar &#8211; problem with it: on a machine with Microsoft Proxy Server 2.0 running into IIS3, the &#034;Web Proxy&#034; service would [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p><strong>Microsoft fixing another faulty patch</strong><br />
<a href="http://www.computerworld.com/printthis/2003/0,4814,83584,00.html">http://www.computerworld.com/printthis/2003/0,4814,83584,00.html</a></p>
<p>&#8230;we all have read about Microsoft releasing a patch that gave some people trouble with RRAS Services.</p>
<p>I have instead being the lucky guy who&#039;s got another &#8211; similar &#8211; problem with it: on a machine with Microsoft Proxy Server 2.0 running into IIS3, the &#034;Web Proxy&#034; service would not start.<br />
The &#034;World Wide Web Publishing Service&#034; starts, but from Internet service manager the &#034;Web Proxy&#034; module appears as Not Running.<br />
I looked at the property of the WWW Service in Internet Service Manager, where the field &#034;User&#034; (for Anonymous Authentication) is indeed EMPTY, instead of containing the usual IUSR_SERVERNAME.<br />
But, funny enough, the value with the correct user name IS in the registry (HKLM/System/CurrentControlSet/Services/W3SVC/Parameters &#8230;.). It&#039;s still IIS3, then it is in the registry, it does not have a metabase. But is DOES not get read !!<br />
Uninstalling the patch, the service works again, and the user is correctly displayed.<br />
I KNOW that the vulnerability is considered &#034;Moderate&#034; since no native service can expose it remotely.<br />
On the other hand, on the very same machine a third-party SMTP Virus-Scanning product is also installed, which MIGHT make use of the &#034;dangerous&#034; API, and expose the flaw remotely&#8230;. very remote possibility, but still I like to have my systems patched&#8230;. maybe a maliciously crafted mail could trigger the vulnerability (?worst case scenario?), like in a bug of sendmail of some time ago&#8230;..</p>
<p>And this was the bad new.</p>
<p><strong>The GOOD new is that Microsoft supplied me the hotfix they released for the RRAS issue, and it also fixes this problem.</strong><br />
I am one week late, but my system is patched.</p>
<p>Digression:<br />
The hotfix in question is numbered Q825501 &#8211; I wonder how one is supposed to REMEBER all of these numbers&#8230; which relation does it have with the original &#034;823803&#034; ?&#8230; which again is referred to security bullettin MS03-029&#8230;</p>
<p><strong>But OK, the issue was the fix, and the fix works. That&#039;s important.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2003/08/07/patching-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft&#039;s RPC Implementation</title>
		<link>http://www.muscetta.com/2003/04/03/microsofts-rpc-implementation/</link>
		<comments>http://www.muscetta.com/2003/04/03/microsofts-rpc-implementation/#comments</comments>
		<pubDate>Thu, 03 Apr 2003 22:33:11 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">/?p=5</guid>
		<description><![CDATA[This comes out the newsletter of SANS: It seems the final nail potentially has been placed into the coffin of Windows NT. Last week, Microsoft released security bulletin MS03-010, which details how anyone with access to port 135 can crash the RPC endmapper service, thereby taking down all RCP functionality and some COM functionality, too. [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>This comes out the newsletter of SANS:<br />
It seems the final nail potentially has been placed into the coffin of Windows NT. Last week, Microsoft released security bulletin MS03-010, which details how anyone with access to port 135 can crash the RPC endmapper service, thereby taking down all RCP functionality and some COM functionality, too. According to Microsoft, the Windows NT architecture has proven unable to accommodate a fix; thus, Windows NT systems are just going to have to go on being vulnerable, indefinitely. This leaves a large threat to internal Windows NT systems, particularly older domain controllers and WINS servers that have not been migrated to Windows 2000 or later.  Let&#039;s just hope the next big Internet worm that manages to slither into private networks doesn&#039;t tickle this vulnerability, since there&#039;s no way to defend against it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2003/04/03/microsofts-rpc-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What About Netware ?</title>
		<link>http://www.muscetta.com/2003/04/02/what-about-netware/</link>
		<comments>http://www.muscetta.com/2003/04/02/what-about-netware/#comments</comments>
		<pubDate>Wed, 02 Apr 2003 09:18:12 +0000</pubDate>
		<dc:creator>Daniele Muscetta</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Choice]]></category>
		<category><![CDATA[Netware]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">/?p=4</guid>
		<description><![CDATA[In these days where we hear only about security of Windows and of Unix environment, I&#039;ve written some considerations about the &#034;resurrection&#034; of Novell Netware as a viable alternative for an Internet Server. You can read it here. There is also an Italian version published by ITVC here. I would appreciate having feedback on that [...]<hr /><a href="http://www.muscetta.com/about-me/">About Daniele Muscetta</a><hr />]]></description>
			<content:encoded><![CDATA[<p>In these days where we hear only about security of Windows and of Unix environment, I&#039;ve written some considerations about the &#034;resurrection&#034; of Novell Netware as a viable alternative for an Internet Server. You can read it <a target="_blank" href="http://www.muscetta.com/Novell_review.htm">here</a>.<br />
There is also an Italian version published by ITVC <a target="_blank" href="http://www.itvirtualcommunity.net/educational.asp?ID=31">here</a>.</p>
<p>I would appreciate having feedback on that one. Just feel free to email mail about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.muscetta.com/2003/04/02/what-about-netware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
