<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>jaybaz [MS] WebLog : PowerShell</title><link>http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx</link><description>Tags: PowerShell</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Screenshot of Select-GraphicalFilteredObject.ps1 in action</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/09/12/screenshot-of-select-graphicalfilteredobject-ps1-in-action.aspx</link><pubDate>Wed, 12 Sep 2007 22:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4883638</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/4883638.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=4883638</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=4883638</wfw:comment><description>&lt;P&gt;A picture would be helpful in understanding what &lt;A class="" href="http://blogs.msdn.com/jaybaz_ms/archive/2007/09/12/powshell-gui-for-selecting-objects-in-a-pipeline-select-graphiphicalfilteredobject-ps1.aspx" target=_blank mce_href="http://blogs.msdn.com/jaybaz_ms/archive/2007/09/12/powshell-gui-for-selecting-objects-in-a-pipeline-select-graphiphicalfilteredobject-ps1.aspx"&gt;this script&lt;/A&gt; does.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;TT&gt;dir $pshome | Select-GraphicalFilteredObject.ps1 -title "Jay's blog is the best!"&lt;/TT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;gives this UI:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://blogs.msdn.com/jaybaz_ms/attachment/4883638.ashx" mce_src="http://blogs.msdn.com/jaybaz_ms/attachment/4883638.ashx"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4883638" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/jaybaz_ms/attachment/4883638.ashx" length="35434" type="image/x-png" /><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Powshell GUI for selecting objects in a pipeline ("Select-GraphiphicalFilteredObject.ps1")</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/09/12/powshell-gui-for-selecting-objects-in-a-pipeline-select-graphiphicalfilteredobject-ps1.aspx</link><pubDate>Wed, 12 Sep 2007 22:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4883624</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/4883624.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=4883624</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=4883624</wfw:comment><description>&lt;P&gt;This is an enhanced version of a script from Lee Holmes' book &lt;EM&gt;Windows PowerShell Cookbook&lt;/EM&gt; (O'Reilly).&amp;nbsp; The original script takes a pipeline &amp;amp; presents a GUI that lets you select which elements to pass on to the next step in the pipeline.&amp;nbsp; That's unchanged, but my enhanced script does a little more:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added 'All' and 'None' buttons&lt;/LI&gt;
&lt;LI&gt;A little space around the checked list box&lt;/LI&gt;
&lt;LI&gt;Option to set the title to something domain-specific&lt;/LI&gt;
&lt;LI&gt;Turn off CheckOnClick behavior because I think it's annoying but leave it as an option, if you like that sort of thing.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;EDIT: Fix the attachment.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4883624" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/jaybaz_ms/attachment/4883624.ashx" length="4125" type="text/plain" /><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>PowerShell polyglot</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/04/26/powershell-polyglot.aspx</link><pubDate>Thu, 26 Apr 2007 20:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2288421</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/2288421.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=2288421</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=2288421</wfw:comment><description>&lt;P&gt;Here's an example of a CMD script that is implemented in PowerShell.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@:: This prolog allows a PowerShell script to be embedded in a .CMD file.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@:: Any non-PowerShell content must be preceeded by "@@"&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@setlocal&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@set POWERSHELL_BAT_ARGS=%*&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@if defined POWERSHELL_BAT_ARGS set POWERSHELL_BAT_ARGS=%POWERSHELL_BAT_ARGS:"=\"%&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT size=3&gt;@@PowerShell -Command Invoke-Expression $('$args=@(^&amp;amp;{$args} %POWERSHELL_BAT_ARGS%);'+[String]::Join(';',$((Get-Content '%~f0') -notmatch '^^@@'))) &amp;amp; goto :EOF&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If you don't need to support quoted arguments, you can even make it a one-liner:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;@PowerShell -Command Invoke-Expression $('$args=@(^&amp;amp;{$args} %*);'+[String]::Join(';',(Get-Content '%~f0') -notmatch '^^@PowerShell.*EOF$')) &amp;amp; goto :EOF&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2288421" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Controlling Virtual Server through Microsoft PowerShell</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/01/22/controlling-virtual-server-through-microsoft-powershell.aspx</link><pubDate>Tue, 23 Jan 2007 00:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1509817</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/1509817.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=1509817</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=1509817</wfw:comment><description>&lt;P&gt;In &lt;A class="" href="http://blogs.msdn.com/virtual_pc_guy/archive/2006/06/13/630165.aspx" mce_href="http://blogs.msdn.com/virtual_pc_guy/archive/2006/06/13/630165.aspx"&gt;his post by the same name&lt;/A&gt;, Ben describe a series of steps required in order to manipulate Virtual Server from PowerShell.&lt;/P&gt;
&lt;P&gt;I'm still a PowerShell novice, so I decided to use this problem as an opportunity to see if I could make things a little easier.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The reason it's hard is that you have to make a call to a native Win32 API, which is not accessible from PowerShell directly.&amp;nbsp; Ben's solution includes a peice of C# code that makes this call via interop, and then you have to compile it &amp;amp; load the assembly before you can do any work.&amp;nbsp; In my solution, my script does that work, as well.&lt;/P&gt;
&lt;P&gt;Here's the code:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;CODE&gt;
&lt;P&gt;$csc = (join-path ($env:windir) Microsoft.NET\Framework\v2.0.50727\csc.exe)&lt;/P&gt;
&lt;P&gt;$code = [IO.Path]::GetTempFileName() + ".cs"&lt;/P&gt;
&lt;P&gt;echo @"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Runtime.InteropServices;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class PowershellComSecurity&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DllImport("Ole32.dll", CharSet = CharSet.Auto)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static extern int CoSetProxyBlanket(IntPtr p0, uint p1, uint p2, uint p3, uint p4, uint p5, IntPtr p6, uint p7);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static int EnableImpersonation(object objDCOM) { return CoSetProxyBlanket(Marshal.GetIDispatchForObject(objDCOM), 10, 0, 0, 0, 3, IntPtr.Zero, 0); }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;"@ &amp;gt; $code&lt;/P&gt;
&lt;P&gt;$assembly = [IO.Path]::GetTempFileName() + ".dll"&lt;/P&gt;
&lt;P&gt;&amp;amp; $csc /nologo /target:library /out:$assembly $code&lt;BR&gt;[System.Reflection.Assembly]::LoadFrom($assembly) &amp;gt; $null&lt;/P&gt;
&lt;P&gt;function SetSecurity { [PowershellComSecurity]::EnableImpersonation($args[0]) }&lt;/P&gt;
&lt;P&gt;$vs = new-object -comObject "VirtualServer.Application"&lt;BR&gt;SetSecurity($vs)&lt;/P&gt;
&lt;P&gt;$vm = $vs.FindVirtualMachine("public")&lt;BR&gt;SetSecurity($vm)&lt;/P&gt;
&lt;P&gt;$guest = $vm.GuestOS&lt;BR&gt;SetSecurity($guest)&lt;/P&gt;
&lt;P&gt;$guest&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P mce_keep="true"&gt;It could use a little tuning.&amp;nbsp; If I was going to do this a lot, I'd put it all in to a new script.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1509817" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>export environment variables from CMD to PowerShell</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/01/17/export-environment-variables-from-cmd-to-powershell.aspx</link><pubDate>Thu, 18 Jan 2007 03:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1485972</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/1485972.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=1485972</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=1485972</wfw:comment><description>&lt;P&gt;If you want to use PowerShell, but already have a CMD script that you want to keep, and that CMD script sets environment variables, you're in a pickle.&amp;nbsp; Now I like pickles of all kinds, but Lee can help you get out of this one, with a script that exports the env. vars. back to the PS host.&lt;/P&gt;
&lt;P&gt;It's all in his post on entitled &lt;A class=TitleLinkStyle href="http://www.leeholmes.com/blog/NothingSolvesEverythingPowerShellAndOtherTechnologies.aspx" rel=bookmark&gt;&lt;FONT color=#000000&gt;Nothing solves everything – PowerShell and other technologies&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1485972" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Microsoft PowerShell is awesome</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2007/01/12/microsoft-powershell-is-awesome.aspx</link><pubDate>Sat, 13 Jan 2007 02:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1457538</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/1457538.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=1457538</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=1457538</wfw:comment><description>&lt;DIV&gt;At work I've been playing with &lt;A href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;&lt;FONT color=#0000cc&gt;Windows PowerShell&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp; I could try to describe it, but Wikipedia has already done a better job:&lt;/DIV&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;B&gt;Windows PowerShell&lt;/B&gt;, previously &lt;B&gt;Microsoft Shell&lt;/B&gt; or &lt;B&gt;MSH&lt;/B&gt; (&lt;A title="Microsoft codenames" href="http://en.wikipedia.org/wiki/Microsoft_codenames"&gt;codenamed&lt;/A&gt; &lt;B&gt;Monad&lt;/B&gt;) is an extensible &lt;A title="Command line interface" href="http://en.wikipedia.org/wiki/Command_line_interface"&gt;command line interface&lt;/A&gt; (CLI) shell and &lt;A title="Scripting language" href="http://en.wikipedia.org/wiki/Scripting_language"&gt;scripting language&lt;/A&gt; product developed by &lt;A title=Microsoft href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/A&gt;. The product is based on &lt;A title="Object-oriented programming" href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;object-oriented programming&lt;/A&gt; and the &lt;A title="Microsoft .NET" href="http://en.wikipedia.org/wiki/Microsoft_.NET"&gt;Microsoft .NET&lt;/A&gt; framework.&lt;/P&gt;
&lt;P&gt;Windows PowerShell 1.0 is available for download from the &lt;A class="external text" title=http://support.microsoft.com/kb/926139 href="http://support.microsoft.com/kb/926139"&gt;&lt;FONT color=#800080&gt;Microsoft web site&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;It blows my mind how cool it is.&amp;nbsp; Unfortunately it also, uhh, fries my brain because I don't know how to use it.&amp;nbsp; I'm a cmd.exe expert.&amp;nbsp; Seriously, I know way, way too much about writing CMD scripts, to the point where most people can't keep up.&amp;nbsp; I don't want this knowledge, and I see that PowerShell may give me freedom from the burden of the knowledge.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;My biggest annoyance is that it's not universally available.&amp;nbsp; I want to be able to sit down at any machine and just start using PowerShell, not having to worry about installing it (and the .Net Framework) first.&amp;nbsp; I want to be able to offer .PS1 scripts for anyone to use, without them having to jump through the same hoops.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Too bad it missed the Vista train.&amp;nbsp; That means it'll be 10 years before it's everywhere.&amp;nbsp; We'll get there.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1457538" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>Transition time</title><link>http://blogs.msdn.com/jaybaz_ms/archive/2005/10/20/transition-time.aspx</link><pubDate>Thu, 20 Oct 2005 18:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:483075</guid><dc:creator>jaybaz_MS</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jaybaz_ms/comments/483075.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jaybaz_ms/commentrss.aspx?PostID=483075</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jaybaz_ms/rsscomments.aspx?PostID=483075</wfw:comment><description>&lt;P&gt;We're at the point in the process for VS2005 where there is basically no work left for devs to do.&amp;nbsp; (The product hasn't shipped yet, but devs are not busy.)&lt;/P&gt;
&lt;P&gt;Before starting the next product cycle, there are a few things that we're doing differently.&amp;nbsp; One of them is "transition time", a form of &lt;A href="http://www.dorsethouse.com/books/slack.html"&gt;slack&lt;/A&gt;.&amp;nbsp; The end of a product cycle is always a lot of hard work, with a lot of pressure.&amp;nbsp; We strive for maximum efficiency, and a lot of other important things get pushed off.&amp;nbsp; The slack time is a chance to restore balance.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The first part is 7 days of self-directed time.&amp;nbsp;&lt;/STRONG&gt; These are work days, but there is nothing scheduled.&amp;nbsp; Different people are doing different things:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Talking to teams that are exploring long-lead ideas about new technology&lt;/LI&gt;
&lt;LI&gt;experimenting with retrofitting our legacy code for unit tests&lt;/LI&gt;
&lt;LI&gt;cleaning &amp;amp; rearranging their office &lt;/LI&gt;
&lt;LI&gt;building applications with VS2005&lt;/LI&gt;
&lt;LI&gt;reading&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I have been reading the new XP book (&lt;A href="http://www.amazon.com/gp/product/0321278658/104-2314806-4692754"&gt;Extreme Programming Explained: Embrace Change, Second Edition, by Kent Beck&lt;/A&gt;).&amp;nbsp; Combined with the first edition, it's very good stuff.&lt;/P&gt;
&lt;P&gt;I have moved in to a new, larger office.&amp;nbsp; I'll have to get some pictures to share &amp;amp; gloat.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;my side project&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I have been working on my side project, which is written in C#.&amp;nbsp; It's not something that would be useful outside of Microsoft, so I won't go in to details about what it does.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I always wrote it in C# 1.0, so I could deploy on the 1.0 CLR.&amp;nbsp; However, I can soon require my users to install the 2.0 CLR without it being draconian.&amp;nbsp; It's really nice to be able to use generics and anonymous methods.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;It's a command line app, and I've always struggled with the command line parameter handling.&amp;nbsp; What does a good syntax look like?&amp;nbsp; How should I parse it?&amp;nbsp; I've been rewriting the parser in a more generic way, so it's easy to expand the syntax as the tool grows.&lt;/P&gt;
&lt;P&gt;The original implemention has sparse unit test coverage.&amp;nbsp; Of course, retrofitting is hard; your code is no longer well-factored.&lt;/P&gt;
&lt;P&gt;However, the new lexer &amp;amp; parser were implemented from scratch, in isolation, and done test-first.&amp;nbsp; I've been using unit testing for TDD, as well as using &lt;A href="http://fit.c2.com"&gt;FIT&lt;/A&gt; for acceptance testing.&amp;nbsp; A powerful combination.&amp;nbsp; I just wish I had a pair to make up for all my pesky weaknesses.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The second part is 3 days of comp time&lt;/STRONG&gt; (days off), where we get to meet our families, rest, go sailing, etc.&amp;nbsp; Not sure what I'll do with that time... we'll see.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=483075" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jaybaz_ms/archive/tags/PowerShell/default.aspx">PowerShell</category></item></channel></rss>