<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://blog.usepowershell.com/wp-atom.php">
	<title type="text">Use PowerShell</title>
	<subtitle type="text">The Shell Is Calling</subtitle>

	<updated>2012-01-19T14:14:44Z</updated>

	<link rel="alternate" type="text/html" href="http://blog.usepowershell.com" />
	<id>http://blog.usepowershell.com/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.1.3">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/UsePowershell" /><feedburner:info uri="usepowershell" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[PowerShell V3 &#8211; Default Parameter Values]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/DVmxNFFtfs4/" />
		<id>http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/</id>
		<updated>2012-01-06T16:45:41Z</updated>
		<published>2012-01-06T16:45:41Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 1" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 2" />		<summary type="html"><![CDATA[PowerShell Version 3 introduces the concept of Default Parameter Values. This allows you to specify a value for one or more parameters for one or more commands. To implement this, you need to populate a new hashtable – $PSDefaultParameterValues That Description is Not Helpful Let’s look at some examples &#8211; First off, we can specify [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/">&lt;p&gt;PowerShell Version 3 introduces the concept of Default Parameter Values.&lt;/p&gt;
&lt;p&gt;This allows you to specify a value for one or more parameters for one or more commands.&lt;/p&gt;
&lt;p&gt;To implement this, you need to populate a new hashtable – $PSDefaultParameterValues&lt;/p&gt;
&lt;h3&gt;That Description is Not Helpful&lt;/h3&gt;
&lt;p&gt;Let’s look at some examples &amp;#8211; &lt;/p&gt;
&lt;p&gt;First off, we can specify the value for a parameter for a specific command.&amp;#160; The pattern used for the hashtable entries is &lt;em&gt;“NameOfCommand:NameOfParameter” = “ValueOfParameter”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;(I’m stealing some of these examples from the samples provided in CTP1.)&lt;/p&gt;
&lt;pre language="powershell"&gt;

$PSDefaultParameterValues = @{&amp;quot;Get-Process:Name&amp;quot;=&amp;quot;powershell&amp;quot;}

Get-Process

Get-Process e*
&lt;/pre&gt;
&lt;p&gt;With that set, every time we run Get-Process and do not specify the Name parameter, the PowerShell runtime will stick “powershell” in for that value.&amp;#160; A specified parameter will always override a default value.&lt;/p&gt;
&lt;p&gt;Let’s go the other way and, instead of specifying one command, set a parameter value on all commands (that have that parameter.&lt;/p&gt;
&lt;pre language="powershell"&gt;

$cred = Get-Credential mydomain\mydomainadminaccount

$PSDefaultParameterValues = @{&amp;quot;*:Credential&amp;quot; = $cred}
&lt;/pre&gt;
&lt;p&gt;This would provide your $cred to any Credential parameter.&lt;/p&gt;
&lt;p&gt;We can also use wildcards to match multiple commands.&lt;/p&gt;
&lt;pre language="powershell"&gt;$PSDefaultParameterValues = @{&amp;quot;*-AD*:Server&amp;quot; = 'MyDomainController'}&lt;/pre&gt;
&lt;p&gt;This would provide a default value to the Server parameter for any command whose noun started with AD (like everything in the ActiveDirectory module.&lt;/p&gt;
&lt;p&gt;Since this is a hashtable, it can hold many different mappings &amp;#8211; &lt;/p&gt;
&lt;pre language="powershell"&gt;

$PSDefaultParameterValues = @{

  &amp;quot;*:Credential&amp;quot; = $cred

  &amp;quot;Get-Process:Name&amp;quot;=&amp;quot;powershell&amp;quot;

  &amp;quot;*-AD*:Server&amp;quot; = 'MyDomainController'

}
&lt;/pre&gt;
&lt;p&gt;To turn off DefaultParameterValues (without removing everything you have set up), you can set a key “Disabled” equal to $true.&lt;/p&gt;
&lt;pre language="powershell"&gt;$PSDefaultParameterValues = @{&amp;quot;Disabled&amp;quot; = $true}&lt;/pre&gt;
&lt;p&gt;This concludes our brief look at DefaultParameterValues for today.&lt;/p&gt;
&lt;p&gt;Go grab &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27548" target="_blank"&gt;Version 3 CTP2&lt;/a&gt; and give it a whirl…&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W0quNuA9jarN_yV6h2I-kDGISWE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0quNuA9jarN_yV6h2I-kDGISWE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W0quNuA9jarN_yV6h2I-kDGISWE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0quNuA9jarN_yV6h2I-kDGISWE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=DVmxNFFtfs4:fXBMTEfdrn4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/DVmxNFFtfs4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[When Import-Module Does Not]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/ZvDYMAdNCBE/" />
		<id>http://blog.usepowershell.com/?p=310</id>
		<updated>2012-01-06T16:46:58Z</updated>
		<published>2012-01-06T15:34:46Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell Version 2" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 1" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 2" />		<summary type="html"><![CDATA[A question came up about the behavior of Import-Module (in the context of this interesting discussion of whether module authors should provide aliases), especially with Version 3 and the auto-loading of modules (what’s that?). So What’s the Question? Does the auto-loading of modules in PowerShell Version 3 use Import-Module behind the scenes?&#160; If it does, [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/01/when-import-module-does-not/">&lt;p&gt;A question came up about the behavior of &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141553" target="_blank"&gt;Import-Module&lt;/a&gt; (&lt;a href="http://poshoholic.com/2012/01/05/essential-powershell-to-alias-or-not-to-alias-that-is-the-question/" target="_blank"&gt;in the context of this interesting discussion of whether module authors should provide aliases&lt;/a&gt;), especially with Version 3 and the auto-loading of modules (&lt;a href="http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/" target="_blank"&gt;what’s that&lt;/a&gt;?).&lt;/p&gt;
&lt;h3&gt;So What’s the Question?&lt;/h3&gt;
&lt;p&gt;Does the &lt;a href="http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/" target="_blank"&gt;auto-loading of modules&lt;/a&gt; in PowerShell Version 3 use Import-Module behind the scenes?&amp;#160; If it does, can we use &lt;a href="http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/" target="_blank"&gt;default parameter sets&lt;/a&gt; to control what types of things are imported?&lt;/p&gt;
&lt;h3&gt;What Actually Happens?&lt;/h3&gt;
&lt;p&gt;So, it turns out that &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141553" target="_blank"&gt;Import-Module&lt;/a&gt; does get called behind the scenes and a &lt;a href="http://blog.usepowershell.com/2012/01/powershell-v3-default-parameter-values/" target="_blank"&gt;default parameter set (new feature)&lt;/a&gt; can be used to customize the import of new modules.&lt;/p&gt;
&lt;pre language="powershell"&gt;$PSDefaultParameterValues = @{
	&amp;quot;Import-Module:Alias&amp;quot;=@()
	&amp;quot;Import-Module:Function&amp;quot;='*'
	&amp;quot;Import-Module:Cmdlet&amp;quot;='*'
	&amp;quot;Import-Module:Variable&amp;quot;='*'
}
Get-Module
Get-BitsTransfer
Get-Module&lt;/pre&gt;
&lt;p&gt;This example (when used in PowerShell V3) will (from a base PowerShell session) show you what modules are loaded, attempt to run the Get-BitsTransfer command, and then show you what modules are now loaded (should include the BitsTransfer module now).&amp;#160; Since we’ve provided an empty array to the Alias parameter for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141553" target="_blank"&gt;Import-Module&lt;/a&gt;, any module that is imported will import any aliases.&lt;/p&gt;
&lt;h3&gt;Seems Like It Works… Where’s the Problem?&lt;/h3&gt;
&lt;p&gt;The problem comes in when you specify that only one of the four parameters (Alias, Function, Cmdlet, and Variable).&lt;/p&gt;
&lt;p&gt;You might expect that when you specify one parameter (example Alias), that the other portions of the import (Function, Cmdlet, and Variable) would behave just like if you did not specify any of them. &lt;/p&gt;
&lt;p&gt;Example -&lt;/p&gt;
&lt;p&gt;Open a new PowerShell session (V2 or V3) -&lt;/p&gt;
&lt;pre language="powershell"&gt;

Import-Module BitsTransfer
Get-Command -Module BitsTransfer

Get-Module
&lt;/pre&gt;
&lt;p&gt;This will import BitsTransfer module and all attendant commands and functions.&amp;#160; Note the ExportedCommands in the Get-Module output.&lt;/p&gt;
&lt;p&gt;Open a new PowerShell session and try -&lt;/p&gt;
&lt;pre language="powershell"&gt;

Import-Module BitsTransfer -Alias @()
Get-Command -Module BitsTransfer

Get-Module
&lt;/pre&gt;
&lt;p&gt;This should import the BitsTransfer without any aliases (yes, I know BitsTransfer doesn’t have any aliases, but I wanted a module that most any Windows 7 or Server 2008 R2 machine would have – feel free to test with whatever module you desire).&amp;#160; &lt;/p&gt;
&lt;p&gt;This did import the BitsTransfer, but no commands or variables were imported.&amp;#160; It only attempted to import aliases, and since we specified that aliases were to be an empty array, nothing was imported.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is counter-intuitive and is not the experience we should have.&amp;#160; Specifying one parameter should not change the default value of other parameters (from all to none in this case).&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;What Can I Do About It?&lt;/h3&gt;
&lt;p&gt;First of all, open PowerShell and try it!&amp;#160; If you have one of the CTPs of Version 3, try it there.&amp;#160; Also try it in V2 using &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141553" target="_blank"&gt;Import-Module&lt;/a&gt; directly. &lt;/p&gt;
&lt;p&gt;Then go to Microsoft Connect and vote up &lt;a title="https://connect.microsoft.com/PowerShell/feedback/details/716857/module-partially-loads-with-import-module" href="https://connect.microsoft.com/PowerShell/feedback/details/716857/module-partially-loads-with-import-module"&gt;https://connect.microsoft.com/PowerShell/feedback/details/716857/module-partially-loads-with-import-module&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xu8VpNVBRUAf7tBjz1z5ItXhgkk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xu8VpNVBRUAf7tBjz1z5ItXhgkk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xu8VpNVBRUAf7tBjz1z5ItXhgkk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xu8VpNVBRUAf7tBjz1z5ItXhgkk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=ZvDYMAdNCBE:z4MFTd73qzw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/ZvDYMAdNCBE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/01/when-import-module-does-not/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/01/when-import-module-does-not/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/01/when-import-module-does-not/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[PowerShell V3 &#8211; Auto-loading of Modules]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/wt1QQvOgUbI/" />
		<id>http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/</id>
		<updated>2012-01-06T15:32:38Z</updated>
		<published>2012-01-06T15:32:38Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 1" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 3 CTP 2" />		<summary type="html"><![CDATA[PowerShell V3 includes a new “feature” – Auto-loading of modules. What Does It Do? Module discovery has been updated to make the exported commands for modules that are not loaded visible in a PowerShell session. In Version 2, if you run Get-Module on a module that is not loaded but in your PSModulePath, you’ll get [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/">&lt;p&gt;PowerShell V3 includes a new “feature” – Auto-loading of modules.&lt;/p&gt;
&lt;h3&gt;What Does It Do?&lt;/h3&gt;
&lt;p&gt;Module discovery has been updated to make the exported commands for modules that are not loaded visible in a PowerShell session.&lt;/p&gt;
&lt;p&gt;In Version 2, if you run Get-Module on a module that is not loaded but in your PSModulePath, you’ll get some metadata about the module, but nothing about the ExportedFunctions, ExportedCmdlets, ExportedAliases, or ExportedVariables.&amp;#160; &lt;/p&gt;
&lt;p&gt;Version 3 changes this, allowing Get-Module to retrieve information on all the exported features of the module.&lt;/p&gt;
&lt;p&gt;This enables tab completion to complete the names of commands from modules that are not loaded.&amp;#160; It also provides information to the PowerShell runtime on where to get the command information from, if the module is not loaded.&lt;/p&gt;
&lt;p&gt;So, in Version 3, if you run a command from a module that is not loaded, the runtime will search your PSModulePath for the first command that it can find that matches that name and load the module that command is in for you.&lt;/p&gt;
&lt;h3&gt;I’m Not Sold&lt;/h3&gt;
&lt;p&gt;I really don’t care for this feature.&amp;#160; I like to be in control of what module I import.&amp;#160; The order in which modules are automatically imported depends on your PSModulePath.&amp;#160; You don’t get to pick what the order is…&amp;#160; User specific PSModulePath entries are first, then machine specific PSModulePath entries.&amp;#160; This can cause a host of unexpected problems when there are command name collisions.&lt;/p&gt;
&lt;p&gt;For example, the new Hyper-V cmdlets for Windows 8 cannot manage down-level Hyper-V machines, so you might need &lt;a href="http://pshyperv.codeplex.com/" target="_blank"&gt;James O’Neil’s Hyper-V module from Codeplex&lt;/a&gt;.&amp;#160; Both modules have Get-VM.&amp;#160; Since James’ module will be in my user PSModulePath (most likely), unless I specifically load the Windows 8 Hyper-V module, running Get-VM will always load James’ module.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W-ef8hegyN9c0XZAFKtp8-wMie8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-ef8hegyN9c0XZAFKtp8-wMie8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W-ef8hegyN9c0XZAFKtp8-wMie8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-ef8hegyN9c0XZAFKtp8-wMie8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=wt1QQvOgUbI:NiuofVHz7-0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/wt1QQvOgUbI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/01/powershell-v3-auto-loading-of-modules/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Starting 2012 with a Bang]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/TzjN7tcEtvk/" />
		<id>http://blog.usepowershell.com/2012/01/starting-2012-with-a-bang/</id>
		<updated>2012-01-03T15:30:00Z</updated>
		<published>2012-01-03T15:30:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="General" />		<summary type="html"><![CDATA[I’m so excited for 2012, personally and professionally.&#160; I started the year with a great honor, I was awarded a Microsoft MVP award for PowerShell. Just a bit of background…&#160; I started in IT in 2006 as the IT guy for a municipal police department.&#160; It was the first such full time position the department [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/01/starting-2012-with-a-bang/">&lt;p&gt;I’m so excited for 2012, personally and professionally.&amp;#160; I started the year with a great honor, I was awarded a &lt;a href="https://mvp.support.microsoft.com/profile/Steven.Murawski" target="_blank"&gt;Microsoft MVP award for PowerShell&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Just a bit of background…&amp;#160; &lt;/h3&gt;
&lt;p&gt;I started in IT in 2006 as the IT guy for a municipal police department.&amp;#160; It was the first such full time position the department had.&amp;#160; I immediately became responsible for a public safety network that needed to be operational 24/7.&amp;#160; This required me to deal with a lot of intermittent issues or requests and I quickly saw that I needed some tools to get my job done well. &lt;/p&gt;
&lt;p&gt;I looked around and found out that the *NIX guys had it pretty well covered with shell scripting, Perl, Python, TCL, sed, awk, etc..&amp;#160; I went looking for the Microsoft equivalent.&amp;#160; I found Python and started doing some scripting with that.&amp;#160; I loved the syntax and structure, as well as the availability of an interactive interpreter.&amp;#160; The biggest pain was in dealing with the COM layer interactions.&amp;#160; I explored C# and began to dabble with that as well.&lt;/p&gt;
&lt;p&gt;And then I found PowerShell.&amp;#160; I’ve been a PowerShell fanatic since the day I discovered it.&amp;#160; It was a shell language.&amp;#160; It had a scripting capability.&amp;#160; I could extend it with .NET and C#.&amp;#160; It worked with WMI and COM in a much more interactive manner and I didn’t have to go through some of the hoops that I had to with Python.&amp;#160; It was also a Microsoft product (and eventually was available through Windows Update or with newer OSes in the box), which made it easier to deploy (policy-wise and distribution-wise).&lt;/p&gt;
&lt;p&gt;Since that point in early 2006, I have been pushing PowerShell to help in all of the varied environments I’ve found myself in.&amp;#160; I’ve become a speaker and a trainer and love sharing the capabilities of PowerShell and seeing others find value and make their work easier (or even possible).&lt;/p&gt;
&lt;h3&gt;This wouldn’t have been possible without…&lt;/h3&gt;
&lt;p&gt;I never would have been awarded this without the ceaseless lobbying of &lt;a href="http://dougfinke.com/blog/" target="_blank"&gt;Doug Finke&lt;/a&gt; and the great interactions I’ve had with various members of the PowerShell team.&amp;#160; I know a number of other PowerShell MVPs also were vocal in nominating me (forgive me if I forgot anyone), including &lt;a href="http://blogs.microsoft.co.il/blogs/ScriptFanatic/" target="_blank"&gt;Shay Levy&lt;/a&gt;, &lt;a href="http://marcoshaw.blogspot.com/" target="_blank"&gt;Marco Shaw&lt;/a&gt;, &lt;a href="http://powershellers.blogspot.com/" target="_blank"&gt;Aleksandar Nikolic&lt;/a&gt;, and &lt;a href="http://www.ravichaganti.com/" target="_blank"&gt;Ravikanth Chaganti.&lt;/a&gt;&amp;#160; I also had some great support from some of the Clustering MVPs (like Mike Steineke) and team (thanks Rob).&amp;#160; Last, but not least, I’ve had great support from my local DPE team.&amp;#160; Our local Developer Evangelist, &lt;a href="http://csell.net/" target="_blank"&gt;Clark Sell&lt;/a&gt;, has never stopped encouraging me in spreading my thoughts on PowerShell and the development of a unified management API to .NET developer groups in our region (and further via his &lt;a href="http://developersmackdown.com/" target="_blank"&gt;podcast&lt;/a&gt;).&amp;#160; Our local IT Pro Evangelist, &lt;a href="http://mythoughtsonit.com/" target="_blank"&gt;Brian Lewis&lt;/a&gt;, has been a stalwart supporter of both user groups we have going in the Milwaukee area, the &lt;a href="http://mkescriptclub.eventbrite.com" target="_blank"&gt;Greater Milwaukee Script Club&lt;/a&gt; and the &lt;a href="http://gmitpuc.com" target="_blank"&gt;Greater Milwaukee IT Pro User Community&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Finally,&lt;/h3&gt;
&lt;p&gt;I want to thank you, the readers of my blog, the attendees of my script club or IT Pro user group, and any of the various attendees of talks I have given.&amp;#160; Thank you for allowing me to share a bit of my experience and thoughts with you and I can’t wait to see where this year goes (PowerShell V3 is on the horizon!!!).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FRCrqBtdvieK1vKvgUTOwmoS5VE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FRCrqBtdvieK1vKvgUTOwmoS5VE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FRCrqBtdvieK1vKvgUTOwmoS5VE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FRCrqBtdvieK1vKvgUTOwmoS5VE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=TzjN7tcEtvk:CJBZ43ctHOc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/TzjN7tcEtvk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/01/starting-2012-with-a-bang/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/01/starting-2012-with-a-bang/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/01/starting-2012-with-a-bang/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Checking Your Pipes For Leaks]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/SLqMPtmBU3E/" />
		<id>http://blog.usepowershell.com/2011/09/checking-your-pipes-for-leaks/</id>
		<updated>2011-09-14T13:00:00Z</updated>
		<published>2011-09-14T13:00:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 2" />		<summary type="html"><![CDATA[(NOTE: I started this post a few weeks ago) This morning I woke up with my kitchen floor covered in water.&#160; As I was cleaning it up, I couldn&#8217;t help drawing some parallels between fixing a leaky pipe and a &#34;leaky&#34; (non-performing) script. My repair process this morning took the following steps: Contain the leak [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/09/checking-your-pipes-for-leaks/">&lt;p&gt;(NOTE: I started this post a few weeks ago)&lt;/p&gt;
&lt;p&gt;This morning I woke up with my kitchen floor covered in water.&amp;#160; As I was cleaning it up, I couldn&amp;#8217;t help drawing some parallels between fixing a leaky pipe and a &amp;quot;leaky&amp;quot; (non-performing) script.&lt;/p&gt;
&lt;p&gt;My repair process this morning took the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Contain the leak &lt;/li&gt;
&lt;li&gt;Locate the source of the leak &lt;/li&gt;
&lt;li&gt;Stop the leak &lt;/li&gt;
&lt;li&gt;Check for related damage &lt;/li&gt;
&lt;li&gt;Mitigate the related damage &lt;/li&gt;
&lt;li&gt;Patch the leak&amp;#160; &lt;/li&gt;
&lt;li&gt;Confirm the leak is fixed &lt;/li&gt;
&lt;li&gt;Monitor the leak site &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since most of you won&amp;#8217;t really care about the plumbing in my kitchen, let&amp;#8217;s run through how dealing with this problem applies to troubleshooting a misbehaving script (or function).&lt;/p&gt;
&lt;h3&gt;Containing the Leak&lt;/h3&gt;
&lt;p&gt;The first step I needed to take was to contain the leak.. in PowerShell, that means I need to pull that script or function from general use, as well as terminating any running instances.&lt;/p&gt;
&lt;p&gt;This can be tougher than you think, especially if you are using remote jobs or are performing a sequential series of actions that cannot be rolled back (especially if you don&amp;#8217;t have good logging in place!).&lt;/p&gt;
&lt;h3&gt;Locating the Source&lt;/h3&gt;
&lt;p&gt;After I’ve got the leak contained, I had to find where the leak was coming from.&amp;#160; For my misbehaving script, I either need to find what has failed.&amp;#160; Normally, the errors that I&amp;#8217;m getting will help point me towards the source of the problem.&amp;#160; &lt;/p&gt;
&lt;p&gt;However, if I&amp;#8217;m not getting errors, I need to step through the script (or function) and can use Set-PSBreakpoint to create an entry point in my script where I want to start walking through.&amp;#160; &lt;/p&gt;
&lt;p&gt;If my script (or function) is an advanced function, I could use -Debug and have it break on any Write-Debug statements that I&amp;#8217;ve used throughout my script.&amp;#160; This is a GREAT reason to have a periodic Write-Debug statement before any significant blocks of logic in your script.&lt;/p&gt;
&lt;h3&gt;Stopping the Leak&lt;/h3&gt;
&lt;p&gt;Once I&amp;#8217;ve found the source of the leak, I can begin to stop the leak.&amp;#160; In my kitchen leak, I had to turn off the water. &lt;/p&gt;
&lt;p&gt;In the case of my script, I have to find any scheduled tasks using it and stop them or advise other people who might be using the script to stop using it until I can publish a new script.&lt;/p&gt;
&lt;h3&gt;Checking for Damage&lt;/h3&gt;
&lt;p&gt;Once I had my leak stopped, I started to check for residual damage that I might have to control.&amp;#160; Water had leaked onto where the power cord for my water heater plugged into an extension cord,&amp;#160; This caused the &lt;a href="http://en.wikipedia.org/wiki/Ground_fault_circuit_interrupter" target="_blank"&gt;GFI outlet&lt;/a&gt; to trip. &lt;/p&gt;
&lt;p&gt;Collateral damage from a misbehaving script or function can be disastrous.&amp;#160; Very often, scripts are run under administrative credentials and can have unexpected side effects.&amp;#160; When locating the source of the leak, I’ll check to see what other systems or areas that the script is touching and examine them for potentially improper changes or updates.&amp;#160; Finally, I need to document any “damage” or errors that the script created.&lt;/p&gt;
&lt;h3&gt;Mitigating the Damage&lt;/h3&gt;
&lt;p&gt;Once I found that the GFI was tripped, I unplugged everything on that chain.&amp;#160; I let everything dry out and replaced the extension cord.&lt;/p&gt;
&lt;p&gt;For a misbehaving script, this is going to vary based on what the script was actually doing, but this can be one of the most important steps.&amp;#160; I have to record all the actions I take to mitigate the “damage” found in the previous step.&amp;#160; Even if I decide not to do anything about the damage I found in the previous step, that is still an action and should be documented.&lt;/p&gt;
&lt;h3&gt;Patching the Leak&lt;/h3&gt;
&lt;p&gt;Patching the leak is pretty straightforward.&amp;#160; Going to the source of the leak, I removed the faulty tap and patched the pipe.&lt;/p&gt;
&lt;p&gt;In my script, that means going to the source of the faulty logic or source of the errors and either fixing the logic and/or adding error handling to deal with the source of the errors.&amp;#160; I’ll also add additional Write-Verbose or Write-Debug statements to make tracing problems and verifying functionality easier.&amp;#160; For scripts that will &lt;/p&gt;
&lt;h3&gt;Confirming the Leak is Fixed&lt;/h3&gt;
&lt;p&gt;After I patched the leak, I turned the water back on and watched it for a short while to make sure that there was no seepage from the patch.&amp;#160; I tested down-level plumbing to make sure that the pressure was appropriate as well.&lt;/p&gt;
&lt;p&gt;After I’ve added my error handling and/or fixed the logic, I’ll run the script again, perhaps with –Verbose or –Debug.&amp;#160; If I’m really motivated, I’ll make sure there is the CmdletBinding attribute and add –WhatIf support.&lt;/p&gt;
&lt;h3&gt;Monitoring the Leak&lt;/h3&gt;
&lt;p&gt;After I was able to confirm that the leak was fixed, I stayed home and periodically checked the line to watch for any seepage or residual problems.&amp;#160; Over the next few days, I continued to monitor the site of the patch for any issues, though not as frequently.&lt;/p&gt;
&lt;p&gt;After I’ve fixed my script, I’ll continue to watch was it gets used, perhaps logging all the output, until I’ve regained confidence in the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bjYXtmaNqmcYm3RtKNVVORHPJTM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bjYXtmaNqmcYm3RtKNVVORHPJTM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bjYXtmaNqmcYm3RtKNVVORHPJTM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bjYXtmaNqmcYm3RtKNVVORHPJTM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=SLqMPtmBU3E:YZMGKNqAKfQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/SLqMPtmBU3E" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/09/checking-your-pipes-for-leaks/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/09/checking-your-pipes-for-leaks/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/09/checking-your-pipes-for-leaks/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Resources for the WI .NET User Group]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/BGUK6CkB0VE/" />
		<id>http://blog.usepowershell.com/2011/09/resources-for-the-wi-net-user-group/</id>
		<updated>2011-09-14T03:51:35Z</updated>
		<published>2011-09-14T03:51:35Z</published>
		<category scheme="http://blog.usepowershell.com" term="Events" /><category scheme="http://blog.usepowershell.com" term="PowerShell" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 2" /><category scheme="http://blog.usepowershell.com" term="ShowUI" />		<summary type="html"><![CDATA[I&#8217;ll get the slides posted sometime (in the middle of migrating my machine to the developer preview of Win 8), but the links I mentioned are: —Project Home &#8211; http://www.show-ui.com —Codeplex Site &#8211; http://showui.codeplex.com —Doug Finke’s Blog &#8211; http://dougfinke.com/blog —Joel “Jaykul” Bennet’s Blog &#8211; http://huddledmasses.org —James Brundage’s Blog &#8211; http://blog.start-automating.com/]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/09/resources-for-the-wi-net-user-group/">&lt;p&gt;I&amp;#8217;ll get the slides posted sometime (in the middle of migrating my machine to the developer preview of Win 8), but the links I mentioned are:&lt;/p&gt;
&lt;p&gt;—&lt;a href="http://www.show-ui.com/"&gt;Project Home &amp;#8211; http://www.show-ui.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;a href="http://showui.codeplex.com/"&gt;Codeplex&lt;/a&gt;&lt;a href="http://showui.codeplex.com/"&gt; Site &amp;#8211; http://showui.codeplex.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;a href="http://dougfinke.com/blog"&gt;Doug Finke’s Blog &amp;#8211; http://dougfinke.com/blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;a href="http://huddledmasses.org/"&gt;Joel “&lt;/a&gt;&lt;a href="http://huddledmasses.org/"&gt;Jaykul&lt;/a&gt;&lt;a href="http://huddledmasses.org/"&gt;” &lt;/a&gt;&lt;a href="http://huddledmasses.org/"&gt;Bennet’s&lt;/a&gt;&lt;a href="http://huddledmasses.org/"&gt; Blog &amp;#8211; http://huddledmasses.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;—&lt;a href="http://blog.start-automating.com/"&gt;James &lt;/a&gt;&lt;a href="http://blog.start-automating.com/"&gt;Brundage’s&lt;/a&gt;&lt;a href="http://blog.start-automating.com/"&gt; Blog &amp;#8211; http://blog.start-automating.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/duCW-V82oZplX5e37EHwS-PuEds/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/duCW-V82oZplX5e37EHwS-PuEds/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/duCW-V82oZplX5e37EHwS-PuEds/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/duCW-V82oZplX5e37EHwS-PuEds/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=BGUK6CkB0VE:iAb2BIweRTk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/BGUK6CkB0VE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/09/resources-for-the-wi-net-user-group/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/09/resources-for-the-wi-net-user-group/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/09/resources-for-the-wi-net-user-group/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Where I&#8217;ll be this Fall]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/k6WnThncywY/" />
		<id>http://blog.usepowershell.com/2011/09/where-ill-be-this-fall/</id>
		<updated>2011-09-08T15:32:59Z</updated>
		<published>2011-09-08T15:32:59Z</published>
		<category scheme="http://blog.usepowershell.com" term="Events" />		<summary type="html"><![CDATA[I wish I could have make it out to Build or the PowerShell Deep Dive, but I’ll settle for these: September 13th – Wisconsin .NET User Group – Talking about Scriptable UI with PowerShell and ShowUI September 29th – Greater Milwaukee IT Pro User Group – Talking about the PsTools in the Sysinternals Suite October [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/09/where-ill-be-this-fall/">&lt;p&gt;I wish I could have make it out to &lt;a href="http://www.buildwindows.com/" target="_blank"&gt;Build&lt;/a&gt; or the &lt;a href="http://www.theexpertsconference.com/europe/2011/general-information/2011-powershell-deep-dive/" target="_blank"&gt;PowerShell Deep Dive&lt;/a&gt;, but I’ll settle for these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;September 13th – &lt;a href="http://wi-ineta.org" target="_blank"&gt;Wisconsin .NET User Group&lt;/a&gt; – Talking about Scriptable UI with PowerShell and &lt;a href="http://www.show-ui.com/" target="_blank"&gt;ShowUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;September 29th – &lt;a href="http://gmitpuc.com/" target="_blank"&gt;Greater Milwaukee IT Pro User Group&lt;/a&gt; – Talking about the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896649" target="_blank"&gt;PsTools&lt;/a&gt; in the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062" target="_blank"&gt;Sysinternals Suite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;October 1st – &lt;a href="http://www.sqlsaturday.com/98/eventhome.aspx" target="_blank"&gt;SQL Saturday #98 (Iowa City, IA)&lt;/a&gt; – Talking about Scriptable UI with PowerShell and &lt;a href="http://www.show-ui.com/" target="_blank"&gt;ShowUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;November 1st – &lt;a href="http://www.meetup.com/LaCrosseITPros/" target="_blank"&gt;LaCrosse IT Pro User Group&lt;/a&gt; – Going over an Introduction to PowerShell&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/maPqjodd3UNyQi3dES80HyGRokM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/maPqjodd3UNyQi3dES80HyGRokM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/maPqjodd3UNyQi3dES80HyGRokM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/maPqjodd3UNyQi3dES80HyGRokM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=k6WnThncywY:KMfoBsH4PvM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/k6WnThncywY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/09/where-ill-be-this-fall/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/09/where-ill-be-this-fall/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/09/where-ill-be-this-fall/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Waiter, There&#8217;s a Bug in My Get-Help!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/ZLFSNc403jU/" />
		<id>http://blog.usepowershell.com/2011/08/waiter-theres-a-bug-in-my-get-help/</id>
		<updated>2011-08-15T13:00:00Z</updated>
		<published>2011-08-15T13:00:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="CommandAssist" /><category scheme="http://blog.usepowershell.com" term="Modules" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 2" />		<summary type="html"><![CDATA[My friend Robert Robelo was kind enough to point out a problem with the proxies created by the CommandAssist module. In trying to research the problem, I found that PowerShell crashed ( yes, crashed.. not throwing an error, but CRASHED) when Get-Help could not resolve the command it needed to provide help for. Setting the [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/waiter-theres-a-bug-in-my-get-help/">&lt;p&gt;My friend &lt;a href="http://robertrobelo.wordpress.com/about/" target="_blank"&gt;Robert Robelo&lt;/a&gt; was kind enough to point out a problem with the proxies created by the CommandAssist module.&lt;/p&gt;
&lt;p&gt;In trying to research the problem, I found that PowerShell crashed ( yes, crashed.. not throwing an error, but CRASHED) when Get-Help could not resolve the command it needed to provide help for.&lt;/p&gt;
&lt;h3&gt;Setting the Stage &lt;/h3&gt;
&lt;h4&gt;Reproducing the Problem&lt;/h4&gt;
&lt;p&gt;Create a module that exports a function&lt;/p&gt;
&lt;pre language="powershell"&gt;$Path = 'c:\users\smurawski\documents\windowspowershell\TestModule.psm1'
$null = new-item $Path -ItemType File -Force -Value @'
function Test-One {
	[CmdletBinding()]
	param($x)
	$x
}

Export-ModuleMember -Function Test-One
'@&lt;/pre&gt;
&lt;p&gt;Import the module&lt;/p&gt;
&lt;pre language="powershell"&gt;Import-Module TestModule&lt;/pre&gt;
&lt;p&gt;Create the proxy module&lt;/p&gt;
&lt;pre language="powershell"&gt;Get-Module TestModule |
	New-AssistedModule -ModulePath c:\users\smurawski\documents\windowspowershell\TestAssisted&lt;/pre&gt;
&lt;p&gt;Import the proxy module&lt;/p&gt;
&lt;pre language="powershell"&gt;Import-Module TestAssisted&lt;/pre&gt;
&lt;p&gt;Try to Get-Help for Test-One (shell will crash here)&lt;/p&gt;
&lt;pre language="powershell"&gt;Get-Help test-one&lt;/pre&gt;
&lt;h4&gt;What&amp;#8217;s Happening?&lt;/h4&gt;
&lt;p&gt;In the proxy command that is generated, there is a help item (ForwardHelpTargetName) that is created to point the help file back to the original command.&amp;#160; Since you could possibly have multiple commands, aliases, and functions with the same name, there is a second help entry (ForwardHelpCategory) that allows you to specify what type of command you are forwarding to.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;NOTE:&amp;#160; The following is my opinion of what is happening based on my testing.&amp;#160; I haven&amp;#8217;t attached a debugger and watched to verify, but I have tested enough to confirm a workaround.&amp;#160; This occurs in both the ISE and PowerShell.exe.&amp;#160; I have not tested in other scripting environments.&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this case, both the original command and the proxy are functions, so Get-Help goes into a loop until it hits a recursion max and crashes PowerShell.&amp;#160; &lt;/p&gt;
&lt;h3&gt;Get the Duct Tape &lt;/h3&gt;
&lt;h4&gt;Finding a Workaround&lt;/h4&gt;
&lt;p&gt;So, how can we get around this?&amp;#160; CommandAssist relies on pointing back to the source command for the help files.&amp;#160; &lt;/p&gt;
&lt;p&gt;Fully qualifying the command in the proxy will solve the problem.&amp;#160; I&amp;#8217;ve updated the proxy command generation to qualify the command in the ForwardHelpTargetName with the module prefixed name of the source command.&lt;/p&gt;
&lt;h4&gt;The Downside&lt;/h4&gt;
&lt;p&gt;If you&amp;#8217;ve been playing with CommandAssist, you will want to regenerate your proxies.&lt;/p&gt;
&lt;h3&gt;Let&amp;#8217;s Get This Fixed &lt;/h3&gt;
&lt;h4&gt;Vote it up on Connect!&lt;/h4&gt;
&lt;p&gt;I don&amp;#8217;t know about you, but I would like to see this type of error not crash PowerShell.&amp;#160; &lt;a href="https://connect.microsoft.com/PowerShell/feedback/details/684132/get-help-of-a-proxy-command-of-a-function-causes-crash" target="_blank"&gt;I&amp;#8217;ve filed a Connect bug and would appreciate if you would head over and vote it up!&lt;/a&gt;&amp;#160; The team really does respond to community feedback and Connect is a great way to show that this is important to you!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7PfnAd8pdBN5INZ8N8NhAXYJ3sU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7PfnAd8pdBN5INZ8N8NhAXYJ3sU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7PfnAd8pdBN5INZ8N8NhAXYJ3sU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7PfnAd8pdBN5INZ8N8NhAXYJ3sU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=ZLFSNc403jU:dkz-JU38HNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/ZLFSNc403jU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/waiter-theres-a-bug-in-my-get-help/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/waiter-theres-a-bug-in-my-get-help/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/waiter-theres-a-bug-in-my-get-help/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Using -Assist in an Assisted Module &#8211; CommandAssist]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/vKqYSUz_l28/" />
		<id>http://blog.usepowershell.com/2011/08/using-assist-in-an-assisted-module-commandassist/</id>
		<updated>2011-08-13T15:50:34Z</updated>
		<published>2011-08-13T15:50:34Z</published>
		<category scheme="http://blog.usepowershell.com" term="CommandAssist" /><category scheme="http://blog.usepowershell.com" term="Modules" /><category scheme="http://blog.usepowershell.com" term="Scripts" />		<summary type="html"><![CDATA[This is the the meat of CommandAssist module, providing a contextual assistant to supplying the right parameters to a command. Getting to the Meat of It In the last post, we created a proxy module for ActiveDirectory module, so what does that really get for us? Starting off in a new shell, I&#8217;ve imported the [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/using-assist-in-an-assisted-module-commandassist/">&lt;p&gt;This is the the meat of CommandAssist module, providing a contextual assistant to supplying the right parameters to a command.&lt;/p&gt;
&lt;h3&gt;Getting to the Meat of It&lt;/h3&gt;
&lt;p&gt;In the last &lt;a href="http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/" target="_blank"&gt;post&lt;/a&gt;, we created a proxy module for ActiveDirectory module, so what does that really get for us?&lt;/p&gt;
&lt;p&gt;Starting off in a new shell, I&amp;#8217;ve imported the AssistedAD module and I&amp;#8217;m going to try out the -Assist parameter for Get-ADUser&lt;/p&gt;
&lt;pre language="powershell"&gt;Import-Module ADAssist
Get-ADUser -Assist&lt;/pre&gt;
&lt;p&gt;Initially, I was prompted for a Filter parameter, as that parameter is marked mandatory in the default parameter set. I supplied a &amp;quot;*&amp;quot; and moved on. You&amp;#8217;ll notice that I did not have to load the ActiveDirectory module, the CommandAssist module or the &lt;a href="http://showui.codeplex.com/" target="_blank"&gt;ShowUI&lt;/a&gt; module, as the proxy module handles all that in the background for you.&lt;/p&gt;
&lt;p&gt;What I then got was:&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb3.png" width="451" height="551" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ll notice that there are three tabs, Filter, LdapFilter, and Identity.&amp;#160; Each tab represents a parameter set and shows the associated parameters for that set.&amp;#160; &lt;/p&gt;
&lt;p&gt;You will only be able to pass parameters for one parameter set, which can alleviate the common error of &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Parameter set cannot be resolved using the specified named parameters&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a key benefit of CommandAssist versus other tab completion options.&lt;/p&gt;
&lt;p&gt;As you add parameters, the command line at the top will change to reflect your changes to the parameters.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image4.png"&gt;&lt;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://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb4.png" width="317" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Parameters that take a specified enumeration (like AuthType in this case) will have a dropdown box with the available options.&lt;/p&gt;
&lt;p&gt;If I change parameter sets, the command line changes to reflect my new parameter selections.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image5.png"&gt;&lt;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://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb5.png" width="320" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, your previous selections on an alternate tab have not changed, so you can return to that tab and continue editing if you determine that is the appropriate parameter set to use.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;What other information would you like to see here?&lt;/h3&gt;
&lt;p&gt;Please post a comment on the blog or a message on Twitter if any additional information or features you think might be useful for this!&amp;#160; I&amp;#8217;d love to hear how you think this might provide value in your usage or your environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0kh_sw_HhRfcWbya7HJIIDRpLgI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0kh_sw_HhRfcWbya7HJIIDRpLgI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0kh_sw_HhRfcWbya7HJIIDRpLgI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0kh_sw_HhRfcWbya7HJIIDRpLgI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=vKqYSUz_l28:oWxMSf5vjI0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/vKqYSUz_l28" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/using-assist-in-an-assisted-module-commandassist/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/using-assist-in-an-assisted-module-commandassist/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/using-assist-in-an-assisted-module-commandassist/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Creating an Assisted Module with CommandAssist]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/oE_U0TQESd0/" />
		<id>http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/</id>
		<updated>2011-08-13T15:15:50Z</updated>
		<published>2011-08-13T15:06:20Z</published>
		<category scheme="http://blog.usepowershell.com" term="CommandAssist" /><category scheme="http://blog.usepowershell.com" term="Modules" /><category scheme="http://blog.usepowershell.com" term="Scripts" />		<summary type="html"><![CDATA[The CommandAssist module allows you to easily create proxies functions for every command in a module (or snapin).&#160;&#160; There is a handy command to generate these proxy modules included with the CommandAssist module.&#160; Building an Assisted Module The easiest way to explain what happens is to walk through the usage of New-AssistedModule.&#160; To that end, [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/">&lt;p&gt;The &lt;a href="http://blog.usepowershell.com/2011/08/announcing-commandassist/" target="_blank"&gt;CommandAssist&lt;/a&gt; module allows you to easily create proxies functions for every command in a module (or snapin).&amp;#160;&amp;#160; &lt;/p&gt;
&lt;p&gt;There is a handy command to generate these proxy modules included with the CommandAssist module.&amp;#160; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image1.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb1.png" width="244" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Building an Assisted Module&lt;/h3&gt;
&lt;p&gt;The easiest way to explain what happens is to walk through the usage of New-AssistedModule.&amp;#160; To that end, we&amp;#8217;ll create a proxy of a module that I&amp;#8217;ve been use regularly &amp;#8211; the ActiveDirectory module.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; You will need to have &lt;a href="http://www.showui.com" target="_blank"&gt;ShowUI&lt;/a&gt; available in your module path (you can check with Get-Module &lt;a href="http://www.showui.com" target="_blank"&gt;ShowUI&lt;/a&gt;).&amp;#160; You do not need to have it loaded into your session, CommandAssist will take care of that.&lt;/p&gt;
&lt;p&gt;First we&amp;#8217;ll load the CommandAssist module:&lt;/p&gt;
&lt;pre language="powershell"&gt;Import-Module CommandAssist&lt;/pre&gt;
&lt;p&gt;Second we will load the module we want to create a proxy for:&lt;/p&gt;
&lt;pre language="powershell"&gt;Import-Module ActiveDirectory&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;This only has to be done the first time to create the proxy.&amp;#160; Afterward, the proxy module will load the real module in the background.&lt;/p&gt;
&lt;p&gt;Third we will use New-AssistedModule to create our proxy module.&lt;/p&gt;
&lt;pre language="powershell"&gt;$NewModulePath = c:\users\smurawski\Documents\WindowsPowerShell\Modules\AssistedAD
Get-Module ActiveDirectory |
	New-AssistedModule -ModulePath $NewModulePath&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb2.png" width="486" height="297" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As noted in the screenshots, the module created has proxies for each command that add the -assist parameter.&amp;#160; There also is a module file that will load all of the proxies, as well as the source module (in this example, AssistedAD.psm1).&lt;/p&gt;
&lt;p&gt;The next post will review how the -Assist parameter works.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;The proxy module will load the real module in the background (so if you distribute it, the end user will need the source module or snapin as well).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2NA_CMo56mBBPJD5gM02SmgIuRY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2NA_CMo56mBBPJD5gM02SmgIuRY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2NA_CMo56mBBPJD5gM02SmgIuRY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2NA_CMo56mBBPJD5gM02SmgIuRY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=oE_U0TQESd0:HkpLSYXM_fE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/oE_U0TQESd0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/creating-an-assisted-module-with-commandassist/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Using CommandAssist &#8211; Assisted Where-Object]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/k8Y9FidawnY/" />
		<id>http://blog.usepowershell.com/2011/08/using-commandassist-assisted-where-object/</id>
		<updated>2011-08-08T15:00:00Z</updated>
		<published>2011-08-08T15:00:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="CommandAssist" /><category scheme="http://blog.usepowershell.com" term="Modules" />		<summary type="html"><![CDATA[To use CommandAssist, the first step you will need to take is to have ShowUI (at least 1.1) installed and run PowerShell in STA mode. Then, you can import CommandAssist.&#160; After importing CommandAssist, you can take advantage of the scriptblock builder built in to Where-Object Get-ChildItem &#124; Where-Object -assist When you hit enter, you will [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/using-commandassist-assisted-where-object/">&lt;p&gt;To use &lt;a href="http://download.usepowershell.com/commandassist.zip" target="_blank"&gt;CommandAssist&lt;/a&gt;, the first step you will need to take is to have &lt;a href="http://showui.codeplex.com/" target="_blank"&gt;ShowUI&lt;/a&gt; (at least 1.1) installed and run &lt;a href="http://technet.microsoft.com/en-us/library/dd315276.aspx" target="_blank"&gt;PowerShell in STA mode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then, you can import CommandAssist.&amp;#160; After importing CommandAssist, you can take advantage of the scriptblock builder built in to Where-Object &lt;/p&gt;
&lt;pre language="powershell"&gt;Get-ChildItem | Where-Object -assist&lt;/pre&gt;
&lt;p&gt;When you hit enter, you will see a screen like the below.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.usepowershell.com/wp-content/uploads/2011/08/image.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.usepowershell.com/wp-content/uploads/2011/08/image_thumb.png" width="89" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the top of the screen is a count of the number of objects coming into Where-Object.&amp;#160; Underneath that is the textbox for the filter scriptblock.&amp;#160; After you start adding information to the scriptblock, it will turn green for valid scriptblocks and red for invalid scriptblocks.&amp;#160; Underneath that is a count of how many objects will pass through the pipeline after applying the filter.&lt;/p&gt;
&lt;p&gt;Two list boxes towards the bottom contain a list of properties available from the incoming objects, as well as the various comparison operators in PowerShell.&amp;#160; You can drag and drop those items into the scriptblock builder.&lt;/p&gt;
&lt;p&gt;Once you are happy with the resulting scriptblock, you can hit OK and the selected filter will be applied to the objects in the pipeline and pass the remaining objects to the next step in the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aYv1bZjc4o1tCX5Q_zwOubWq3uQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aYv1bZjc4o1tCX5Q_zwOubWq3uQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aYv1bZjc4o1tCX5Q_zwOubWq3uQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aYv1bZjc4o1tCX5Q_zwOubWq3uQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=k8Y9FidawnY:w1BnpFOe9jk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/k8Y9FidawnY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/using-commandassist-assisted-where-object/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/using-commandassist-assisted-where-object/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/using-commandassist-assisted-where-object/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Announcing CommandAssist]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/D_YNgKEYgXA/" />
		<id>http://blog.usepowershell.com/2011/08/announcing-commandassist/</id>
		<updated>2011-08-08T12:58:15Z</updated>
		<published>2011-08-04T22:41:13Z</published>
		<category scheme="http://blog.usepowershell.com" term="CommandAssist" /><category scheme="http://blog.usepowershell.com" term="Modules" />		<summary type="html"><![CDATA[CommandAssist is a new module designed to provide some graphical help for people who are new to PowerShell or just not as comfortable on the command line.&#160; CommandAssist relies on ShowUI, so go get it now! What’s There Now The first three functions in this module are: Show-ParameterAssist New-AssistedModule Where-Object (with an updated –Assist parameter) [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/announcing-commandassist/">&lt;p&gt;&lt;a href="http://download.usepowershell.com/CommandAssist.zip" target="_blank"&gt;CommandAssist&lt;/a&gt; is a new module designed to provide some graphical help for people who are new to PowerShell or just not as comfortable on the command line.&amp;#160; &lt;a href="http://download.usepowershell.com/CommandAssist.zip" target="_blank"&gt;CommandAssist&lt;/a&gt; relies on &lt;a href="http://showui.codeplex.com" target="_blank"&gt;ShowUI&lt;/a&gt;, so go get it now!&lt;/p&gt;
&lt;h3&gt;What’s There Now&lt;/h3&gt;
&lt;p&gt;The first three functions in this module are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Show-ParameterAssist&lt;/li&gt;
&lt;li&gt;New-AssistedModule&lt;/li&gt;
&lt;li&gt;Where-Object (with an updated –Assist parameter)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Show-ParameterAssist&lt;/strong&gt; is the workhorse behind the coolest feature in this module.&amp;#160; Parameter assist takes a command (either a CommandInfo from Get-Command, or a command name and what type of command) and optionally a hashtable of parameters and values.&amp;#160; It provides a UI with all the parameters (grouped in tabs by parameter set).&amp;#160; The UI has parameter help, bolded Mandatory parameters, and let’s you pick enumerations from a drop down menu.&lt;/p&gt;
&lt;p&gt;Show-ParameterAssist can be embedded in any function (in the begin block is most effective) before any logic executes.&amp;#160; You can assign the output to $PSBoundParameters and also use it to populate the variables for those parameters.&amp;#160; I’ll publish some examples soon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New-AssistedModule&lt;/strong&gt; takes a module and creates a new module with proxies for each command.&amp;#160; In these proxies, Show-ParameterAssist is exposed via an –Assist parameter.&lt;/p&gt;
&lt;p&gt;The final command (so far) is the most raw.&amp;#160; The module exposes a proxy for &lt;strong&gt;Where-Object&lt;/strong&gt;, with an –Assist parameter that provides a scriptblock builder for the filter.&amp;#160; The scriptblock builder has a list of all the properties exposed by incoming objects, as well as a list of all the comparison operators.&amp;#160; You can drag properties and operators onto the textbox to build a scriptblock.&amp;#160; When you have a valid scriptblock, the background turns green.&amp;#160; When it is invalid, the background is red.&amp;#160; Also kind of helpful is a counter showing the number of objects being evaluated.&amp;#160;&amp;#160; When there is a valid scriptblock, there is also a counter saying how many objects will be output.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;On the Horizon&lt;/h3&gt;
&lt;p&gt;For Show-ParameterAssist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More information about the parameters (can it take pipeline input, etc..)&lt;/li&gt;
&lt;li&gt;If a parameter takes a value by property name, include scriptblock evaluation like in Where-Object&lt;/li&gt;
&lt;li&gt;Other requests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For Where-Object&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Offer better information about the incoming properties.&lt;/li&gt;
&lt;li&gt;Improve the drag and drop experience (and parens, and other commonly used cmdlets and expressions)&lt;/li&gt;
&lt;li&gt;Improve the help&lt;/li&gt;
&lt;li&gt;Other requests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the module in general:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More built in assisted commands (like select-object)&lt;/li&gt;
&lt;li&gt;&amp;#8216;Improve the help&lt;/li&gt;
&lt;li&gt;Other requests     &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you think this module has some value or have a feature you would like to see, please leave a comment or ping me on twitter, or stop by the &lt;a href="http://powerscripting.wordpress.com/2011/08/01/up-next-steven-murawski/" target="_blank"&gt;PowerScripting Podcast this evening&lt;/a&gt; and ask in the chat room.&amp;#160; &lt;a href="http://download.usepowershell.com/CommandAssist.zip" target="_blank"&gt;Grab the scripts&lt;/a&gt;, look through them and let me know what you think!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aA1Ld3QA8Kto7mKGEZLnWzx3eKQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aA1Ld3QA8Kto7mKGEZLnWzx3eKQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aA1Ld3QA8Kto7mKGEZLnWzx3eKQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aA1Ld3QA8Kto7mKGEZLnWzx3eKQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=D_YNgKEYgXA:DZdcq-RwBj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/D_YNgKEYgXA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/announcing-commandassist/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/announcing-commandassist/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/announcing-commandassist/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Gotta Love Dilbert]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/buNKROlWwAY/" />
		<id>http://blog.usepowershell.com/2011/08/gotta-love-dilbert/</id>
		<updated>2011-08-03T18:37:40Z</updated>
		<published>2011-08-03T18:37:40Z</published>
		<category scheme="http://blog.usepowershell.com" term="Comedy" />		<summary type="html" />
		<content type="html" xml:base="http://blog.usepowershell.com/2011/08/gotta-love-dilbert/">&lt;p&gt;&lt;a title="Dilbert.com" href="http://dilbert.com/strips/comic/2011-03-24/"&gt;&lt;img border="0" alt="Dilbert.com" src="http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/100000/10000/6000/600/116640/116640.strip.gif" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-jzhzITw2K-R5Semfw1uhb_N2a8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jzhzITw2K-R5Semfw1uhb_N2a8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-jzhzITw2K-R5Semfw1uhb_N2a8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-jzhzITw2K-R5Semfw1uhb_N2a8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=buNKROlWwAY:nKVmtQjABGY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/buNKROlWwAY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/08/gotta-love-dilbert/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/08/gotta-love-dilbert/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/08/gotta-love-dilbert/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[I&#8217;m on TechNet Radio!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/RrLwyxndMDM/" />
		<id>http://blog.usepowershell.com/2011/07/im-on-technet-radio/</id>
		<updated>2011-07-01T16:29:55Z</updated>
		<published>2011-07-01T16:29:55Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell Community" />		<summary type="html"><![CDATA[A little while back, I had an opportunity to talk with John Weston on TechNet Radio’s Community Corner. We talked a bit about PowerShell and the community around it, as well as my local Script Club. &#160; &#160; Thanks to John and Chris for taking the time to talk with me, and don’t forget to [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/07/im-on-technet-radio/">&lt;p&gt;A little while back, I had an &lt;a href="http://technet.microsoft.com/en-us/edge/john-weston-interviews-steven-murwaski-greater-milwaukee-script-club.aspx" target="_blank"&gt;opportunity to talk with John Weston&lt;/a&gt; on &lt;a href="http://technet.microsoft.com/en-us/edge/ff832960.aspx?category=Community Corner" target="_blank"&gt;TechNet Radio’s Community Corner&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We talked a bit about PowerShell and the community around it, as well as my local Script Club.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt; &lt;script src="http://technet.microsoft.com/objectforward/default.aspx?type=VideoPlayer&amp;amp;video=http%3A%2F%2Fcontent4.catalog.video.msn.com%2Fe2%2Fds%2Fb1c652c1-90d5-4265-85ef-bf1b99f9824c.wmv&amp;amp;thumb=http%3A%2F%2Fcontent1.catalog.video.msn.com%2Fe2%2Fds%2Fe9646a51-308e-4e57-a0ab-b457197c3008.JPG&amp;amp;title=&amp;amp;width=400&amp;amp;height=400" type="text/javascript"&gt;&lt;/script&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href="http://blogs.technet.com/b/jweston/" target="_blank"&gt;John&lt;/a&gt; and Chris for taking the time to talk with me, and don’t forget to check out the other great segments in the Community Corner and see what is happening in other user groups!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qKRNOrSk5fKjZpe7cLHU6SPMWGI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qKRNOrSk5fKjZpe7cLHU6SPMWGI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qKRNOrSk5fKjZpe7cLHU6SPMWGI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qKRNOrSk5fKjZpe7cLHU6SPMWGI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=RrLwyxndMDM:S7-vEVk5_as:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/RrLwyxndMDM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/07/im-on-technet-radio/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/07/im-on-technet-radio/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/07/im-on-technet-radio/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Back to Basics &#8211; Variable Names]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/akxUaMuxd3U/" />
		<id>http://blog.usepowershell.com/2011/05/back-to-basics-variable-names/</id>
		<updated>2011-05-18T14:10:06Z</updated>
		<published>2011-05-18T14:09:24Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell" /><category scheme="http://blog.usepowershell.com" term="PowerShell Version 2" /><category scheme="http://blog.usepowershell.com" term="Scripting Games" /><category scheme="http://blog.usepowershell.com" term="Tip" /><category scheme="http://blog.usepowershell.com" term="2011ScriptingGames" /><category scheme="http://blog.usepowershell.com" term="naming" /><category scheme="http://blog.usepowershell.com" term="parameters" /><category scheme="http://blog.usepowershell.com" term="variables" />		<summary type="html"><![CDATA[$x and $z and $foo just aren&#8217;t going to cut it in your production scripts.&#160; Andy Schneider tweeted during the Scripting Games that there was no penalty for providing a descriptive variable name.&#160; He was right and not quite right enough.&#160; Twitter does not provide you the opportunity to share more than a sound bite [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2011/05/back-to-basics-variable-names/">&lt;p&gt;$x and $z and $foo just aren&amp;#8217;t going to cut it in your production scripts.&amp;#160; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://get-powershell.com/" target="_blank"&gt;Andy Schneider&lt;/a&gt; &lt;a href="http://twitter.com/#!/andys146" target="_blank"&gt;tweeted&lt;/a&gt; during the &lt;a href="http://bit.ly/2011sgall" target="_blank"&gt;Scripting Games&lt;/a&gt; that there was no penalty for providing a descriptive variable name.&amp;#160; He was right and not quite right enough.&amp;#160; Twitter does not provide you the opportunity to share more than a sound bite in one tweet, so he really could not have commented much further there, &lt;a href="http://get-powershell.com/post/2011/04/13/Extra-Points-for-Style-when-writing-PowerShell-Code.aspx" target="_blank"&gt;but he did in a post that expanded on what judges were looking for in style for the Scripting Games&lt;/a&gt;.&amp;#160; &lt;/p&gt;
&lt;p&gt;The content of that post is not limited to the Scripting Games, but should be applied to our scripting experience.&lt;/p&gt;
&lt;h2&gt;Down to Business&lt;/h2&gt;
&lt;p&gt;We&amp;#8217;re going to focus on one particular section of that blog post.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Use variables that make it easy to understand what you are doing in your script. Comments in code are great, but your code should be readable and understood without them. In general, I would choose good variable names and clear processes over heavily commented code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Looking for Trouble&lt;/h3&gt;
&lt;p&gt;If you find yourself working on a script or function and begin to think, &amp;quot;I need a comment here to make sure it is clear what I&amp;#8217;m doing,&amp;quot; then you are already headed for trouble.&amp;#160; (Function, cmdlet, and script names are another portion for another day.)&lt;/p&gt;
&lt;p&gt;Descriptive variable names can serve as inline documentation on what that variable represents.&amp;#160; A descriptive variable makes it much easier to follow that variable through the script.&amp;#160; &lt;/p&gt;
&lt;p&gt;Remember that you might not be (and will likely not be) the last person to look at that script and need to figure out what is going on internally.&amp;#160; &lt;/p&gt;
&lt;p&gt;If by chance you are the last person to look at that script, do you think you are going to be able to have the same contextual understanding one month after you wrote the script?&amp;#160; Two months?&amp;#160; Six months or more?&amp;#160; I know that when I review scripts I wrote years ago, before I followed my own advice better, it can take me a while to figure out what is really going on, even in some medium complexity scripts (where I should really just be able to scan and understand).&lt;/p&gt;
&lt;h3&gt;Why Aren&amp;#8217;t Comments Good Enough&lt;/h3&gt;
&lt;p&gt;Comments are not the workaround for poor variable naming.&amp;#160; Scripts are rarely static entities.&amp;#160; As requirements change, scripts are updated, sections of functionality are changed and the objects that are operated on can change as well.&amp;#160; Comments are often the last thing to be reviewed (if at all), so the likelihood of ending up with stale and misleading comments goes up with each revision.&lt;/p&gt;
&lt;p&gt;Another reason that comments aren&amp;#8217;t good enough is that they clutter up the script file.&amp;#160; Comment-based help is one thing (and that is localized to one place in the file, not spread across the script.&amp;#160; When I&amp;#8217;m reading a script and there are lines upon lines of comments, it really gets in the way of understanding what is happening in the script.&amp;#160; PowerShell is rather unique in the case, since the syntax actually lends itself well to self-documenting code (with how the command naming works).&amp;#160; &lt;/p&gt;
&lt;h3&gt;Naming Guidelines&lt;/h3&gt;
&lt;p&gt;These are some of the guidelines I try to follow when naming variables. &lt;/p&gt;
&lt;h4&gt;Do Not:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Pluralize variable names that are not arrays.&lt;/li&gt;
&lt;li&gt;Pluralize variable names that are used as parameters.&lt;/li&gt;
&lt;li&gt;Reuse counter variable names.&amp;#160; If you have a variable acting as a counter for a loop, so not reuse that variable name (you may have unexpected results if you don&amp;#8217;t clean up after the previous loop).&lt;/li&gt;
&lt;li&gt;Use generic names like $Results or $Output.&lt;/li&gt;
&lt;li&gt;Use custom abbreviations.&amp;#160; Example: $CN should not be used for $ComputerName.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Do:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Describe the instance (or instances) of object(s) contained in the variable&lt;/li&gt;
&lt;li&gt;Reference similar values consistently.&amp;#160; If you have a variable $ComputerName which has an array of computer names, don&amp;#8217;t also have a variable $server or $servers that refer to the same data.&lt;/li&gt;
&lt;li&gt;Use singular nouns.&amp;#160; This maintains consistency with parameter names which by best practice are singular.&amp;#160; The PowerShell convention is that variables with a singular noun can contain one or more objects.&lt;/li&gt;
&lt;li&gt;Consider that you might be reading this script at 3 in the morning during an active outage.&amp;#160; Pick names that will help you know what is going on and get your work done, so you can go home.&lt;/li&gt;
&lt;li&gt;(optional) Use company and industry accepted abbreviations or acronyms.&amp;#160; (For example $VM conveys the same information $VirtualMachine to systems administrators.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;d like to hear what guidelines you&amp;#8217;ve followed or what you thing of mine, so post a comment!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zaNmBkg7U-zWEwDGLXQWYfUCKOg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zaNmBkg7U-zWEwDGLXQWYfUCKOg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zaNmBkg7U-zWEwDGLXQWYfUCKOg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zaNmBkg7U-zWEwDGLXQWYfUCKOg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/UsePowershell?a=akxUaMuxd3U:dwQ_HVJjuME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/UsePowershell?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/UsePowershell/~4/akxUaMuxd3U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2011/05/back-to-basics-variable-names/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2011/05/back-to-basics-variable-names/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2011/05/back-to-basics-variable-names/</feedburner:origLink></entry>
	</feed>

