<?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>TechProsaic &#187; Windows</title>
	<atom:link href="http://halr9000.com/article/category/software/windows/feed" rel="self" type="application/rss+xml" />
	<link>http://halr9000.com</link>
	<description>(powershell &#38; other stuff)</description>
	<lastBuildDate>Sat, 28 Jan 2012 21:29:12 +0000</lastBuildDate>
	<language>en-us</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Thanks For Nothing, MOM! (I mean, System Center Operations Manager, not you, Mom)</title>
		<link>http://halr9000.com/article/936</link>
		<comments>http://halr9000.com/article/936#comments</comments>
		<pubDate>Mon, 23 May 2011 12:29:26 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[System Center Operations Manager]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/936</guid>
		<description><![CDATA[Just wanted to vent a bit of frustration with System Center Operations Manager this morning. As you can see from the task manager shot below, SCOM (showing its Microsoft Operations Manager roots with the process name) likes to eat memory. I left it running over the weekend on my work PC. Bad idea. P.S. Mom, [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>Just wanted to vent a bit of frustration with System Center Operations Manager this morning. As you can see from the task manager shot below, SCOM (showing its Microsoft Operations Manager roots with the process name) likes to eat memory. I left it running over the weekend on my work PC. Bad idea. </p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://halr9000.com/wp-content/uploads/2011/05/image_thumb1.png" width="597" height="568" /></p>
<p>P.S. Mom, this has nothing to do with you, I promise!</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/936/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quickly Duplicate Windows Features and Roles On Another Server Using PowerShell</title>
		<link>http://halr9000.com/article/934</link>
		<comments>http://halr9000.com/article/934#comments</comments>
		<pubDate>Fri, 20 May 2011 15:59:24 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ServerManager]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/934</guid>
		<description><![CDATA[If you have a server that needs to have the same Windows Server features and roles as another system, here’s an easy way to quickly get that done using PowerShell. I did this logged into each server locally, but you could easily use PowerShell remoting to do the same thing. Step 1: Run PowerShell with [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>If you have a server that needs to have the same Windows Server features and roles as another system, here’s an easy way to quickly get that done using PowerShell. I did this logged into each server locally, but you could easily use PowerShell remoting to do the same thing.</p>
<h3>Step 1: Run PowerShell with ServerManager module:</h3>
<p><a href="http://halr9000.com/wp-content/uploads/2011/05/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://halr9000.com/wp-content/uploads/2011/05/image_thumb.png" width="353" height="501"/></a></p>
<h3>Step 2: Export list of currently installed features to XML</h3>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier>&nbsp;</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier>Get<span style="color: pink">-</span>WindowsFeature <span style="color: pink">|</span> <span style="color: pink">?</span> <span style="color: #000000">{</span> <a href="about:blank"><span style="color: #000080">$_</span></a>.installed <span style="color: #000000">}</span> <span style="color: pink">|</span> <span style="color: #008080; font-weight: bold">Export-Clixml</span> <a href="file://\\server\share\features.xml">\\server\share\features.xml</a></pre>
<h3>&nbsp;</h3>
<h3>Step 3: On second server, run PowerShell and import XML</h3>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier><span style="color: #800080"></span>&nbsp;</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier><span style="color: #800080">$f</span> <span style="color: pink">=</span> <span style="color: #008080; font-weight: bold">Import-Clixml</span> <a href="file://\\server\share\features.xml">\\server\share\features.xml</a></pre>
<h3>&nbsp;</h3>
<h3>Step 4: Pipe that bad boy into Add-WindowsFeature!</h3>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier><span style="color: #800080"></span>&nbsp;</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier><span style="color: #800080">$f</span> <span style="color: pink">|</span> Add<span style="color: pink">-</span>WindowsFeature</pre>
<h3>&nbsp;</h3>
<h3>Step 5: Restart, if needed</h3>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier>&nbsp;</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" #ffffff;? background-color: monospace; courier, New?, Courier>Restart<span style="color: pink">-</span>Computer</pre>
<p>That’s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/934/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deleting Computer Objects with PowerShell</title>
		<link>http://halr9000.com/article/916</link>
		<comments>http://halr9000.com/article/916#comments</comments>
		<pubDate>Fri, 14 Jan 2011 15:41:41 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Quest AD Cmdlets;Active Directory;100-level]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/916</guid>
		<description><![CDATA[First of all—I feel like such a n00b to be posting this. It’s fair to say that I know a bit about PowerShell but, man, the world is so big and I certainly do not know it all. As I always say, if I didn’t learn something today, then I must be dead. Ok, on [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>First of all—I feel like such a n00b to be posting this. It’s fair to say that I know a bit about PowerShell but, man, the world is so big and I certainly do not know it all. As I always say, if I didn’t learn something today, then I must be dead.</p>
<p>Ok, on to the learning. As you may have heard, I changed jobs recently. I now work at a 500-person insurance company with a 70-person IT staff. By far the smallest company I’ve ever worked for (following MCI, HP, IBM, The Home Depot). In this new job, I have to wear many hats, which should be no surprise to those of you who work in SMB! I think it’s great, actually, because I’m exercising my brain in ways it hasn’t been in ages. For example, I don’t know crap about Active Directory, at least relative to other aspects of Windows considering the amount of time that I’ve called myself a Windows admin. So when it came time for me to do some routine AD cleanup, I certainly had to learn a few things—which is a good thing to me.</p>
<p>The task ahead of me was that there were tons of stale AD computer accounts in our domain. (See, I call it a domain, that’s how old my AD knowledge is.) Normally, this doesn’t hurt anything, but in our case, we have an anti-virus app which allocates licenses automatically based on the computer objects! So we were wasting licenses on computers which didn’t exist, and that needed cleaning up.</p>
<p>Of course, my first thought was to do it with PowerShell. I already had the venerable Quest AD snap-in loaded, so I just ran a quick one-liner to make my list of potential accounts. This was the easy part.</p>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?"><span style="color: #800080">$c</span> <span style="color: pink">=</span> Get<span style="color: pink">-</span>QADComputer <span style="color: pink">-</span>InactiveFor <span style="color: #804000">90</span></pre>
<p>After doing some sanity ping checks to make sure this list was good, I went to delete the first one:</p>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">PS<span style="color: pink">&gt;</span> <span style="color: #800080">$c</span><span style="color: #000000">[</span><span style="color: #804000">0</span><span style="color: #000000">]</span> <span style="color: pink">|</span> Remove<span style="color: pink">-</span>QADObject</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">&#160;&#160; </pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">Warning<span style="color: pink">!</span>
Are you sure you want to delete this object: CN<span style="color: pink">=</span>foobar<span style="color: pink">,</span>DC<span style="color: pink">=</span>domain<span style="color: pink">,</span>DC<span style="color: pink">=</span>com<span style="color: pink">?</span>
<span style="color: #000000">[</span>Y<span style="color: #000000">]</span> Yes  <span style="color: #000000">[</span>A<span style="color: #000000">]</span> Yes to All  <span style="color: #000000">[</span>N<span style="color: #000000">]</span> No  <span style="color: #000000">[</span>L<span style="color: #000000">]</span> No to All  <span style="color: #000000">[</span>S<span style="color: #000000">]</span> Suspend  <span style="color: #000000">[</span><span style="color: pink">?</span><span style="color: #000000">]</span> Help <span style="color: #000000">(</span>default is <span style="color: #800000">&quot;Y&quot;</span><span style="color: #000000">)</span>:
Remove<span style="color: pink">-</span>QADObject : The directory service can perform the requested operation only on a leaf object.
At line:<span style="color: #804000">1</span> char:<span style="color: #804000">25</span>
<span style="color: pink">+</span> <span style="color: #800080">$c</span><span style="color: #000000">[</span><span style="color: #804000">0</span><span style="color: #000000">]</span> <span style="color: pink">|</span> Remove<span style="color: pink">-</span>QADObject <span style="color: pink">&lt;&lt;&lt;&lt;</span>
    <span style="color: pink">+</span> CategoryInfo          : NotSpecified: <span style="color: #000000">(</span>:<span style="color: #000000">)</span> <span style="color: #000000">[</span>Remove<span style="color: pink">-</span>QADObject<span style="color: #000000">]</span><span style="color: pink">,</span> DirectoryServicesCOMException
    <span style="color: pink">+</span> FullyQualifiedErrorId : System.DirectoryServices.DirectoryServicesCOMException<span style="color: pink">,</span>Quest.ActiveRoles.ArsPowerShell
   eObjectCmdlet</pre>
<p>Oops, that didn’t work! Well, I did <a href="http://www.vistax64.com/powershell/200911-unable-delete-object-using-remove-qadobject.html">some research</a> and found an old newsgroup post that says that computer objects are really containers and that in order to delete them, you have to use the DeleteTree switch. So, I tried that:</p>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">PS<span style="color: pink">&gt;</span> <span style="color: #800080">$c</span><span style="color: #000000">[</span><span style="color: #804000">0</span><span style="color: #000000">]</span> <span style="color: pink">|</span> Remove<span style="color: pink">-</span>QADObject –DeleteTree</pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">&#160;&#160; </pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">Warning<span style="color: pink">!</span>
Are you sure you want to delete this object and its children: CN<span style="color: pink">=</span>foobar<span style="color: pink">,</span>DC<span style="color: pink">=</span>domain<span style="color: pink">,</span>DC<span style="color: pink">=</span>com<span style="color: pink">?</span>
<span style="color: #000000">[</span>Y<span style="color: #000000">]</span> Yes  <span style="color: #000000">[</span>A<span style="color: #000000">]</span> Yes to All  <span style="color: #000000">[</span>N<span style="color: #000000">]</span> No  <span style="color: #000000">[</span>L<span style="color: #000000">]</span> No to All  <span style="color: #000000">[</span>S<span style="color: #000000">]</span> Suspend  <span style="color: #000000">[</span><span style="color: pink">?</span><span style="color: #000000">]</span> Help <span style="color: #000000">(</span>default is <span style="color: #800000">&quot;Y&quot;</span><span style="color: #000000">)</span>:
Remove<span style="color: pink">-</span>QADObject : Access is denied. <span style="color: #000000">(</span>Exception from HRESULT: 0x80070005 <span style="color: #000000">(</span>E_ACCESSDENIED<span style="color: #000000">)</span><span style="color: #000000">)</span>
At line:<span style="color: #804000">1</span> char:<span style="color: #804000">25</span>
<span style="color: pink">+</span> <span style="color: #800080">$c</span><span style="color: #000000">[</span><span style="color: #804000">0</span><span style="color: #000000">]</span> <span style="color: pink">|</span> Remove<span style="color: pink">-</span>QADObject <span style="color: pink">&lt;&lt;&lt;&lt;</span>  <span style="color: pink">-</span>DeleteTree
    <span style="color: pink">+</span> CategoryInfo          : NotSpecified: <span style="color: #000000">(</span>:<span style="color: #000000">)</span> <span style="color: #000000">[</span>Remove<span style="color: pink">-</span>QADObject<span style="color: #000000">]</span><span style="color: pink">,</span> UnauthorizedAccessException
    <span style="color: pink">+</span> FullyQualifiedErrorId : System.UnauthorizedAccessException<span style="color: pink">,</span>Quest.ActiveRoles.ArsPowerShellSnapIn.Cmdlets.RemoveO
   bjectCmdlet</pre>
<p>Access denied! So, I tried an elevated shell. No help. Back to Google. I searched for “<a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=unable+remove-qadobject+leaf#sclient=psy&amp;hl=en&amp;q=access+denied+remove-qadobject+deletetree&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=&amp;pbx=1&amp;psj=1&amp;fp=ee5b8d49ec6ea034">access denied remove-qadobject deletetree</a>” and the <a href="http://www.google.com/search?sourceid=chrome&amp;ie=UTF-8&amp;q=unable+remove-qadobject+leaf#sclient=psy&amp;hl=en&amp;q=access+denied+remove-qadobject+deletetree&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=&amp;pbx=1&amp;psj=1&amp;fp=ee5b8d49ec6ea034">third hit</a> looked interesting. It was a section on working with computer objects in the book Active Directory Cookbook (awesome that google books does that). From reading this, I realized that somewhere in the permissions hierarchy, these computer objects had accidental deletion prevention enabled! Luckily, they had some PowerShell code that I quickly adapted to my situation:</p>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">PS<span style="color: pink">&gt;</span> <span style="color: #800080">$c</span> <span style="color: pink">|</span> Add<span style="color: pink">-</span>QADPermission <span style="color: pink">-</span>Account <span style="color: #800000">'EVERYONE'</span> <span style="color: pink">-</span>Rights <span style="color: #800000">'Delete,DeleteTree'</span> <span style="color: pink">-</span>ApplyTo <span style="color: #800000">'ThisObjectOnly'</span></pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?"><span style="color: #800000"></span>&#160;&#160; </pre>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">Ctrl   Account                                  Rights                              Source           AppliesTo
<span style="color: pink">----</span>   <span style="color: pink">-------</span>                                  <span style="color: pink">------</span>                              <span style="color: pink">------</span>           <span style="color: pink">---------</span>
       Everyone                                 Special                             Not inherited    This object only
       Everyone                                 Special                             Not inherited    This object only
       Everyone                                 Special                             Not inherited    This object only</pre>
<p>Plus 507 more lines just like that. And then, I tried again and…</p>
<pre style="font-family: consolas,; font-size: small" class="powershell" courier="courier" new?,="New?," courier,="courier," monospace;="monospace;" background-color:="background-color:" #ffffff;?="#ffffff;?">PS<span style="color: pink">&gt;</span> <span style="color: #800080">$c</span> <span style="color: pink">=</span> Get<span style="color: pink">-</span>QADComputer <span style="color: pink">-</span>InactiveFor <span style="color: #804000">90</span>
PS<span style="color: pink">&gt;</span> <span style="color: #800080">$c</span>
PS<span style="color: pink">&gt;</span> </pre>
<p>Success! I hope that this post that illustrates my learning process helps someone else who comes across the same situation.</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/916/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quick Outlook Automation Examples</title>
		<link>http://halr9000.com/article/836</link>
		<comments>http://halr9000.com/article/836#comments</comments>
		<pubDate>Fri, 20 Nov 2009 14:15:29 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/836</guid>
		<description><![CDATA[PowerShell is so cool… I had no idea how to automate Outlook with COM before today. Took me about 5 minutes to learn how with PowerShell. I knew it could be done with VBS, right? That’s how viruses are made. This won’t be a long blog unfortunately, but wanted to paste real quick a series [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>PowerShell is so cool…</p>
<p>I had no idea how to automate Outlook with COM before today. Took me about 5 minutes to learn how with PowerShell. I knew it could be done with VBS, right? That’s how viruses are made. <img src='http://halr9000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This won’t be a long blog unfortunately, but wanted to paste real quick a series of commands which I basically figured out in a shell interactively. I didn’t have to read any docs, Get-Member told me all I needed to know.</p>
<p>I did go back and add some comments. I hope you find it useful.</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left; max-height: 200px">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$ol = New-Object -com Outlook.Application <span style="color: #008000"># starts outlook</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$ol.Reminders | select caption, nextreminderdate <span style="color: #008000"># show reminders</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$ol | gm -mem method <span style="color: #008000"># show all methods (actions) on the com object</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$n = $ol.CreateItem(<span style="color: #006080">'olNoteItem'</span>) <span style="color: #008000"># creates a note</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$n <span style="color: #008000"># display note object</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$n.Body = <span style="color: #006080">'test'</span> <span style="color: #008000"># set body of note</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$n | gm <span style="color: #008000"># display object members (methods &amp; properties) of note</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$n.Display() <span style="color: #008000"># show note</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$n.Color <span style="color: #008000"># display color value</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$n.Color = 4 <span style="color: #008000"># set color</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">1..5 | ForEach-Object { $n.Color = $_; sleep 1 } <span style="color: #008000"># change color of note 5 times</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$m = $ol.CreateItem(<span style="color: #006080">'olMailItem'</span>) <span style="color: #008000"># create mail object</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$m <span style="color: #008000"># display mail object</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$m | gm -mem property <span style="color: #008000"># show mail properties</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$m.Subject = <span style="color: #006080">'test'</span> <span style="color: #008000"># set subject</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$m.Body = <span style="color: #006080">'test'</span> <span style="color: #008000"># set body</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$m.To = <span style="color: #006080">'email@domain.com'</span> <span style="color: #008000"># set to address</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$m.Display() <span style="color: #008000"># display mail item on screen </span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$m.Send() <span style="color: #008000"># send mail item</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">$ol <span style="color: #008000"># display outlook object</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">$ol | gm # display outlook methods</pre>
<p><!--CRLF--></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/836/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building MSI Packages from PowerShell &#8211; The Beginning</title>
		<link>http://halr9000.com/article/768</link>
		<comments>http://halr9000.com/article/768#comments</comments>
		<pubDate>Sun, 16 Aug 2009 05:05:08 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[msi]]></category>
		<category><![CDATA[wixsharp]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/768</guid>
		<description><![CDATA[This is very much a work-in-progress, but I just successfully built an MSI package from PowerShell using WixSharp and the following test code: $dll = 'C:\Program Files\WixSharp\WixSharp.dll' $path = "c:\temp\out.msi" [system.Environment]::CurrentDirectory = ( Split-Path $path ) Add-Type -Path $dll $project = New-Object wixsharp.Project $project.Name = "MyApp" $project.GUID = [system.Guid]'3bb9cf27-5258-4192-b35b-418f0782c7a3' $project.Id = "MyApp" $dir = New-Object [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>This is very much a work-in-progress, but I just successfully built an MSI package from PowerShell using <a href="http://csscript.net/WixSharp.html">WixSharp</a> and the following test code:</p>
<div class="wlWriterEditableSmartContent" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b0fb8d3b-a3ae-4093-9d04-f50ea3360d28" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="brush: powershell">$dll = 'C:\Program Files\WixSharp\WixSharp.dll'
$path = "c:\temp\out.msi"
[system.Environment]::CurrentDirectory = ( Split-Path $path )
Add-Type -Path $dll
$project = New-Object wixsharp.Project
$project.Name = "MyApp"
$project.GUID = [system.Guid]'3bb9cf27-5258-4192-b35b-418f0782c7a3'
$project.Id = "MyApp"
$dir = New-Object wixsharp.Dir( "%ProgramFiles%\My Company\My Product" )
$dir.files = @(
	( New-Object wixsharp.File( "C:\temp\ext18866\install.exe" ) ),
	( New-Object wixsharp.File( "c:\temp\ext18866\install.res.dll" ) )
)
$project.Dirs = @( $dir )
[wixsharp.Compiler]::BuildMsi( $project, $path )</pre>
</div>
<p>Very simple installer, obviously, but it may just solve a problem for me.&#160; I’ll have to write more about my research which led up to Wixsharp, but for now—it’s time to sleep.&#160; <img src='http://halr9000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>One more thing: this <a href="http://www.codeproject.com/KB/install/WixSharpArticle.aspx">Wixsharp howto</a> was invaluable.</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/768/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Why Isn&#8217;t Add/Remove Programs Better?</title>
		<link>http://halr9000.com/article/675</link>
		<comments>http://halr9000.com/article/675#comments</comments>
		<pubDate>Wed, 24 Dec 2008 18:56:55 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[asides]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/675</guid>
		<description><![CDATA[I hate this window! And it really isn’t much better on Vista. I spent several minutes looking for a single app (old version of PowerShell) this morning so that I could uninstall it and install CTP3. I really want a list that I can filter by partial string. And it takes so long to open! [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<!-- no icon for 'asides' --><p><a href="http://halr9000.com/stuff/WhyIsntAddRemoveProgramsBetter_C420/image.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="222" alt="image" src="http://halr9000.com/stuff/WhyIsntAddRemoveProgramsBetter_C420/image_thumb.png" width="304" align="right" border="0" /></a>I hate this window! And it really isn’t much better on Vista. I spent several minutes looking for a single app (old version of <a title="Microsoft Windows PowerShell command line shell and scripting language" href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank">PowerShell</a>) this morning so that I could uninstall it and install CTP3. I really want a list that I can filter by partial string. And it takes so long to open!</p>
<p>I know there’s third-party several replacements for it, but I’ve not tried any. Do you have any that you use?</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/675/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>PowerShell Script: Get-DriveSpace</title>
		<link>http://halr9000.com/article/654</link>
		<comments>http://halr9000.com/article/654#comments</comments>
		<pubDate>Mon, 01 Dec 2008 21:00:42 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/654</guid>
		<description><![CDATA[Just found this cool post from sepeck with a script that shows you the drive stats on remote servers in a very nice table. Read the post. Here’s what it looks like in action: PS &#62; Get-DriveSpace -SystemName eastman deviceid FreeSpaceGB DriveSizeGB Percentfree -------- ----------- ----------- ----------- C: 3.11 12.00 25.92 D: 69.44 824.56 8.42]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>Just found this cool post from <a href="http://www.blkmtn.org/sepeck" target="_blank">sepeck</a> with a script that shows you the drive stats on remote servers in a very nice table.</p>
<p><a href="http://www.blkmtn.org/PowerShell_Function_Get-DriveSpace" target="_blank">Read the post</a>.</p>
<p>Here’s what it looks like in action:</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">PS <span style="color: #0000ff">&gt;</span> Get-DriveSpace -SystemName eastman

deviceid                 FreeSpaceGB              DriveSizeGB             Percentfree
--------                 -----------              -----------             -----------
C:                       3.11                     12.00                   25.92
D:                       69.44                    824.56                  8.42</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/654/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m a PC</title>
		<link>http://halr9000.com/article/638</link>
		<comments>http://halr9000.com/article/638#comments</comments>
		<pubDate>Mon, 17 Nov 2008 20:55:57 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[asides]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/638</guid>
		<description><![CDATA[Ok—technically, I’m still a human. but I am big on the PC thang. &#160;]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<!-- no icon for 'asides' --><p>Ok—technically, I’m still a human. but I am big on the PC thang.</p>
<p>&#160;</p>
<p> <a href="http://www.facebook.com/windows" target="_blank"><img src="http://blogs.msdn.com/blogfiles/stevecla01/WindowsLiveWriter/GetyourImaPCbadge_13387/display_picture_0006_10_2.gif" /></a><a href="http://www.facebook.com/windows" target="_blank"><img src="http://blogs.msdn.com/blogfiles/stevecla01/WindowsLiveWriter/GetyourImaPCbadge_13387/display_picture_0007_1_2.gif" /></a> <a href="http://www.facebook.com/windows" target="_blank"><img src="http://blogs.msdn.com/blogfiles/stevecla01/WindowsLiveWriter/GetyourImaPCbadge_13387/display_picture_0008_11_4.gif" /></a><a href="http://www.facebook.com/windows" target="_blank"><img src="http://blogs.msdn.com/blogfiles/stevecla01/WindowsLiveWriter/GetyourImaPCbadge_13387/display_picture_0009_12_4.gif" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/638/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exclusive: PowerShell Plus is Back in Action!</title>
		<link>http://halr9000.com/article/595</link>
		<comments>http://halr9000.com/article/595#comments</comments>
		<pubDate>Sun, 24 Aug 2008 19:35:00 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[powershell plus]]></category>
		<category><![CDATA[screenshots]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/595</guid>
		<description><![CDATA[And it is back in style. Tomorrow morning (Aug 25th), the new beta for PowerShell Plus Professional 2.0 will be officially released, and it is HOT. Tobias has been working extremely hard over the past several months adding new features and tweaking the UI. He has put out an application which is very nearly perfect. [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<!-- no icon for 'Software' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>And it is back in style. Tomorrow morning (Aug 25th), the new beta for <a title="An enhanced PowerShell console plus feature-filled editor.  Free for non-commercial use." href="http://powershell.com" target="_blank">PowerShell Plus</a> Professional 2.0 will be officially released, and it is HOT. <a href="http://powershellcommunity.org/Blogs/CommunityBlogs/tabid/55/BlogID/19/Default.aspx">Tobias</a> has been working extremely hard over the past several months adding new features and tweaking the UI. He has put out an application which is very nearly perfect. I’ve had inside access and have been watching 2.0 extremely closely ever since 1.0 was out the door and I imagine he could not be more pleased and excited to be able to finally show everyone what he has been working on.</p>
<p>Go check it out for yourself and download the beta over at <a title="Microsoft Windows PowerShell command line shell and scripting language" href="http://powershell.com" target="_blank"></a><a href="http://www.idera.com/Products/PowerShell/">Idera.com</a>. Here are a few screenshots to whet your appetite.</p>
<p><img style="border-right: 0px; border-top: 0px; margin: 0px; border-left: 0px; border-bottom: 0px" title="image" src="http://halr9000.com/stuff/PowerShellPlusisBackinAction_12B8B/image.png" border="0" alt="image" width="644" height="440" /></p>
<p><img style="border-right: 0px; border-top: 0px; margin: 0px; border-left: 0px; border-bottom: 0px" title="image" src="http://halr9000.com/stuff/PowerShellPlusisBackinAction_12B8B/image_3.png" border="0" alt="image" width="644" height="350" /></p>
<p><img style="border-right: 0px; border-top: 0px; margin: 0px; border-left: 0px; border-bottom: 0px" title="image" src="http://halr9000.com/stuff/PowerShellPlusisBackinAction_12B8B/image_4.png" border="0" alt="image" width="506" height="382" /></p>
<p><img style="border-right: 0px; border-top: 0px; margin: 0px; border-left: 0px; border-bottom: 0px" title="image" src="http://halr9000.com/stuff/PowerShellPlusisBackinAction_12B8B/image_5.png" border="0" alt="image" width="635" height="484" /></p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/595/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I Found a Vista Killer Feature: Sideshow</title>
		<link>http://halr9000.com/article/593</link>
		<comments>http://halr9000.com/article/593#comments</comments>
		<pubDate>Tue, 19 Aug 2008 01:35:02 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/593</guid>
		<description><![CDATA[I really didn’t think much of the Sideshow feature when I had first heard about it. But that was before I saw this: This is very cool – you can use your Windows Mobile device to control your Powerpoint slides via Bluetooth.&#160; It basically combines the Windows SideShow for Windows Mobile preview with a SideShow [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<!-- no icon for 'Windows Mobile' --></p>
<p>I really didn’t think much of <a href="http://en.wikipedia.org/wiki/Windows_SideShow" target="_blank">the Sideshow feature</a> when I had first heard about it. But that was before I saw this:</p>
<blockquote><p>This is very cool – you can use your Windows Mobile device to control your Powerpoint slides via Bluetooth.&#160; It basically combines the Windows SideShow for Windows Mobile preview with a SideShow gadget for Powerpoint.</p>
<p>To do this you will need two components:</p>
<ol>
<li><b><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=79f19684-f862-4e02-a2b0-0003b4565f34&amp;displaylang=en">Windows SideShow for Windows Mobile Developer Preview</a></b> </li>
<li><b><a href="http://gallery.live.com/liveItemDetail.aspx?li=fe99f5dc-e62d-46e0-a294-1ec3aa4960c4&amp;bt=8&amp;pl=7">Office PowerPoint Remote</a></b> </li>
</ol>
</blockquote>
</p>
<p>Man, this would be awesome for doing presentations! That’s it, I gotta rebuild my laptop.</p>
<p>(via <a href="http://blogs.msdn.com/jasonlan/archive/2008/08/18/control-powerpoint-with-your-windows-mobile-device.aspx" target="_blank">MR Mobile</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/593/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why Does WS-Management / WinRM Bug Me?</title>
		<link>http://halr9000.com/article/583</link>
		<comments>http://halr9000.com/article/583#comments</comments>
		<pubDate>Sat, 02 Aug 2008 03:15:39 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/583</guid>
		<description><![CDATA[I this is at the root of that sentiment: Beyond the SOAP issues, WMI/CIM/WBEM is simply butt-ugly (maybe even fugly). This article isn’t about WS-Management or WinRM per se but I found some interesting commentary on it and other management protocls.]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>I this is at the root of that sentiment:</p>
<blockquote><p>Beyond the SOAP issues, WMI/CIM/WBEM is simply butt-ugly (maybe even <em>fugly</em>).</p>
</blockquote>
<p><a href="http://vellon.com/2008/06/23/monitoring-what-you-dont-know-can-hurt-you/" target="_blank">This article</a> isn’t about WS-Management or WinRM per se but I found some interesting commentary on it and other management protocls.</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/583/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerShell Script: Get-Parameter</title>
		<link>http://halr9000.com/article/482</link>
		<comments>http://halr9000.com/article/482#comments</comments>
		<pubDate>Thu, 15 May 2008 01:21:31 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/482</guid>
		<description><![CDATA[As some know, I&#8217;m working on a book.&#160; The subject involves working with over 120 PowerShell cmdlets.&#160; Many of these cmdlets have help files that are incomplete, so I have been blazing some pretty new territory.&#160; I constantly have to look up the parameters for these cmdlets so that I can be sure that what [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>As some know, I&#8217;m working on <a href="http://sapienpress.com/vmware.asp">a book</a>.&nbsp; The subject involves working with over 120 PowerShell cmdlets.&nbsp; Many of these cmdlets have help files that are incomplete, so I have been blazing some pretty new territory.&nbsp; I constantly have to look up the parameters for these cmdlets so that I can be sure that what I&#8217;m writing is accurate.&nbsp; Rather than view the detailed help (which might not even be helpful), I wrote a script to pull out the parameters into a list.&nbsp; The script was embarrassing, really, but it was a quick hack that I needed and it worked.&nbsp; Then, just the other day while browsing the <a href="http://communities.vmware.com/community/developer/windows_toolkit?view=discussions">VMware Community forums</a>, another user who goes by the name LucD spouted a snippet of code that for some reason I had not happened upon before.&nbsp; It was a much better way to do what I had been doing with my previous Get-Parameter function.&nbsp; I took his technique and added some BSonPosh-style custom object goodness and a few other features and hark!&nbsp; The script is ready for all to see.&nbsp; <img src='http://halr9000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #0000ff">function</span> Get-Parameter ($Cmdlet) {</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">    <span style="color: #0000ff">foreach</span> ($paramset <span style="color: #0000ff">in</span> (Get-Command $Cmdlet).ParameterSets){</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        $Output = @()</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        <span style="color: #0000ff">foreach</span> ($<span style="color: #0000ff">param</span> <span style="color: #0000ff">in</span> $paramset.Parameters) {</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            $<span style="color: #0000ff">process</span> = <span style="color: #006080">""</span> | Select-Object Name, ParameterSet, Aliases, IsMandatory, CommonParameter</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            $<span style="color: #0000ff">process</span>.Name = $<span style="color: #0000ff">param</span>.Name</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            <span style="color: #0000ff">if</span> ( $paramset.name <span style="color: #cc6633">-eq</span> <span style="color: #006080">"__AllParameterSets"</span> ) { $<span style="color: #0000ff">process</span>.ParameterSet = <span style="color: #006080">"Default"</span> }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            <span style="color: #0000ff">else</span> { $<span style="color: #0000ff">process</span>.ParameterSet = $paramset.Name }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            $<span style="color: #0000ff">process</span>.Aliases = $<span style="color: #0000ff">param</span>.aliases</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            $<span style="color: #0000ff">process</span>.IsMandatory = $<span style="color: #0000ff">param</span>.IsMandatory </pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            <span style="color: #0000ff">if</span> ($<span style="color: #0000ff">param</span>.aliases <span style="color: #cc6633">-match</span> <span style="color: #006080">"vb|db|ea|wa|ev|wv|ov|ob"</span>) { $<span style="color: #0000ff">process</span>.CommonParameter = $TRUE }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">            <span style="color: #0000ff">else</span> { $<span style="color: #0000ff">process</span>.CommonParameter = $FALSE }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">            $output += $<span style="color: #0000ff">process</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">        Write-Output $Output</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">        Write-Host <span style="color: #006080">"`n"</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none">    }</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">}</pre>
</div>
</div>
<p>As input it takes a single cmdlet name.&nbsp; The output looks like the below.&nbsp; Note the blank line, that&#8217;s to help separate when you have multiple ParameterSets.&nbsp; I added a CommonParameter field so that you could filter out the boring stuff if you want.</p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">PS &gt; Get-Parameter New-Runspace | ft

Name               ParameterSet       Aliases                   IsMandatory    CommonParameter
----               ------------       -------                   -----------    ---------------
ComputerName       ComputerName       {Cp}                            False              False
Authentication     ComputerName       {}                              False              False
Credential         ComputerName       {}                              False              False
Port               ComputerName       {}                              False              False
UseSSL             ComputerName       {}                              False              False
Shell              ComputerName       {}                              False              False
ApplicationName    ComputerName       {}                              False              False
ThrottleLimit      ComputerName       {}                              False              False
Verbose            ComputerName       {vb}                            False               True
Debug              ComputerName       {db}                            False               True
ErrorAction        ComputerName       {ea}                            False               True
WarningAction      ComputerName       {wa}                            False               True
ErrorVariable      ComputerName       {ev}                            False               True
WarningVariable    ComputerName       {wv}                            False               True
OutVariable        ComputerName       {ov}                            False               True
OutBuffer          ComputerName       {ob}                            False               True

Authentication     Uri                {}                              False              False
Credential         Uri                {}                              False              False
Shell              Uri                {}                              False              False
ThrottleLimit      Uri                {}                              False              False
ConnectionUri      Uri                {URI, CU}                       False              False
Verbose            Uri                {vb}                            False               True
Debug              Uri                {db}                            False               True
ErrorAction        Uri                {ea}                            False               True
WarningAction      Uri                {wa}                            False               True
ErrorVariable      Uri                {ev}                            False               True
WarningVariable    Uri                {wv}                            False               True
OutVariable        Uri                {ov}                            False               True
OutBuffer          Uri                {ob}                            False               True

Runspace           Runspace           {RunspaceInfo}                  False              False
ThrottleLimit      Runspace           {}                              False              False
Verbose            Runspace           {vb}                            False               True
Debug              Runspace           {db}                            False               True
ErrorAction        Runspace           {ea}                            False               True
WarningAction      Runspace           {wa}                            False               True
ErrorVariable      Runspace           {ev}                            False               True
WarningVariable    Runspace           {wv}                            False               True
OutVariable        Runspace           {ov}                            False               True
OutBuffer          Runspace           {ob}                            False               True</pre>
</div>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:5385cd08-1ba2-406c-a9e8-5813ff31fdff" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<p>file attachment: <a href="http://halr9000.com/stuff/PowerShellScriptGetParameter_12C56/getparameter.PS1" target="_blank">get-parameter.ps1</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/482/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Live Mesh is pretty sweet!</title>
		<link>http://halr9000.com/article/479</link>
		<comments>http://halr9000.com/article/479#comments</comments>
		<pubDate>Sat, 26 Apr 2008 00:10:46 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/479</guid>
		<description><![CDATA[If you&#8217;ve been under a rock, Live Mesh is Microsoft&#8217;s latest foray into the cloud computing space.&#160; So far it&#8217;s just a &#8220;tech preview&#8221; and feature-wise, it&#8217;s fairly limited.&#160; Today, it&#8217;s basically FolderShare with a few extra features. But if you read up on the Live Mesh blog, there is a ton of cool stuff [...]]]></description>
			<content:encoded><![CDATA[<!-- no icon for 'Internet' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="424" alt="image" src="http://halr9000.com/wp-content/uploads/2008/04/image.png" width="296" align="left" border="0"/> If you&#8217;ve been under a rock, <a href="http://mesh.com">Live Mesh</a> is Microsoft&#8217;s latest foray into the cloud computing space.&nbsp; So far it&#8217;s just a &#8220;tech preview&#8221; and feature-wise, it&#8217;s fairly limited.&nbsp; Today, it&#8217;s basically <a href="http://foldershare.com">FolderShare</a> with a few extra features.</p>
<p>But if you read up on the <a href="http://blogs.msdn.com/livemesh">Live Mesh blog</a>, there is a ton of cool stuff in store.&nbsp; It&#8217;s very visionary&#8211;hopefully that stuff lands here on Earth with us.&nbsp; <img src='http://halr9000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you need an invite, leave a comment on the blog.&nbsp; Also, if you are interested in joining a little proof-of-concept file sharing group we have going right now for sharing PowerShell scripts, let me know.</p>
<p>P.S. Sorry I&#8217;m so light on blogging lately&#8211;Twitter has sorta caught my fancy lately and <a href="http://twitter.com/halr9000">I&#8217;ve been writing</a> more there.</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/479/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Start++, Almost a Reason to Run Vista</title>
		<link>http://halr9000.com/article/469</link>
		<comments>http://halr9000.com/article/469#comments</comments>
		<pubDate>Fri, 07 Mar 2008 16:09:32 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/469</guid>
		<description><![CDATA[Very cool-looking tool!&#160; From the site: What is Start++? Start++ is an enhancement for the Start Menu in Windows Vista. It also extends the Run box and the command-line with customizable commands.&#160; For example, typing &#8220;w Windows Vista&#8221; will take you to the Windows Vista page on Wikipedia! And now, some screenshots: (thanks to Trent, [...]]]></description>
			<content:encoded><![CDATA[<!-- no icon for 'Software' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>Very cool-looking tool!&nbsp; From <a href="http://brandontools.com/content/StartPlusPlus.aspx">the site</a>:</p>
<blockquote><p><strong>What is Start++?</strong> </p>
<p>Start++ is an enhancement for the Start Menu in Windows Vista. It also extends the Run box and the command-line with customizable commands.&nbsp; For example, typing &#8220;w Windows Vista&#8221; will take you to the Windows Vista page on Wikipedia!</p>
</blockquote>
<p>And now, some screenshots: </p>
<p><a href="http://halr9000.com/stuff/StartAlmostaReasontoRunVista_9CD5/image.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="486" alt="image" src="http://halr9000.com/stuff/StartAlmostaReasontoRunVista_9CD5/image_thumb.png" width="333" border="0"/></a>  </p>
<p><a href="http://halr9000.com/stuff/StartAlmostaReasontoRunVista_9CD5/image_3.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="474" alt="image" src="http://halr9000.com/stuff/StartAlmostaReasontoRunVista_9CD5/image_thumb_3.png" width="329" border="0"/></a>  </p>
<p>(thanks to <a href="http://lifehacker.com/commenter/trentono/">Trent</a>, a <a href="http://lifehacker.com/">Lifehacker</a> commenter)</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/469/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Server 2008 &amp; PowerShell discussion, continued</title>
		<link>http://halr9000.com/article/467</link>
		<comments>http://halr9000.com/article/467#comments</comments>
		<pubDate>Mon, 03 Mar 2008 20:46:40 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/467</guid>
		<description><![CDATA[My long reply to a long reply was getting a bit&#8230;long, so I thought I&#8217;d move it here. Much easier to do the editing in Live Writer anyhow. You can find the original article and several comments from myself and the author at this blog post: Why PowerShell, Servermanagercmd and co. donâ€™t really rock on [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>My long reply to a long reply was getting a bit&#8230;long, so I thought I&#8217;d move it here.  Much easier to do the editing in Live Writer anyhow.  <img src='http://halr9000.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>You can find the original article and several comments from myself and the author at this blog post: <a href="http://4sysops.com/archives/why-powershell-servermanagercmd-and-co-don%e2%80%99t-really-rock-on-the-command-prompt/">Why PowerShell, Servermanagercmd and co. donâ€™t really rock on the command prompt</a>.  I recommend you read the article, it&#8217;s a nicely-worded opinion piece.  The article deals with the author&#8217;s frustrations with Server 2008 command-line utilities (which I agree with) but he then extends those opinions on to PowerShell.  I&#8217;m making the point that PowerShell addresses most if not all of his frustrations.  He also goes into reasons why he thinks the GUI is generally superior for any task, which I also disagree with.  (Lots of dangling prepositions today.)</p>
<p>My reply continues below:</p>
<p>Well, the PowerShell rebuttal to &#8216;difficulty in memorizing commands&#8217; is handled by a cmdlet called &#8220;get-command&#8221;, and the enforced (by Microsoft&#8217;s Common Engineering Criteria internally) consistent naming convention for cmdlets and other related interfaces such as PS Providers.  For example, say you want to do something with a mailbox in exchange.  You already know the noun you are dealing with&#8211;it&#8217;s a mailbox.  So you type &#8220;get-command *mailbox&#8221; or &#8220;get-command -noun mailbox&#8221; and you&#8217;ll get several matches.  To go a step higher, say you know you want to do something with VMware but you forgot how to connect to the auth server and you have no idea if the verb (the part before the dash) is even called &#8216;connect&#8217;.  In a case like that you would use &#8220;get-command -pssnapin v*&#8221;.  That will return all cmdlets which are contained within any snapin which starts with the letter V.</p>
<p>On top of all that, there&#8217;s some great IDEs and enhanced editors and graphical consoles whicih make all of this even easier.  You can tet real visual studio-like Intellisense on filenames, cmdlets, parameters, .NET types, WMI classes&#8230;I certainly can&#8217;t memorize every WMI class, but I can type &#8220;get-wmiobject win32_net&#8221; and hit TAB and voila, there&#8217;s a dozen answers popped up in a listbox.</p>
<p>In answer to your point that &#8220;The number of software vendors offering tools for administrators has been growing dramatically in the last years.&#8221;: I would say <font color="#ff0000"><strong>YES&#8211;and PowerShell is/will be largely seen as responsible for accelerating that trend.</strong></font>  VMware, Citrix, IBM and many more vendors are starting to provide PowerShell hooks.</p>
<p>And lastly, of course GUIs are more prone to mistake!  How many times have people accidentally clicked on shutdown when they meant logoff (before the start menu was rearranged in what&#8230;2003)?  I mean&#8230;seriously, I could go on and on.  GUI accidents could be blamed for spyware installs, too.</p>
<p>If I&#8217;m about to make a change in a production environment which may have adverse affects, best practice wisdom would say (yeah, I know that&#8217;s like saying &#8220;they say&#8221; but hear me out) you should make a change plan and a backout plan.  You are already doing things to a high level of detail, you might as well script the whole thing.  This allows you to not only automate the change, but to validate the change, and if necessary, reverse it.  This applies doubly so if you are not the person to make the change.  Maybe you are the lead admin delegating a task off to a junior admin or an offshore resource.  you tell them:</p>
<blockquote><p>Run this script, wake me if stuff starts blowing up!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/467/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows 2008 Server launch event in Atlanta</title>
		<link>http://halr9000.com/article/463</link>
		<comments>http://halr9000.com/article/463#comments</comments>
		<pubDate>Wed, 20 Feb 2008 14:10:18 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/463</guid>
		<description><![CDATA[If you are going, let me know via the event I just created in Facebook.&#160; Details are in the link.]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>If you are going, let me know via <a href="http://www.facebook.com/event.php?eid=10571182124">the event</a> I just created in Facebook.&nbsp; Details are in the link.</p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/463/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New PowerShell Plus features</title>
		<link>http://halr9000.com/article/451</link>
		<comments>http://halr9000.com/article/451#comments</comments>
		<pubDate>Fri, 07 Dec 2007 04:37:19 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/451</guid>
		<description><![CDATA[This will be a quick blog post because it&#8217;s late. Development has been rapid lately on the ShellTools team.&#160; Check out these bits from the PS+ change log: Added a separate input panel below the console. Press CTRL+I to toggle. ENTER will execute code inside the panel, SHIFT+ENTER will add a new line and CTRL+ENTER [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<!-- no icon for 'Software' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>This will be a quick blog post because it&#8217;s late.</p>
<p>Development has been rapid lately on the ShellTools team.&nbsp; Check out these bits from the <a href="http://www.powershell.com/plus/changelog.html">PS+ change log</a>:</p>
<ul>
<li>Added a separate <strong>input panel</strong> below the console. Press CTRL+I to toggle. ENTER will execute code inside the panel, SHIFT+ENTER will add a new line and CTRL+ENTER executes without adding a new line</li>
<li>Editor now supports <strong>code folding</strong></li>
<li>Improved <strong>color highlighting </strong>in editor and added support for here-strings</li>
<li>Tools/Logging will write out a <strong>transcript</strong> of your commands to a text file</li>
</ul>
<p>Check out the public beta of <a href="http://www.powershell.com/plus/index.html">PowerShell Plus</a> today!</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="274" alt="image" src="http://halr9000.com/stuff/NewPowerShellPlusfeatures_14C25/image.png" width="482" border="0"/></p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/451/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Everybody Start Learning WinRM!</title>
		<link>http://halr9000.com/article/442</link>
		<comments>http://halr9000.com/article/442#comments</comments>
		<pubDate>Mon, 01 Oct 2007 12:10:41 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Powershell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/442</guid>
		<description><![CDATA[Check out the notes buried near the bottom of this article on WinRM: WinRM: Remote Management Across the Internet Something else to consider. Sometime before the end of the year an upgraded CTP (Community Technology Preview) version of Windows PowerShell will be released, an upgrade that will enable you to run most Windows PowerShell cmdlets [...]]]></description>
			<content:encoded><![CDATA[<a href="http://halr9000.com/article/category/programming/scripting/powershell" title="Powershell"><img src="/wp-content/icons/topic_powershell.png" align="right" width="70" height="53" alt="Powershell" /></a>
<a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p>Check out the notes buried near the bottom of this article on WinRM: <a href="http://www.microsoft.com/technet/scriptcenter/newswire/winrm.mspx">WinRM: Remote Management Across the Internet</a></p>
<blockquote><p><b>Something else to consider</b>. Sometime before the end of the year <font color="#ff0000">an upgraded CTP (Community Technology Preview) version of Windows PowerShell will be released</font>, an upgrade that will <font color="#ff0000">enable you to run most Windows PowerShell cmdlets against remote computers</font>. The catch? This new version of Windows PowerShell also relies on WinRM as its remote transport protocol. If you?re interested in using Windows PowerShell to manage remote computers you?ll need to download and install WinRM on your Windows XP and Windows Server 2003 machines.</p>
</blockquote>
<p>So this is good and bad.&nbsp; It&#8217;s great that now we know the direction MS is headed with regards to remote management in PowerShell.&nbsp; It sucks to have to install yet another piece of software on all your servers though.&nbsp; For many IT shops this is a non-trivial thing.&nbsp; As Gaurhoth on #Powershell advises, it might make sense to get WinRM in your new server builds now:</p>
<blockquote><p>I don&#8217;t have to do change management on &#8216;new&#8217; stuff&#8230;. getting WinRM installed on existing servers might be a little harder.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/442/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Codebank &#8211; a cool outliner / database</title>
		<link>http://halr9000.com/article/406</link>
		<comments>http://halr9000.com/article/406#comments</comments>
		<pubDate>Fri, 10 Aug 2007 18:05:31 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/406</guid>
		<description><![CDATA[CodeBank v2 is tree based (XML) personal information database. It allows you to maintain a hierachical database of textual information like: programming code snippets notes links quotes SQL queries whatever you like you name it CodeBank is designed to work with relatively large amount of records. I have successfuly tested it with 20000+ records.&#160; Unlike [...]]]></description>
			<content:encoded><![CDATA[<!-- no icon for 'Programming' --><!-- no icon for 'Scripting' --><!-- no icon for 'Software' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<blockquote><h4><a href="http://www.zeraha.org/dload.php?action=file&amp;file_id=1">CodeBank</a> v2 is tree based (XML) personal information database.</h4>
<p>It allows you to maintain a hierachical database of textual information like:</p>
<ul>
<li>programming code snippets</li>
<li>notes</li>
<li>links</li>
<li>quotes</li>
<li>SQL queries</li>
<li>whatever you like you name it</li>
</ul>
<p><a href="http://halr9000.com/wp-content/uploads/2007/08/image1.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="182" alt="image" src="http://halr9000.com/wp-content/uploads/2007/08/image-thumb.png" width="240" align="right" border="0"/></a>CodeBank is designed to work with relatively large amount of records. I have successfuly tested it with 20000+ records.&nbsp; Unlike similar programs CodeBank is fully portable and can be carried on removable media. The compression feature&nbsp;helps in that matter too. The encryption feature provides high grade (256bit AES) of security for sensitive information.&nbsp;&nbsp;The internal search engine can search for words, phrases and regular expressions.&nbsp; CodeBank also allows you to comment and tag your own snippets/records so you can find them easier later.&nbsp; The initial reason I developped this application was to help with the training of a programming team for programming competitions (ACM, TopCoder etc.)</p>
<ul>
<li>remembers the exact state you left it  </li>
<li>Great &#8220;Search Engine&#8221; for the database  </li>
<li>syntax highlightning in C/C++, Object Pascal, Java, XML, Visual Basic, VBScript, JavaScript, CSS, HTML, PHP, Perl, Python, SQL  </li>
<li>Drag &amp; Drop  </li>
<li>Unlimited database size  </li>
<li>Export/Import between databases  </li>
<li>zip Compression  </li>
<li>AES Encryption</li>
</ul>
</blockquote>
<p><a href="http://www.zeraha.org/dload.php?action=file&amp;file_id=1">Go get it!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/406/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cool download: Taskix</title>
		<link>http://halr9000.com/article/403</link>
		<comments>http://halr9000.com/article/403#comments</comments>
		<pubDate>Fri, 10 Aug 2007 02:03:05 +0000</pubDate>
		<dc:creator>halr9000</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://halr9000.com/article/403</guid>
		<description><![CDATA[Taskix is a neat little utility which lets you re-order the buttons in your Windows taskbar.&#160; It&#8217;s tiny, and free.&#160; What more could you ask? &#160;]]></description>
			<content:encoded><![CDATA[<!-- no icon for 'Software' --><a href="http://halr9000.com/article/category/software/windows" title="Windows"><img src="/wp-content/icons/topic_windows.gif" align="right" width="54" height="46" alt="Windows" /></a>
<p><a href="http://taskix.robustit.com/">Taskix</a> is a neat little utility which lets you re-order the buttons in your Windows taskbar.&nbsp; It&#8217;s tiny, and free.&nbsp; What more could you ask?</p>
<p>&nbsp;</p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="144" alt="image" src="http://halr9000.com/wp-content/uploads/2007/08/image.png" width="246" border="0"/></p>
]]></content:encoded>
			<wfw:commentRss>http://halr9000.com/article/403/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

