<?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-05-15T20:35:26Z</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[Back on the PowerScripting Podcast]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/MbjZElxC5lw/" />
		<id>http://blog.usepowershell.com/2012/05/back-on-the-powerscripting-podcast/</id>
		<updated>2012-05-15T20:35:26Z</updated>
		<published>2012-05-15T20:35:26Z</published>
		<category scheme="http://blog.usepowershell.com" term="PowerShell Community" />		<summary type="html"><![CDATA[You think Hal and Jonathan would learn, but they keep having me back on the show. Hal was out of town, but Jon and I had a great talk about Server 2012 and PowerShell V3.&#160; As always, there was great conversation in the chat room and some good questions.&#160; Jon had a surprise for us [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/05/back-on-the-powerscripting-podcast/">&lt;p&gt;You think &lt;a href="http://powerscripting.net" target="_blank"&gt;Hal and Jonathan would learn&lt;/a&gt;, but they keep having me back on the show.&lt;/p&gt;
&lt;p&gt;Hal was out of town, but &lt;a href="http://powerscripting.wordpress.com/2012/05/14/episode-185-steven-murawski-on-v3-and-jeffrey-snovers-keynote-from-the-2012-powershell-deep-dive/" target="_blank"&gt;Jon and I had a great talk about Server 2012 and PowerShell V3&lt;/a&gt;.&amp;#160; As always, there was great conversation in the chat room and some good questions.&amp;#160; Jon had a surprise for us all.&amp;#160; After the interview, he played Jeffrey Snover’s keynote from the PowerShell Deep Dive.&amp;#160; &lt;/p&gt;
&lt;p&gt;Check out this episode and the other great shows and interviews they have.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CC7OxDnEhotr1i1T1ARaIryUEiI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CC7OxDnEhotr1i1T1ARaIryUEiI/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/CC7OxDnEhotr1i1T1ARaIryUEiI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CC7OxDnEhotr1i1T1ARaIryUEiI/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=MbjZElxC5lw:3Oy408uwu34: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/MbjZElxC5lw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/05/back-on-the-powerscripting-podcast/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/05/back-on-the-powerscripting-podcast/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/05/back-on-the-powerscripting-podcast/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[PowerShell at PICC]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/qr84Q38o9L4/" />
		<id>http://blog.usepowershell.com/2012/05/powershell-at-picc/</id>
		<updated>2012-05-12T13:13:40Z</updated>
		<published>2012-05-12T13:13:40Z</published>
		<category scheme="http://blog.usepowershell.com" term="2012" /><category scheme="http://blog.usepowershell.com" term="Events" /><category scheme="http://blog.usepowershell.com" term="PICC" />		<summary type="html"><![CDATA[I had a great time with my classes at PICC.&#160; Both the PowerShell Fundamentals class and the PowerShell Tips and Tricks class were a lot of fun and resulted in great conversations at the breaks and after the classes. The fun continued in the evening with the Bird of a Feather sessions where we spent [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/05/powershell-at-picc/">&lt;p&gt;I had a great time with my classes at &lt;a href="http://www.picconf.org/"&gt;PICC&lt;/a&gt;.&amp;#160; Both the PowerShell Fundamentals class and the PowerShell Tips and Tricks class were a lot of fun and resulted in great conversations at the breaks and after the classes.&lt;/p&gt;
&lt;p&gt;The fun continued in the evening with the Bird of a Feather sessions where we spent some time talking about Server 2012, Server Core, and remote server management.&amp;#160; What a great time.&lt;/p&gt;
&lt;p&gt;I’ve uploaded my slides and sample scripts and I’ll have the shell histories from the classes posted in a day or two (I need to comment them so they are useable…), so check back on Monday for the annotated shell histories.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://download.usepowershell.com/PICC-Fundamentals.zip"&gt;PowerShell Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://download.usepowershell.com/PICC-TipsAndTricks.zip"&gt;PowerShell Tips and Tricks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wanted to say a big thank you to everyone who attended my class and especially those who made a point of talking to me about problems they face or where they are using PowerShell.&lt;/p&gt;
&lt;p&gt;I also wanted to thank the organizers of PICC for having me out again this year.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h3EeBIlIYkOR8ih1nSl09Y8gXH0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h3EeBIlIYkOR8ih1nSl09Y8gXH0/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/h3EeBIlIYkOR8ih1nSl09Y8gXH0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h3EeBIlIYkOR8ih1nSl09Y8gXH0/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=qr84Q38o9L4:1VIOfybcYKc: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/qr84Q38o9L4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/05/powershell-at-picc/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/05/powershell-at-picc/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/05/powershell-at-picc/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Want to PICC up some new skills?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/fQUVv_jngsY/" />
		<id>http://blog.usepowershell.com/2012/04/want-to-picc-up-some-new-skills/</id>
		<updated>2012-04-29T23:04:42Z</updated>
		<published>2012-04-29T23:03:09Z</published>
		<category scheme="http://blog.usepowershell.com" term="Events" /><category scheme="http://blog.usepowershell.com" term="PICC" />		<summary type="html"><![CDATA[If you are out on the East Coast and want to pick up some new skills or freshen up some old ones, check out PICC – the Professional IT Community Conference. PICC is hosted in New Brunswick, New Jersey and is two days of great SysAdmin content (May 11/12). You’ll find half day training sessions [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/04/want-to-picc-up-some-new-skills/">&lt;p&gt;If you are out on the East Coast and want to pick up some new skills or freshen up some old ones, check out &lt;a href="http://www.picconf.org/"&gt;PICC&lt;/a&gt; – the &lt;a href="http://www.picconf.org/"&gt;Professional IT Community Conference&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PICC is hosted in New Brunswick, New Jersey and is two days of great SysAdmin content (May 11/12).&lt;/p&gt;
&lt;h3&gt;You’ll find half day training sessions on things like:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PowerShell (by your truly)&lt;/li&gt;
&lt;li&gt;Puppet&lt;/li&gt;
&lt;li&gt;Time Management&lt;/li&gt;
&lt;li&gt;Technical Resume Writing&lt;/li&gt;
&lt;li&gt;IPv6&lt;/li&gt;
&lt;li&gt;Workplace Presentations&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.picconf.org/picc12-training-classes/"&gt;and more…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;There are also conference sessions on topics like:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ganeti (Virtualization Management Platform)&lt;/li&gt;
&lt;li&gt;Windows Deployment with MDT 2010&lt;/li&gt;
&lt;li&gt;Scaling the StackExchange Platform&lt;/li&gt;
&lt;li&gt;Configuration Management&lt;/li&gt;
&lt;li&gt;Securing MySQL&lt;/li&gt;
&lt;li&gt;Deep Application Monitoring&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.picconf.org/picc-12-talkspapers/"&gt;and more…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;I’ll be there, and I’m definitely going to walk away better prepared to do my job.&amp;#160; &lt;/h4&gt;
&lt;h4&gt;What are you doing to improve your skillset?&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/__6OQUOs8U2dCdsBve_Vf84eFT8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/__6OQUOs8U2dCdsBve_Vf84eFT8/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/__6OQUOs8U2dCdsBve_Vf84eFT8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/__6OQUOs8U2dCdsBve_Vf84eFT8/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=fQUVv_jngsY:fKm0IkE7JzM: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/fQUVv_jngsY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/04/want-to-picc-up-some-new-skills/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/04/want-to-picc-up-some-new-skills/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/04/want-to-picc-up-some-new-skills/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[The Games Are Afoot!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/5-9xH8VTzok/" />
		<id>http://blog.usepowershell.com/2012/04/the-games-are-afoot/</id>
		<updated>2012-04-05T15:30:00Z</updated>
		<published>2012-04-05T15:30:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="2012" /><category scheme="http://blog.usepowershell.com" term="Events" /><category scheme="http://blog.usepowershell.com" term="General" /><category scheme="http://blog.usepowershell.com" term="PowerShell Community" /><category scheme="http://blog.usepowershell.com" term="Scripting Games" />		<summary type="html"><![CDATA[The Scripting Games that is! This year’s games are in progress, but it’s not too late to start.&#160; Each weekday a new event is posted, but you have a week to turn in your solution, so get out there and start writing some PowerShell. All the details you need are available from the Scripting Games [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/04/the-games-are-afoot/">&lt;h2&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx" target="_blank"&gt;The Scripting Games that is!&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This year’s games are in progress, but it’s not too late to start.&amp;#160; Each weekday a new event is posted, but you have a week to turn in your solution, so get out there and start writing some PowerShell.&lt;/p&gt;
&lt;p&gt;All the details you need are available from the &lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx" target="_blank"&gt;Scripting Games All In One Links Page&lt;/a&gt;, where the Scripting Guy Ed Wilson has thoughtfully provided (and updates daily) links to the events, rules, and other great information.&lt;/p&gt;
&lt;h2&gt;What Type Of Events Are There?&lt;/h2&gt;
&lt;p&gt;Well, the first couple of challenges give us an idea..&lt;/p&gt;
&lt;p&gt;In the beginner category, you’ll be doing things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/02/the-2012-scripting-games-beginner-event-1-use-windows-powershell-to-identify-a-working-set-of-processes.aspx" target="_blank"&gt;Identifying processes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/03/2012-scripting-games-beginner-event-2-find-stoppable-running-services.aspx" target="_blank"&gt;Finding services with particular settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/04/2012-scripting-games-beginner-event-3-create-a-file-in-a-folder.aspx" target="_blank"&gt;Creating files in folders in the file system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the advanced category (should you dare..), you’ll find challenges like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/02/the-2012-scripting-games-advanced-event-1-review-a-coworker-s-script.aspx" target="_blank"&gt;Reviewing someone else’s script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/03/2012-scripting-games-advanced-event-2-find-information-about-remote-and-local-services.aspx" target="_blank"&gt;Working with local and remote services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/04/04/2012-scripting-games-advanced-event-3-create-a-log-that-updates.aspx" target="_blank"&gt;Creating log files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h2&gt;What’s In It For Me?&lt;/h2&gt;
&lt;p&gt;The Games are a great way to get hands on with PowerShell in a non-destructive manner.&amp;#160; None of the challenges are going to require you to “format c:”.&amp;#160; You also have a chance to win some prizes, so get out there and try them out!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PsbNDNWORvI6Z3Y1gig0T5gPugc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsbNDNWORvI6Z3Y1gig0T5gPugc/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/PsbNDNWORvI6Z3Y1gig0T5gPugc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsbNDNWORvI6Z3Y1gig0T5gPugc/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=5-9xH8VTzok:DUlpGZSv9UI: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/5-9xH8VTzok" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/04/the-games-are-afoot/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/04/the-games-are-afoot/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/04/the-games-are-afoot/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Steven Murawski</name>
						<uri>http://www.usepowershell.com</uri>
					</author>
		<title type="html"><![CDATA[Cascadia Community Conference &#8211; 2012]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/UsePowershell/~3/dtzP0CkWKs0/" />
		<id>http://blog.usepowershell.com/2012/03/cascadia-community-conference-2012/</id>
		<updated>2012-03-26T21:37:00Z</updated>
		<published>2012-03-26T21:37:00Z</published>
		<category scheme="http://blog.usepowershell.com" term="Cascadia2012" /><category scheme="http://blog.usepowershell.com" term="Events" />		<summary type="html"><![CDATA[I had a great time at the Cascadia conference this past weekend.&#160; I missed Friday, but got to spend all day Saturday teaching PowerShell to a great group of attendees.&#160; There were some great questions and interesting thoughts developed in both the Fundamentals class and the Tips and Tricks class. I want to thank the [...]]]></summary>
		<content type="html" xml:base="http://blog.usepowershell.com/2012/03/cascadia-community-conference-2012/">&lt;p&gt;I had a great time at the &lt;a href="http://www.casitconf.org/casitconf12/" target="_blank"&gt;Cascadia conference&lt;/a&gt; this past weekend.&amp;#160; I missed Friday, but got to spend all day Saturday teaching PowerShell to a great group of attendees.&amp;#160; There were some great questions and interesting thoughts developed in both the Fundamentals class and the Tips and Tricks class.&lt;/p&gt;
&lt;p&gt;I want to thank the organizers of the conference for having me out and especially to the attendees for my classes, most of whom spent all day with me. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.usepowershell.com/cascadia2012.zip" target="_blank"&gt;For those that were in the class, I&amp;#8217;ve linked to a zip file with some of the commands we ran through, and an xml file with the shell history for the problem we worked through in the afternoon.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To load the shell history, you can use Import-Clixml (path to the xml file) | add-history.&amp;#160; After that Get-history will have all the commands we ran when we tried to work out the error handling for that web request.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qg080kuCqelqMxGfIFf6WXqqn-M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qg080kuCqelqMxGfIFf6WXqqn-M/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/qg080kuCqelqMxGfIFf6WXqqn-M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qg080kuCqelqMxGfIFf6WXqqn-M/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=dtzP0CkWKs0:DVzJEhVUid8: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/dtzP0CkWKs0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://blog.usepowershell.com/2012/03/cascadia-community-conference-2012/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.usepowershell.com/2012/03/cascadia-community-conference-2012/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.usepowershell.com/2012/03/cascadia-community-conference-2012/</feedburner:origLink></entry>
		<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-02-27T14:06:23Z</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/2o7xDZyWnAycINwn_puuP8wLk3U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2o7xDZyWnAycINwn_puuP8wLk3U/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/2o7xDZyWnAycINwn_puuP8wLk3U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2o7xDZyWnAycINwn_puuP8wLk3U/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:6fpcwPXSWBQ: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>
	</feed>

