&lt;?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Articles from June 2013 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2013/06/</link><description>Recent content in Articles from June 2013 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2013/06/index.xml" rel="self" type="application/rss+xml"/><item><title>[UPDATE: It's Safe] CAUTION: Don't Run Update-Help Right Now</title><link>https://powershell.org/articles/2013-06-28-caution-dont-run-update-help-right-now/</link><guid>https://powershell.org/articles/2013-06-28-caution-dont-run-update-help-right-now/</guid><pubDate>Fri, 28 Jun 2013 15:19:22 +0000</pubDate><description>&lt;p&gt;&lt;strong&gt;UPDATE 2 JULY 2013: Microsoft is informing MVPs that the fix is in, and new help files should be downloadable by (at latest) the morning of 3 July 2013. So get your Update-Help ready to run. &lt;a href="http://wp.me/p3priC-25s"&gt;More info&lt;/a&gt;.&lt;/strong&gt;&lt;br&gt;
If you haven&amp;rsquo;t recently run Update-Help&amp;hellip; don&amp;rsquo;t. There&amp;rsquo;s a problem with the help files that have been produced recently so that instead of:&lt;br&gt;
**-computername **&lt;br&gt;
You&amp;rsquo;re getting:&lt;br&gt;
&lt;strong&gt;-computername&lt;/strong&gt;&lt;br&gt;
This affects all parameters - no value types will be shown. This has been reported to Microsoft, and they&amp;rsquo;ve acknowledged receipt of that report and are investigating. Personally, I believe the problem may be related to internal-use-only tools that are used to create the syntax section of the help files, so hopefully it&amp;rsquo;ll be an easy fix.&lt;br&gt;
The -full and -detail help still shows the correct information, so if you&amp;rsquo;ve downloaded the borked help files, you&amp;rsquo;re not totally out of luck.&lt;br&gt;
As far as I can determine, this only currently affects core PowerShell cmdlets, not add-in modules from product teams like Exchange, etc. I believe that&amp;rsquo;s because the core cmdlets were just updated and re-published, something the PowerShell team tends to do a bit more frequently than some of the other product groups.&lt;br&gt;
I&amp;rsquo;ll keep you posted as I learn anything new.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p><strong>UPDATE 2 JULY 2013: Microsoft is informing MVPs that the fix is in, and new help files should be downloadable by (at latest) the morning of 3 July 2013. So get your Update-Help ready to run.<a href="http://wp.me/p3priC-25s">More info</a>.</strong><br>
If you haven&rsquo;t recently run Update-Help&hellip; don&rsquo;t. There&rsquo;s a problem with the help files that have been produced recently so that instead of:<br>
**-computername **<br>
You&rsquo;re getting:<br><strong>-computername</strong><br>
This affects all parameters - no value types will be shown. This has been reported to Microsoft, and they&rsquo;ve acknowledged receipt of that report and are investigating. Personally, I believe the problem may be related to internal-use-only tools that are used to create the syntax section of the help files, so hopefully it&rsquo;ll be an easy fix.<br>
The -full and -detail help still shows the correct information, so if you&rsquo;ve downloaded the borked help files, you&rsquo;re not totally out of luck.<br>
As far as I can determine, this only currently affects core PowerShell cmdlets, not add-in modules from product teams like Exchange, etc. I believe that&rsquo;s because the core cmdlets were just updated and re-published, something the PowerShell team tends to do a bit more frequently than some of the other product groups.<br>
I&rsquo;ll keep you posted as I learn anything new.</p>
]]></content:encoded></item><item><title>PowerShell Great Debate: To Accelerate, or Not?</title><link>https://powershell.org/articles/2013-06-25-powershell-great-debate-to-accelerate-or-not/</link><guid>https://powershell.org/articles/2013-06-25-powershell-great-debate-to-accelerate-or-not/</guid><pubDate>Tue, 25 Jun 2013 14:38:57 +0000</pubDate><description>&lt;p&gt;At his &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/BOF-ITP23"&gt;Birds of a feather session at TechEd 2013&lt;/a&gt;, Glenn Sizemore and I briefly debated something that I&amp;rsquo;d like to make the topic of today&amp;rsquo;s Great Debate. It has to do with how you create new, custom objects. For example, one approach - which I used to favor, but now think is too long-form:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$obj = New-Object -Type PSObject $obj | Add-Member NoteProperty Foo $bar $obj | Add-Member NoteProperty This $that &lt;/code&gt;We saw some variants in The Scripting Games, including this one:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>At his<a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/BOF-ITP23">Birds of a feather session at TechEd 2013</a>, Glenn Sizemore and I briefly debated something that I&rsquo;d like to make the topic of today&rsquo;s Great Debate. It has to do with how you create new, custom objects. For example, one approach - which I used to favor, but now think is too long-form:</p><p><code>$obj = New-Object -Type PSObject $obj | Add-Member NoteProperty Foo $bar $obj | Add-Member NoteProperty This $that</code>We saw some variants in The Scripting Games, including this one:</p><p><code>$obj = New-Object PSObject Add-Member -InputObject $obj -Name Foo -MemberType NoteProperty -Value $bar</code>I generally don&rsquo;t like any syntax that explicitly uses -InputObject like that; the parameter is designed to catch pipeline input, and using it explicitly strikes me as overly wordy, and doesn&rsquo;t really leverage the shell.<br>
Glenn and I both felt that, these days, a hashtable was the preferred approach:</p><p><code>$props = @{This=$that; Foo=$bar; These=$those}</code>The semicolons are optional when you type the construct that way, but I tend to use them out of habits that come from other languages. The point of our debate was that Glenn would use the hashtable like this:</p><p><code>$obj = [pscustomobject]$props</code>Because he feels it&rsquo;s more concise, and because he puts a high value on quick readability. I personally prefer (and teach) a somewhat longer version:</p><p><code>$obj = New-Object -Type PSObject -Prop $props</code>Because, I argued, type accelerators like [pscustomobject] aren&rsquo;t documented or discoverable. Someone running across your script can&rsquo;t use the shell&rsquo;s help system to figure out WTF is going on; with New-Object, on the other hand, they&rsquo;ve got a help file and examples to rely on.<br>
(BTW, I never worry about ordered hashtables; if I need the output in a specific order, I&rsquo;ll use a custom view, a Format cmdlet, or Select-Object. A developer once explained to me that unordered hashtables are more memory-efficient for .NET, so I go with them).<br>
But the big question on the table here is &ldquo;to use type accelerators, or no?&rdquo; You see this in many instances:</p><p>`[null]Do-Something</p><h1 id="vs" class="ps-heading">vs.<a class="ps-heading-anchor" href="#vs" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>Do-Something | Out-Null
`Same end effect of course, but I&rsquo;ve always argued that the latter is more discoverable, while Glenn (and many others) prefer the brevity of the former.<br>
So we&rsquo;ll make today&rsquo;s Great Debate two-pronged. What approach do you favor for creating custom objects? And, do you tend to prefer type accelerators, or no?<br>
[boilerplate greatdebate]</p>
]]></content:encoded></item><item><title>Pipeline or Script? That is the Question</title><link>https://powershell.org/articles/2013-06-21-pipeline-or-script-that-is-the-question/</link><guid>https://powershell.org/articles/2013-06-21-pipeline-or-script-that-is-the-question/</guid><pubDate>Fri, 21 Jun 2013 17:52:14 +0000</pubDate><description>&lt;p&gt;When I teach PowerShell classes, I often start by assuring students that, with the shell, you can _accomplish a great deal without ever writing a script. _And it&amp;rsquo;s true - you can. Unlike predecessor technologies like VBScript, PowerShell lets you pack a lot of goodness into a one-liner - or even into several lines run manually in the console.&lt;br&gt;
What I never say is _you can accomplish 
anything
without ever writing a script. _That isn&amp;rsquo;t true. I see folks struggle all the time to squeeze something into a one-liner pipeline, when life would be so much easier if they switched a script-style, procedural approach.&lt;br&gt;
So what&amp;rsquo;s the tipping point?&lt;br&gt;
Actually, it&amp;rsquo;s really easy to spot. You should be writing a script if:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>When I teach PowerShell classes, I often start by assuring students that, with the shell, you can _accomplish a great deal without ever writing a script. _And it&rsquo;s true - you can. Unlike predecessor technologies like VBScript, PowerShell lets you pack a lot of goodness into a one-liner - or even into several lines run manually in the console.<br>
What I never say is _you can accomplish 
anything
without ever writing a script. _That isn&rsquo;t true. I see folks struggle all the time to squeeze something into a one-liner pipeline, when life would be so much easier if they switched a script-style, procedural approach.<br>
So what&rsquo;s the tipping point?<br>
Actually, it&rsquo;s really easy to spot. You should be writing a script if:</p><ul><li/></ul><p>You need to take different actions based on some condition, like send an e-mail if there&rsquo;s data to send, but send nothing if there&rsquo;s no data.</p><ul><li>You need to do more than one discrete task. Yeah, you can sometimes jam multiple actions into a one-liner using things like passthrough, but it&rsquo;s not consistently available, and the command becomes dreadfully difficult to read and debug.</li><li>You need to run a command repeatedly over time, and each time some of its values will change (scripts offer declarative parameters).</li></ul><p>Many smart folks <em>start</em> in the console to test a command, and then paste it into a script they&rsquo;re working on (I do that, too). And there are other reasons to switch from &ldquo;running a command in the console&rdquo; to &ldquo;banging out a script in the ISE [or editor of choice].&rdquo; What tips would you offer to a PowerShell newbie to help them get the most from the command-line&hellip; but know when it&rsquo;s time to move into a script-based approach?</p>
]]></content:encoded></item><item><title>PowerShell Great Debate: Capturing Errors</title><link>https://powershell.org/articles/2013-06-17-powershell-great-debate-capturing-errors/</link><guid>https://powershell.org/articles/2013-06-17-powershell-great-debate-capturing-errors/</guid><pubDate>Mon, 17 Jun 2013 14:30:30 +0000</pubDate><description>&lt;p&gt;Hot on the heels of &lt;a href="https://powershell.org/2013/06/11/powershell-great-debate-error-trapping/" title="PowerShell Great Debate: Error Trapping"&gt;our last Great Debate&lt;/a&gt;, let&amp;rsquo;s take the discussion to the next logical step and talk about how you like to capture errors when they occur.&lt;br&gt;
The first technique is to use -ErrorVariable:&lt;/p&gt;
&lt;p&gt;`Try {
Get-WmiObject Win32_BIOS -comp nothing -ea stop -ev mine
} Catch {&lt;/p&gt;
&lt;h1 id="use-mine-for-error" class="ps-heading"&gt;use $mine for error&lt;a class="ps-heading-anchor" href="#use-mine-for-error" aria-label="Link to this section" title="Link to this section"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;}
`Another is to use the $Error collection:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hot on the heels of<a href="https://powershell.org/2013/06/11/powershell-great-debate-error-trapping/" title="PowerShell Great Debate: Error Trapping">our last Great Debate</a>, let&rsquo;s take the discussion to the next logical step and talk about how you like to capture errors when they occur.<br>
The first technique is to use -ErrorVariable:</p><p>`Try {
Get-WmiObject Win32_BIOS -comp nothing -ea stop -ev mine
} Catch {</p><h1 id="use-mine-for-error" class="ps-heading">use $mine for error<a class="ps-heading-anchor" href="#use-mine-for-error" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>}
`Another is to use the $Error collection:</p><p>`Try {
Get-WmiObject Win32_BIOS -comp badname -ea stop
} Catch {</p><h1 id="use-error0" class="ps-heading">use $error[0]<a class="ps-heading-anchor" href="#use-error0" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>}
`And a third is to use $_:</p><p>`Try {
Get-WmiObject Win32_BIOS -comp snoopy -ea stop
} Catch {</p><h1 id="use-_" class="ps-heading">use $_<a class="ps-heading-anchor" href="#use-_" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>}
`Personally, I&rsquo;ve always disliked the last approach, because people don&rsquo;t realize that in some situations $_ can get &ldquo;hijacked.&rdquo; For example:</p><p><code>Get-Content names.txt | ForEach-Object { Try { Get-WmiObject Win32_BIOS -Comp $_ -EA Stop } Catch { # is $_ an error or a computer name? } }</code>Now, I&rsquo;m a big not-fan of using pipelines like this in a script, but that&rsquo;s another debate (it&rsquo;s on my list). The point is really that I can&rsquo;t universally, 100% rely on $<em>&hellip; and when someone uses $</em> without realizing what&rsquo;s happening, they back themselves into a tricky corner that&rsquo;s difficult to diagnose. Since my big focus is on learning and teaching, I tend to want to teach techniques that are universal and always work the same way.<br>
That said, $error[0] and the -ErrorVariable (-EV) technique return slightly different objects, meaning you have to work with them somewhat differently.<br>
So what&rsquo;s your preference? Why? Which of these don&rsquo;t you like so much&hellip; and why?<br>
[boilerplate greatdebate]</p>
]]></content:encoded></item><item><title>Charlotte User Group July Meeting</title><link>https://powershell.org/articles/2013-06-12-charlotte-user-group-july-meeting/</link><guid>https://powershell.org/articles/2013-06-12-charlotte-user-group-july-meeting/</guid><pubDate>Thu, 13 Jun 2013 02:24:30 +0000</pubDate><description>&lt;p&gt;Please join us on a special date in July. This month our meeting will be on July 11, 2013 instead of our normal first Thursday of the month due to the holiday.&lt;br&gt;
Microsoft Scripting Guy Ed Wilson will make a presentation on DSC Desired State Configuration for PowerShell V4.&lt;br&gt;
Sign up at the following link in Meetup so we know how many will be there and we can have adequate food for all.&lt;br&gt;
&lt;a href="http://www.meetup.com/Charlotte-PowerShell-Users-Group/events/124356442/"&gt;http://www.meetup.com/Charlotte-PowerShell-Users-Group/events/124356442/&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Please join us on a special date in July. This month our meeting will be on July 11, 2013 instead of our normal first Thursday of the month due to the holiday.<br>
Microsoft Scripting Guy Ed Wilson will make a presentation on DSC Desired State Configuration for PowerShell V4.<br>
Sign up at the following link in Meetup so we know how many will be there and we can have adequate food for all.<br><a href="http://www.meetup.com/Charlotte-PowerShell-Users-Group/events/124356442/">http://www.meetup.com/Charlotte-PowerShell-Users-Group/events/124356442/</a></p>
]]></content:encoded></item><item><title>PowerShell Great Debate: Error Trapping</title><link>https://powershell.org/articles/2013-06-11-powershell-great-debate-error-trapping/</link><guid>https://powershell.org/articles/2013-06-11-powershell-great-debate-error-trapping/</guid><pubDate>Tue, 11 Jun 2013 21:17:36 +0000</pubDate><description>&lt;p&gt;In the aftermath of The Scripting Games, it&amp;rsquo;s clear we need to have several community discussions - thus, I present to you, The Great Debates. These will be a series of posts wherein I&amp;rsquo;ll outline the basic situation, and you&amp;rsquo;re encouraged to debate and discuss in the comments section.&lt;br&gt;
The general gist is that, during the Games, we saw different people voting &amp;ldquo;up&amp;rdquo; and &amp;ldquo;down&amp;rdquo; for the exact same techniques. So&amp;hellip; which one is right? Neither! But all approaches have pros and cons&amp;hellip; so that&amp;rsquo;s what we&amp;rsquo;ll discuss and debate. In the end, I&amp;rsquo;ll take the discussion into a community-owned (free) ebook on patterns and practices for PowerShell.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In the aftermath of The Scripting Games, it&rsquo;s clear we need to have several community discussions - thus, I present to you, The Great Debates. These will be a series of posts wherein I&rsquo;ll outline the basic situation, and you&rsquo;re encouraged to debate and discuss in the comments section.<br>
The general gist is that, during the Games, we saw different people voting &ldquo;up&rdquo; and &ldquo;down&rdquo; for the exact same techniques. So&hellip; which one is right? Neither! But all approaches have pros and cons&hellip; so that&rsquo;s what we&rsquo;ll discuss and debate. In the end, I&rsquo;ll take the discussion into a community-owned (free) ebook on patterns and practices for PowerShell.</p><h2 id="todays-debate-error-trapping" class="ps-heading">Today&rsquo;s Debate: Error Trapping<a class="ps-heading-anchor" href="#todays-debate-error-trapping" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>There are a few different approaches folks take to trapping an error (I&rsquo;m not discussing <em>capturing</em> the error, just knowing that one occurred).<br>
Hopefully the Trap construct is familiar to everyone; I&rsquo;ve always believed it&rsquo;s awkward and outdated. The product team has said as much; it was just the best they could do in v1 given time constraints. Its use of scope makes it especially tricky sometimes.<br>
Try&hellip;Catch&hellip;Finally seems to be what a lot of people prefer. It&rsquo;s procedural and structured, and it works against any terminating exception. You do have to remember to make errors into terminating exceptions (<strong>-EA Stop</strong> on a cmdlet, for example), but it&rsquo;s a very programmatic approach.<br>
I see folks sometimes use $?:</p><p>`Do-Something
If ($?) {</p><h1 id="deal-with-it" class="ps-heading">deal with it<a class="ps-heading-anchor" href="#deal-with-it" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>}
`A &ldquo;con&rdquo; of this approach is that $? doesn&rsquo;t indicate an error. It indicates whether or not _the previous command 
thinks
it completed successfully. _It&rsquo;s reliable with <em>most</em> cmdlets - but I&rsquo;ve seen it fail for a lot of external utilities. Given that it isn&rsquo;t 100% reliable as an indicator, I tend to shy away from it. I&rsquo;d rather learn one way that always works, and that&rsquo;s been Try/Catch for me.<br>
Try/Catch also makes it easy to catch different exceptions differently. I don&rsquo;t always need to do so&hellip; but again, I&rsquo;d rather learn <em>one</em> way to do things that <em>always</em> works and provides more flexibility. I don&rsquo;t want to use $? sometimes, and then use something else other times, because that&rsquo;s more to remember, teach, learn, etc.<br>
Some folks will do an <strong>$error.clear()</strong>, clearing the error collection, and then run a command. They&rsquo;ll then check <strong>$error.count</strong> to see if it&rsquo;s nonzero. I don&rsquo;t like that as much because it looks messy to me, and again - it doesn&rsquo;t let me easily handle different exceptions as easily as Try/Catch.<br>
Ok&hellip; your thoughts?</p><p>[boilerplate greatdebate]</p>
]]></content:encoded></item><item><title>Overall Winners of the Scripting Games</title><link>https://powershell.org/articles/2013-06-11-overall-winners-of-the-scripting-games/</link><guid>https://powershell.org/articles/2013-06-11-overall-winners-of-the-scripting-games/</guid><pubDate>Tue, 11 Jun 2013 14:24:22 +0000</pubDate><description>&lt;p&gt;**Congratulations to our top winners, **determined by our expert judges (and in this case we also considered their CrowdScores), &lt;strong&gt;mikefrobbins&lt;/strong&gt; and &lt;strong&gt;taygibb&lt;/strong&gt;, who have just won a free pass to Microsoft TechEd Europe or Microsoft TechEd North America 2014. Instructions are in your profile for claiming your prize. It is transferrable, but must be claimed/transferred by the end of July.&lt;br&gt;
&lt;strong&gt;Congratulations to our top voters/commenters&lt;/strong&gt;, Klaus_Schulte and Poshsg0606. They were chosen randomly for this award, although I did review their comments and scores to ensure they were all meaningful and consistent. They&amp;rsquo;ve won free passes to the PowerShell Summit North America 2014; these are transferrable and must be claimed/transferred by the end of July.&lt;br&gt;
Thanks to everyone who participated in The Scripting Games this year. We&amp;rsquo;ve received a lot of feedback from you, and very much appreciate the time and spirit you spent to offer it. We&amp;rsquo;re taking it all into consideration for our next event.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>**Congratulations to our top winners, **determined by our expert judges (and in this case we also considered their CrowdScores), <strong>mikefrobbins</strong> and <strong>taygibb</strong>, who have just won a free pass to Microsoft TechEd Europe or Microsoft TechEd North America 2014. Instructions are in your profile for claiming your prize. It is transferrable, but must be claimed/transferred by the end of July.<br><strong>Congratulations to our top voters/commenters</strong>, Klaus_Schulte and Poshsg0606. They were chosen randomly for this award, although I did review their comments and scores to ensure they were all meaningful and consistent. They&rsquo;ve won free passes to the PowerShell Summit North America 2014; these are transferrable and must be claimed/transferred by the end of July.<br>
Thanks to everyone who participated in The Scripting Games this year. We&rsquo;ve received a lot of feedback from you, and very much appreciate the time and spirit you spent to offer it. We&rsquo;re taking it all into consideration for our next event.</p>
]]></content:encoded></item><item><title>Scripting Games Event 6 Winners</title><link>https://powershell.org/articles/2013-06-11-scripting-games-event-5-winners-1/</link><guid>https://powershell.org/articles/2013-06-11-scripting-games-event-5-winners-1/</guid><pubDate>Tue, 11 Jun 2013 14:17:31 +0000</pubDate><description>&lt;p&gt;We&amp;rsquo;re pleased to announce the winners for Event 6 of The Scripting Games 2013!&lt;br&gt;
Winners: You can log into &lt;a href="http://scriptinggames.org/"&gt;The Scripting Games Web site&lt;/a&gt; and go to your Profile page to see your prize. You will be given a prize redemption code and either a URL where you can redeem it, or an e-mail address of the prize provider (they will need the redemption code). All prizes must be claimed by the end of July 2013. I will list winners by username; if you used your e-mail address as your username, then a portion of that will be truncated for your privacy. Anyone can log in and check their Profile page to see if they&amp;rsquo;ve won a prize.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We&rsquo;re pleased to announce the winners for Event 6 of The Scripting Games 2013!<br>
Winners: You can log into<a href="http://scriptinggames.org/">The Scripting Games Web site</a> and go to your Profile page to see your prize. You will be given a prize redemption code and either a URL where you can redeem it, or an e-mail address of the prize provider (they will need the redemption code). All prizes must be claimed by the end of July 2013. I will list winners by username; if you used your e-mail address as your username, then a portion of that will be truncated for your privacy. Anyone can log in and check their Profile page to see if they&rsquo;ve won a prize.</p><ul><li><p>Event 6 Beginner First Place: chanced (free ebook from Manning<strong>and a copy of SAPIEN Software Suite!</strong>)</p></li><li><p>Event 6 Beginner Second Place: marches (6 months video training from Interface<strong>and a copy of SAPIEN PrimalScript!</strong>)</p></li><li><p>Event 6 Beginner Third Place: jb.lewis (1 year of Phoneominal from Start-Automating)</p></li><li><p>Event 6 Advanced First Place: mikefrobbins (free ebook from Manning<strong>and a copy of SAPIEN Software Suite!</strong>)</p></li><li><p>Event 6 Advanced Second Place: DaveGarnar (6 months video training from Interface<strong>and a copy of SAPIEN PrimalScript!</strong>)</p></li><li><p>Event 6 Advanced Third Place: Alexy (1 year of Phonenominal from Start-Automating)</p></li><li><p>Event 6 Beginner Top CrowdScore: taygibb (free ebook from Manning)</p></li><li><p>Event 6 Advanced Top CrowdScore: CarloM (free ebook from Manning)</p></li></ul><p>These will be listed on our<a href="http://scriptinggames.org/winners.php">consolidated list of winners</a>, which includes links to the winning entries.<br>
Our CrowdScore winners get a selection of free ebooks from Manning, 1 month of video training from Interface, and $50 gift cards from SAPIEN; 1 prize per winner. Check your profile to see if you&rsquo;ve won!<br>
Congratulations to all of our winners! Note that our top three prizes in each category were awarded by our Mighty Panel of Celebrity Judges. Each judge nominated a first, second, and third place winner from the entries that our expert commentators identified as &ldquo;best.&rdquo; Those nominations were compiled, and in the event of a tie the earliest entry was deemed winner.</p>
]]></content:encoded></item><item><title>Call for Debates!</title><link>https://powershell.org/articles/2013-06-10-call-for-debates/</link><guid>https://powershell.org/articles/2013-06-10-call-for-debates/</guid><pubDate>Mon, 10 Jun 2013 14:20:00 +0000</pubDate><description>&lt;p&gt;As the Scripting Games begin to wind down, I know that we&amp;rsquo;ve come across a number of divergent opinions, especially in the comments. &amp;ldquo;You shouldn&amp;rsquo;t use .NET classes!&amp;rdquo; says one comment, &amp;ldquo;you should have done this with a .NET class&amp;rdquo; says another comment _in the same entry. _Fun. It&amp;rsquo;s great to see those differences - but it&amp;rsquo;d be better to &lt;em&gt;discuss&lt;/em&gt; them.&lt;br&gt;
So I&amp;rsquo;m asking everyone in the Games: Go through your comments on all of your entries. Find comments that you disagree with - but that you could possibly see someone making an argument for (and that you&amp;rsquo;d perhaps argue against). Post those here as a comment, or email me (there&amp;rsquo;s a contact form on the Site Info tab). I want to collect these, and start a series of discussions where we can, jointly, start to hammer out some patterns and practices that we, as a community, feel work well. Some of those may have exceptions (rules always do) - &amp;ldquo;never use a .NET class _when there&amp;rsquo;s a cmdlet that can do the same thing, _but otherwise go nuts&amp;rdquo; is one example.&lt;br&gt;
Fire away. For now, you don&amp;rsquo;t need to put your argument for or against - I&amp;rsquo;m just collecting the topics that we&amp;rsquo;ve seen disagreement or differing opinions on. Discussion will follow!&lt;br&gt;
The result of this will be a community-guided Best Practices ebook, which I&amp;rsquo;ll assemble and we&amp;rsquo;ll give away for free. I might even build that, initially, as a wiki, so that folks could contribute to it over time. Will see - that&amp;rsquo;s a bit of extra software.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As the Scripting Games begin to wind down, I know that we&rsquo;ve come across a number of divergent opinions, especially in the comments. &ldquo;You shouldn&rsquo;t use .NET classes!&rdquo; says one comment, &ldquo;you should have done this with a .NET class&rdquo; says another comment _in the same entry. _Fun. It&rsquo;s great to see those differences - but it&rsquo;d be better to <em>discuss</em> them.<br>
So I&rsquo;m asking everyone in the Games: Go through your comments on all of your entries. Find comments that you disagree with - but that you could possibly see someone making an argument for (and that you&rsquo;d perhaps argue against). Post those here as a comment, or email me (there&rsquo;s a contact form on the Site Info tab). I want to collect these, and start a series of discussions where we can, jointly, start to hammer out some patterns and practices that we, as a community, feel work well. Some of those may have exceptions (rules always do) - &ldquo;never use a .NET class _when there&rsquo;s a cmdlet that can do the same thing, _but otherwise go nuts&rdquo; is one example.<br>
Fire away. For now, you don&rsquo;t need to put your argument for or against - I&rsquo;m just collecting the topics that we&rsquo;ve seen disagreement or differing opinions on. Discussion will follow!<br>
The result of this will be a community-guided Best Practices ebook, which I&rsquo;ll assemble and we&rsquo;ll give away for free. I might even build that, initially, as a wiki, so that folks could contribute to it over time. Will see - that&rsquo;s a bit of extra software.</p>
]]></content:encoded></item><item><title>Scripting Games 2013: Event 6 Notes</title><link>https://powershell.org/articles/2013-06-09-scripting-games-2013-event-6-notes/</link><guid>https://powershell.org/articles/2013-06-09-scripting-games-2013-event-6-notes/</guid><pubDate>Mon, 10 Jun 2013 02:43:58 +0000</pubDate><description>&lt;p&gt;We have finally hit the final event of the 2013 Scripting Games! The past 6 weeks have given us many amazing scripts and some that were in need of extra work. Regardless, for those of you who have finished all 6 scripts in your respective, I say Congratulations! You have hit the finish line sprinting hard to the end! Now you can sit back and know that you made it and have learned (hopefully) some great things along the way. Remember, not only have you learned some new techniques, but also the techniques that you have used have taught others how to write better scripts!&lt;br&gt;
Check out the rest of my notes on my &lt;a href="http://learn-powershell.net/2013/06/09/scripting-games-2013-event-6-notes/"&gt;blog here&lt;/a&gt;!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We have finally hit the final event of the 2013 Scripting Games! The past 6 weeks have given us many amazing scripts and some that were in need of extra work. Regardless, for those of you who have finished all 6 scripts in your respective, I say Congratulations! You have hit the finish line sprinting hard to the end! Now you can sit back and know that you made it and have learned (hopefully) some great things along the way. Remember, not only have you learned some new techniques, but also the techniques that you have used have taught others how to write better scripts!<br>
Check out the rest of my notes on my<a href="http://learn-powershell.net/2013/06/09/scripting-games-2013-event-6-notes/">blog here</a>!</p>
]]></content:encoded></item><item><title>Event 6 Judge's Notes from Jan Egil Ring</title><link>https://powershell.org/articles/2013-06-08-event-6-judges-notes-from-jan-egil-ring/</link><guid>https://powershell.org/articles/2013-06-08-event-6-judges-notes-from-jan-egil-ring/</guid><pubDate>Sun, 09 Jun 2013 01:25:00 +0000</pubDate><description>&lt;p&gt;&lt;a href="http://blog.powershell.no/2013/06/08/2013-scripting-games-learning-points-from-event-6/"&gt;http://blog.powershell.no/2013/06/08/2013-scripting-games-learning-points-from-event-6/&lt;/a&gt; has Jan Egil&amp;rsquo;s thoughts on the final event.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p><a href="http://blog.powershell.no/2013/06/08/2013-scripting-games-learning-points-from-event-6/">http://blog.powershell.no/2013/06/08/2013-scripting-games-learning-points-from-event-6/</a> has Jan Egil&rsquo;s thoughts on the final event.</p>
]]></content:encoded></item><item><title>Last events: my notes and scripts.</title><link>https://powershell.org/articles/2013-06-08-last-events-my-notes-and-scripts/</link><guid>https://powershell.org/articles/2013-06-08-last-events-my-notes-and-scripts/</guid><pubDate>Sat, 08 Jun 2013 20:46:30 +0000</pubDate><description>&lt;p&gt;Oops! Looks like I totally forgot about posting what I did over here. Sorry!&lt;br&gt;
In order of appearance:&lt;br&gt;
&lt;a href="http://becomelotr.wordpress.com/2013/05/28/event-5-my-way/"&gt;Event 5 - script&lt;/a&gt;&lt;br&gt;
&lt;a href="http://becomelotr.wordpress.com/2013/06/02/event-5-my-notes/"&gt;Event 5 - notes&lt;/a&gt;&lt;br&gt;
&lt;a href="http://becomelotr.wordpress.com/2013/06/05/event-6-my-way/"&gt;Event 6 - script&lt;/a&gt;&lt;br&gt;
&lt;a href="http://becomelotr.wordpress.com/2013/06/08/event-6-my-notes/"&gt;Event 6 - notes&lt;/a&gt;&lt;br&gt;
This is last event, and I would like to thank everybody who took part in this games. Thank you guys for great ideas, inspiration, feedback&amp;hellip; It was really educational experience for me (as it was in the past), and I hope it was educational for you too. And - congratulations for all the winners. 🙂&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Oops! Looks like I totally forgot about posting what I did over here. Sorry!<br>
In order of appearance:<br><a href="http://becomelotr.wordpress.com/2013/05/28/event-5-my-way/">Event 5 - script</a><br><a href="http://becomelotr.wordpress.com/2013/06/02/event-5-my-notes/">Event 5 - notes</a><br><a href="http://becomelotr.wordpress.com/2013/06/05/event-6-my-way/">Event 6 - script</a><br><a href="http://becomelotr.wordpress.com/2013/06/08/event-6-my-notes/">Event 6 - notes</a><br>
This is last event, and I would like to thank everybody who took part in this games. Thank you guys for great ideas, inspiration, feedback&hellip; It was really educational experience for me (as it was in the past), and I hope it was educational for you too. And - congratulations for all the winners. 🙂</p>
]]></content:encoded></item><item><title>Notes for Event 6</title><link>https://powershell.org/articles/2013-06-07-notes-for-event-6/</link><guid>https://powershell.org/articles/2013-06-07-notes-for-event-6/</guid><pubDate>Fri, 07 Jun 2013 13:26:41 +0000</pubDate><description>&lt;p&gt;When I read the instructions for event 6, I thought that here&amp;rsquo;s a tough one. A lot of competitors won&amp;rsquo;t have access to a test environment with Windows Server 2012 and Virtual Machines that they can actually work with. So, I expected that many of the entries wouldn&amp;rsquo;t get tested and intended to forgive minor errors that would have shown up in testing.&lt;br&gt;
Well, there was one thing that really surprised me. The instructions were quite clear about minimizing &amp;ldquo;Are You Sure&amp;rdquo; queries to the user, but you can count on one hand the number of entries that included &lt;em&gt;-Confirm:$false&lt;/em&gt;. This is just an example of why it&amp;rsquo;s so important to read the problem statement very carefully and extract the solution requirements. Then, after creating the solution, go back and verify that the requirements have all been met. Many of the entries called out this requirement in the comments, but then didn&amp;rsquo;t account for it in the script.&lt;br&gt;
I had mentioned in a previous blog entry that, particularly in the advanced entries, the author was working too hard. Sometimes this means putting more emphasis on &amp;ldquo;completeness&amp;rdquo; than in solving the problem. Here&amp;rsquo;s an example of a wasted effort. A few entries used the &lt;em&gt;[ValidateNotNullOrEmpty()]&lt;/em&gt; test for a possible alternate to the default value for &amp;ldquo;Server&amp;rdquo;.  Because there is a default value for the parameter, it won&amp;rsquo;t be null or empty making this test unnecessary. Here, give this a try:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>When I read the instructions for event 6, I thought that here&rsquo;s a tough one. A lot of competitors won&rsquo;t have access to a test environment with Windows Server 2012 and Virtual Machines that they can actually work with. So, I expected that many of the entries wouldn&rsquo;t get tested and intended to forgive minor errors that would have shown up in testing.<br>
Well, there was one thing that really surprised me. The instructions were quite clear about minimizing &ldquo;Are You Sure&rdquo; queries to the user, but you can count on one hand the number of entries that included<em>-Confirm:$false</em>. This is just an example of why it&rsquo;s so important to read the problem statement very carefully and extract the solution requirements. Then, after creating the solution, go back and verify that the requirements have all been met. Many of the entries called out this requirement in the comments, but then didn&rsquo;t account for it in the script.<br>
I had mentioned in a previous blog entry that, particularly in the advanced entries, the author was working too hard. Sometimes this means putting more emphasis on &ldquo;completeness&rdquo; than in solving the problem. Here&rsquo;s an example of a wasted effort. A few entries used the<em>[ValidateNotNullOrEmpty()]</em> test for a possible alternate to the default value for &ldquo;Server&rdquo;.  Because there is a default value for the parameter, it won&rsquo;t be null or empty making this test unnecessary. Here, give this a try:</p><p><code>function Test-NullOrEmpty { [CmdletBinding()] Param ( [ValidateNotNullOrEmpty()] $Name = "Server" ) "Got $Name" } Test-NullOrEmpty</code>Note that calling the function without a named parameter just assigns the default value. In order to make it fail you have to deliberately call the function with an empty value (<em>Test-NullOrEmpty -Name</em>), which is not going to happen in the real world.<br>
I know that these are just nit-picking &ndash; and if these are examples of the nits in the Event 6 entries, then CONGRATULATIONS!! y&rsquo;all did a mighty fine job of solving the problem. Calling out these issues is just intended as a learning opportunity. There are lots and lots of correct ways to write PowerShell solutions, it&rsquo;s just that some are more efficient or take less typing than others. And learning about them is one of the important results of participating in the games.<br>
Thanks to all of you for your efforts!</p>
]]></content:encoded></item><item><title>More PowerShell v4 and DSC Details</title><link>https://powershell.org/articles/2013-06-05-more-powershell-v4-and-dsc-details/</link><guid>https://powershell.org/articles/2013-06-05-more-powershell-v4-and-dsc-details/</guid><pubDate>Wed, 05 Jun 2013 14:22:01 +0000</pubDate><description>&lt;p&gt;Here&amp;rsquo;s what I know, much &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/MDC-B400#fbid=8yK1U1eJ0GQ"&gt;based on a TechEd talk this week:&lt;/a&gt;&lt;br&gt;
We can expect PowerShell v4 to ship in the Windows Management Framework, as with previous versions. It will be preinstalled on Windows Server 2012 R2 and what they&amp;rsquo;re calling Windows 8.1; the default execution policy will be RemoteSigned, and on the server OS Remoting will be enabled by default. Microsoft&amp;rsquo;s past policy has been &amp;ldquo;current version and two back,&amp;rdquo; and if they follow that then we&amp;rsquo;ll get WMF 4.0 on Windows 7, Windows Server 2008 R2, and later. That would leave out Server 2008, if in fact they follow that same policy.&lt;br&gt;
DSC itself starts with a PowerShell script that&amp;rsquo;s mainly declarative code: Make sure x is installed, make sure y isn&amp;rsquo;t installed, etc. PowerShell compiles that into a MOF, which can be transmitted to managed endpoints (computers). The built-in mechanisms for deployment aren&amp;rsquo;t as complex or flexible as GPO or SCCM targeting, but you could use either GPO or SCCM to deploy those MOFs. That&amp;rsquo;s the &amp;ldquo;push&amp;rdquo; model - you push MOFs out to managed nodes. A &amp;ldquo;pull&amp;rdquo; model requires you to configure managed nodes to have a URI and UDDI, and they check that URI for their MOFs.&lt;br&gt;
DSC runs every 15 minutes or every 30 minutes by default, depending on whether you&amp;rsquo;re using push or pull, and you can configure that time. Right now there&amp;rsquo;s no feedback or reporting - it&amp;rsquo;s a bit like GPO, where you push out the setting and it enforces it, but that&amp;rsquo;s it.&lt;br&gt;
When DSC runs, it takes your &amp;ldquo;desired state&amp;rdquo; MOFs and starts running &amp;ldquo;DSC resources.&amp;rdquo; These resources are special modules that implement a predefined set of functions - a Get, a Test, and a Set function, to be specific. I expect MS product groups to provide these - the Exchange team will likely someday provide resources that can check/set Exchange settings, for example. You can also write your own modules. DSC calls the &amp;ldquo;test&amp;rdquo; to see if your setting is or isn&amp;rsquo;t configured at that time; it calls the &amp;ldquo;set&amp;rdquo; to add/remove/whatever the setting. So the real work is done by these special modules - and those modules can do whatever they want. Write to the registry, run commands, call .NET classes, &lt;em&gt;anything.&lt;/em&gt;&lt;br&gt;
So there&amp;rsquo;s two scripts: The &amp;ldquo;desired state&amp;rdquo; script that gets compiled to a MOF (so you shouldn&amp;rsquo;t ever have to mess directly with MOFs yourself), and the &amp;ldquo;implementing module&amp;rdquo; that has the three special functions which actually do all the work.&lt;br&gt;
In the &amp;ldquo;pull&amp;rdquo; model, those special modules can be dynamically downloaded by a managed node. &amp;ldquo;Hey, I grabbed this desired state MOF, and it seems to require 12 modules, so I&amp;rsquo;ll go to the same URI and look for those 12 modules.&amp;rdquo; You provide those modules as ZIPs, and PowerShell can grab the ZIP, expand it into the proper location, and then run the modules as needed.&lt;br&gt;
Personal analysis (meaning this is my opinion, not something MS has said): I can see this DSC feature integrating super-well with some future version of SCCM. DSC writes out some local file with configuration details, and the SCCM client grabs it and feeds it up to the database. Those MOFs could potentially be pulled from a Distribution Point by the client, handed off to PowerShell, and run on a scheduled basis. I can also see DSC starting to supplant GPO in a lot of ways. After all, &lt;em&gt;most&lt;/em&gt; GPO stuff is just reg hacks in a special section of the registry; there&amp;rsquo;s no reason DSC couldn&amp;rsquo;t do that - and it does it on a more frequent basis, making it more reliable. Right now, the targeting of a MOF isn&amp;rsquo;t as flexible as GPO targeting&amp;hellip; but that could obviously evolve. Until more of the architectural details emerge, we won&amp;rsquo;t know for sure&amp;hellip; and this is of course a v1 feature that will doubtless be expanded on and invested in as the team moves forward. We do know that the first release of DSC will not have a lot of those underlying &amp;ldquo;resource modules,&amp;rdquo; which means you won&amp;rsquo;t actually be able to configure much. This is a feature the team needs to put in place so that folks can start building those things&amp;hellip; so this is going to take a cycle or two to start being really useful.&lt;br&gt;
There&amp;rsquo;s obviously still a lot under wraps here, and this is all subject to change and tweaking as the team moves toward release. We&amp;rsquo;re told there will be some kind of public preview - but they haven&amp;rsquo;t announced a date on that. Personally, with the Build conference coming up, we can imagine that Microsoft will try and have a preview release ready for that show. There&amp;rsquo;s also no announcement of ship date. It&amp;rsquo;s still too early to tell, and I want to emphasize that the company hasn&amp;rsquo;t announced &lt;em&gt;any&lt;/em&gt; dates. We can but try to make educated guesses at this stage.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Here&rsquo;s what I know, much<a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/MDC-B400#fbid=8yK1U1eJ0GQ">based on a TechEd talk this week:</a><br>
We can expect PowerShell v4 to ship in the Windows Management Framework, as with previous versions. It will be preinstalled on Windows Server 2012 R2 and what they&rsquo;re calling Windows 8.1; the default execution policy will be RemoteSigned, and on the server OS Remoting will be enabled by default. Microsoft&rsquo;s past policy has been &ldquo;current version and two back,&rdquo; and if they follow that then we&rsquo;ll get WMF 4.0 on Windows 7, Windows Server 2008 R2, and later. That would leave out Server 2008, if in fact they follow that same policy.<br>
DSC itself starts with a PowerShell script that&rsquo;s mainly declarative code: Make sure x is installed, make sure y isn&rsquo;t installed, etc. PowerShell compiles that into a MOF, which can be transmitted to managed endpoints (computers). The built-in mechanisms for deployment aren&rsquo;t as complex or flexible as GPO or SCCM targeting, but you could use either GPO or SCCM to deploy those MOFs. That&rsquo;s the &ldquo;push&rdquo; model - you push MOFs out to managed nodes. A &ldquo;pull&rdquo; model requires you to configure managed nodes to have a URI and UDDI, and they check that URI for their MOFs.<br>
DSC runs every 15 minutes or every 30 minutes by default, depending on whether you&rsquo;re using push or pull, and you can configure that time. Right now there&rsquo;s no feedback or reporting - it&rsquo;s a bit like GPO, where you push out the setting and it enforces it, but that&rsquo;s it.<br>
When DSC runs, it takes your &ldquo;desired state&rdquo; MOFs and starts running &ldquo;DSC resources.&rdquo; These resources are special modules that implement a predefined set of functions - a Get, a Test, and a Set function, to be specific. I expect MS product groups to provide these - the Exchange team will likely someday provide resources that can check/set Exchange settings, for example. You can also write your own modules. DSC calls the &ldquo;test&rdquo; to see if your setting is or isn&rsquo;t configured at that time; it calls the &ldquo;set&rdquo; to add/remove/whatever the setting. So the real work is done by these special modules - and those modules can do whatever they want. Write to the registry, run commands, call .NET classes,<em>anything.</em><br>
So there&rsquo;s two scripts: The &ldquo;desired state&rdquo; script that gets compiled to a MOF (so you shouldn&rsquo;t ever have to mess directly with MOFs yourself), and the &ldquo;implementing module&rdquo; that has the three special functions which actually do all the work.<br>
In the &ldquo;pull&rdquo; model, those special modules can be dynamically downloaded by a managed node. &ldquo;Hey, I grabbed this desired state MOF, and it seems to require 12 modules, so I&rsquo;ll go to the same URI and look for those 12 modules.&rdquo; You provide those modules as ZIPs, and PowerShell can grab the ZIP, expand it into the proper location, and then run the modules as needed.<br>
Personal analysis (meaning this is my opinion, not something MS has said): I can see this DSC feature integrating super-well with some future version of SCCM. DSC writes out some local file with configuration details, and the SCCM client grabs it and feeds it up to the database. Those MOFs could potentially be pulled from a Distribution Point by the client, handed off to PowerShell, and run on a scheduled basis. I can also see DSC starting to supplant GPO in a lot of ways. After all,<em>most</em> GPO stuff is just reg hacks in a special section of the registry; there&rsquo;s no reason DSC couldn&rsquo;t do that - and it does it on a more frequent basis, making it more reliable. Right now, the targeting of a MOF isn&rsquo;t as flexible as GPO targeting&hellip; but that could obviously evolve. Until more of the architectural details emerge, we won&rsquo;t know for sure&hellip; and this is of course a v1 feature that will doubtless be expanded on and invested in as the team moves forward. We do know that the first release of DSC will not have a lot of those underlying &ldquo;resource modules,&rdquo; which means you won&rsquo;t actually be able to configure much. This is a feature the team needs to put in place so that folks can start building those things&hellip; so this is going to take a cycle or two to start being really useful.<br>
There&rsquo;s obviously still a lot under wraps here, and this is all subject to change and tweaking as the team moves toward release. We&rsquo;re told there will be some kind of public preview - but they haven&rsquo;t announced a date on that. Personally, with the Build conference coming up, we can imagine that Microsoft will try and have a preview release ready for that show. There&rsquo;s also no announcement of ship date. It&rsquo;s still too early to tell, and I want to emphasize that the company hasn&rsquo;t announced<em>any</em> dates. We can but try to make educated guesses at this stage.</p>
]]></content:encoded></item><item><title>Scripting Games Event 5 Winners</title><link>https://powershell.org/articles/2013-06-04-scripting-games-event-5-winners/</link><guid>https://powershell.org/articles/2013-06-04-scripting-games-event-5-winners/</guid><pubDate>Tue, 04 Jun 2013 14:08:44 +0000</pubDate><description>&lt;p&gt;We&amp;rsquo;re pleased to announce the winners for Event 5 of The Scripting Games 2013!&lt;br&gt;
Remember that Event 6 is now open for community voting, and that Event 6 opens up near the end of this week. That&amp;rsquo;ll be your last chance to contribute, and shortly after TechEd we&amp;rsquo;ll announce the overall winners. Good luck!&lt;br&gt;
Winners: You can log into &lt;a href="http://scriptinggames.org/"&gt;The Scripting Games Web site&lt;/a&gt; and go to your Profile page to see your prize. You will be given a prize redemption code and either a URL where you can redeem it, or an e-mail address of the prize provider (they will need the redemption code). All prizes must be claimed by the end of July 2013. I will list winners by username; if you used your e-mail address as your username, then a portion of that will be truncated for your privacy. Anyone can log in and check their Profile page to see if they&amp;rsquo;ve won a prize.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We&rsquo;re pleased to announce the winners for Event 5 of The Scripting Games 2013!<br>
Remember that Event 6 is now open for community voting, and that Event 6 opens up near the end of this week. That&rsquo;ll be your last chance to contribute, and shortly after TechEd we&rsquo;ll announce the overall winners. Good luck!<br>
Winners: You can log into<a href="http://scriptinggames.org/">The Scripting Games Web site</a> and go to your Profile page to see your prize. You will be given a prize redemption code and either a URL where you can redeem it, or an e-mail address of the prize provider (they will need the redemption code). All prizes must be claimed by the end of July 2013. I will list winners by username; if you used your e-mail address as your username, then a portion of that will be truncated for your privacy. Anyone can log in and check their Profile page to see if they&rsquo;ve won a prize.</p><ul><li><p>Event 5 Beginner First Place: KmTatar (free ebook from Manning<strong>and a copy of SAPIEN PowerShell Studio!</strong>)</p></li><li><p>Event 5 Beginner Second Place: skyrabin_yuri@__.ru (6 months video training from Interface)</p></li><li><p>Event 5 Beginner Third Place: PShellMan (1 year of Phoneominal from Start-Automating)</p></li><li><p>Event 5 Advanced First Place: mjolinor (free ebook from Manning<strong>and a copy of SAPIEN PowerShell Studio!</strong>)</p></li><li><p>Event 5 Advanced Second Place: mikefrobbins (6 months video training from Interface)</p></li><li><p>Event 5 Advanced Third Place: dchristian3188@__.com (1 year of Phonenominal from Start-Automating)</p></li><li><p>Event 5 Beginner Top CrowdScore: KmTatar (free ebook from Manning)</p></li><li><p>Event 5 Advanced Top CrowdScore:<em>Emin</em> (free ebook from Manning)</p></li></ul><p>These will be listed on our<a href="http://scriptinggames.org/winners.php">consolidated list of winners</a>, which includes links to the winning entries.<br>
Our CrowdScore winners get a selection of free ebooks from Manning, 1 month of video training from Interface, and $50 gift cards from SAPIEN; 1 prize per winner. Check your profile to see if you&rsquo;ve won!<br>
Congratulations to all of our winners! Note that our top three prizes in each category were awarded by our Mighty Panel of Celebrity Judges. Each judge nominated a first, second, and third place winner from the entries that our expert commentators identified as &ldquo;best.&rdquo; Those nominations were compiled, and in the event of a tie the earliest entry was deemed winner.</p>
]]></content:encoded></item><item><title>Microsoft announces PowerShell v4, DSC</title><link>https://powershell.org/articles/2013-06-04-microsoft-announces-powershell-v4-dsc/</link><guid>https://powershell.org/articles/2013-06-04-microsoft-announces-powershell-v4-dsc/</guid><pubDate>Tue, 04 Jun 2013 14:00:15 +0000</pubDate><description>&lt;p&gt;Yesterday at TechEd North America, Jeffrey Snover and Kenneth Hansen began describing features to be delivered with PowerShell v4 in Windows Server 2012 R2 (the company has not yet announced availability dates for either).&lt;br&gt;
In particular, a new feature called Desired State Configuration promises to become the foundation for some pretty serious expansion. Essentially, DSC lets administrators write a declarative &amp;ldquo;script&amp;rdquo; that describes what a computer should look like. PowerShell takes that, matches the declarative components with underlying modules, and ensures that the computer does, in fact, look like that. Nearly anything can be checked and controlled: roles, features, files, registry keys - anything, in fact, that a PowerShell module can do.&lt;br&gt;
The architecture includes the notion of centrally stored declarative scripts, and the ability to dynamically deploy supporting modules on an as-needed basis to computers that are checking themselves. A System Center Virtual Machine Manager demonstration utilized the feature to dynamically spin up brand-new VM instances and have them immediately reconfigure to their desired state.&lt;br&gt;
At first glance, it&amp;rsquo;s easy to see &amp;ldquo;more Microsoft stuff&amp;rdquo; in this feature. After all, the company has previous given us Dynamic Systems Management (DSM), various universal &amp;ldquo;configuration languages,&amp;rdquo; and even System Center Configuration Manager&amp;rsquo;s somewhat primitive configuration auditing feature. But keep in mind that DSC will &lt;strong&gt;be a core part of the OS.&lt;/strong&gt; That means product teams and ISVs can rely on it being there, with no other dependencies to worry about. DSC is also built around DMTF standards - like the MOF format - making it natively suitable for cross-platform management. A demo from Opscode using their Chef product showed clever use of the new DSC feature.&lt;br&gt;
Hansen also mentioned that PowerShell modules will be deployable through DSC as ZIP files, helping make them more self-contained (not entirely unlike PECL packages in the Unix world).&lt;br&gt;
There has been no announcement as yet on how far back PowerShell v4 will be made available, nor whether or not DSC is a PowerShell feature or a Windows Server 2012 R2 feature. If it is indeed a PowerShell feature (which I suspect it is), then it&amp;rsquo;ll be available on any system with v4 installed. That will hopefully include at least Windows 7, Windows Server 2008 R2, and later.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Yesterday at TechEd North America, Jeffrey Snover and Kenneth Hansen began describing features to be delivered with PowerShell v4 in Windows Server 2012 R2 (the company has not yet announced availability dates for either).<br>
In particular, a new feature called Desired State Configuration promises to become the foundation for some pretty serious expansion. Essentially, DSC lets administrators write a declarative &ldquo;script&rdquo; that describes what a computer should look like. PowerShell takes that, matches the declarative components with underlying modules, and ensures that the computer does, in fact, look like that. Nearly anything can be checked and controlled: roles, features, files, registry keys - anything, in fact, that a PowerShell module can do.<br>
The architecture includes the notion of centrally stored declarative scripts, and the ability to dynamically deploy supporting modules on an as-needed basis to computers that are checking themselves. A System Center Virtual Machine Manager demonstration utilized the feature to dynamically spin up brand-new VM instances and have them immediately reconfigure to their desired state.<br>
At first glance, it&rsquo;s easy to see &ldquo;more Microsoft stuff&rdquo; in this feature. After all, the company has previous given us Dynamic Systems Management (DSM), various universal &ldquo;configuration languages,&rdquo; and even System Center Configuration Manager&rsquo;s somewhat primitive configuration auditing feature. But keep in mind that DSC will<strong>be a core part of the OS.</strong> That means product teams and ISVs can rely on it being there, with no other dependencies to worry about. DSC is also built around DMTF standards - like the MOF format - making it natively suitable for cross-platform management. A demo from Opscode using their Chef product showed clever use of the new DSC feature.<br>
Hansen also mentioned that PowerShell modules will be deployable through DSC as ZIP files, helping make them more self-contained (not entirely unlike PECL packages in the Unix world).<br>
There has been no announcement as yet on how far back PowerShell v4 will be made available, nor whether or not DSC is a PowerShell feature or a Windows Server 2012 R2 feature. If it is indeed a PowerShell feature (which I suspect it is), then it&rsquo;ll be available on any system with v4 installed. That will hopefully include at least Windows 7, Windows Server 2008 R2, and later.</p>
]]></content:encoded></item><item><title>Scripting Games 2013: Event 5 Notes</title><link>https://powershell.org/articles/2013-06-03-scripting-games-2013-event-5-notes/</link><guid>https://powershell.org/articles/2013-06-03-scripting-games-2013-event-5-notes/</guid><pubDate>Tue, 04 Jun 2013 03:36:46 +0000</pubDate><description>&lt;p&gt;With week 5 in the books, I can see that everyone just continues to grow and show some great submissions. Of course, nothing is perfect and can always show areas of improvement, but trust me, you are all doing an excellent job!&lt;br&gt;
I was hoping to have this article completed prior to now, but between a flight to Tech Ed and forgetting my power cord for the laptop, I am just now getting this accomplished. Better late than never :).&lt;br&gt;
With that, head over to my blog to check out my notes on Event 5 &lt;a href="http://learn-powershell.net/2013/06/03/scripting-games-2013-event-5-notes/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>With week 5 in the books, I can see that everyone just continues to grow and show some great submissions. Of course, nothing is perfect and can always show areas of improvement, but trust me, you are all doing an excellent job!<br>
I was hoping to have this article completed prior to now, but between a flight to Tech Ed and forgetting my power cord for the laptop, I am just now getting this accomplished. Better late than never :).<br>
With that, head over to my blog to check out my notes on Event 5<a href="http://learn-powershell.net/2013/06/03/scripting-games-2013-event-5-notes/">here</a>.</p>
]]></content:encoded></item><item><title>As The Scripting Games Wrap Up…</title><link>https://powershell.org/articles/2013-06-01-as-the-scripting-games-wrap-up/</link><guid>https://powershell.org/articles/2013-06-01-as-the-scripting-games-wrap-up/</guid><pubDate>Sat, 01 Jun 2013 18:39:15 +0000</pubDate><description>&lt;p&gt;We&amp;rsquo;ve still got, oh, about 48 hours or so for Event 6 submissions, and then of course voting and judging. &lt;strong&gt;But&lt;/strong&gt; I wanted to take a second and let you know what this year&amp;rsquo;s Games looked like:&lt;br&gt;
We&amp;rsquo;ve logged over 1,100 entries. Almost 13,000 votes. More than 6,700 comments. That&amp;rsquo;s a lot - and it&amp;rsquo;ll all be &lt;a href="http://scriptinggames.org/entries"&gt;archived&lt;/a&gt; once the final votes are tallied and prizes awarded. There will be ZIP files of entries for each track and event, and I encourage you to download them over the Summer - we won&amp;rsquo;t necessarily archive them permanently.&lt;br&gt;
We&amp;rsquo;ve seen an enormous range of techniques and approaches, and generated hundreds of learning notes across more than a dozen active expert commentators. We&amp;rsquo;ve awarded - with some yet to be handed out - thousands of dollars worth of prizes.&lt;br&gt;
This is also a good time to start collecting general feedback on the Games, so feel free to drop into our &lt;a href="https://powershell.org/forums/topic/post-mortem-likedislike/"&gt;official post-mortem thread and offer your feedback&lt;/a&gt;. &lt;strong&gt;Read the introductory post in that thread&lt;/strong&gt; before you post, please. I&amp;rsquo;m asking for a specific feedback format at this time, although you&amp;rsquo;re always welcome to open your own thread if you have something specific or off-format you want to offer. I ask only that you keep things &lt;em&gt;constructive&lt;/em&gt; and &lt;em&gt;professional.&lt;/em&gt;&lt;br&gt;
Thanks to everyone who participated in the Games. We&amp;rsquo;re formulating our next event, so stay tuned.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We&rsquo;ve still got, oh, about 48 hours or so for Event 6 submissions, and then of course voting and judging.<strong>But</strong> I wanted to take a second and let you know what this year&rsquo;s Games looked like:<br>
We&rsquo;ve logged over 1,100 entries. Almost 13,000 votes. More than 6,700 comments. That&rsquo;s a lot - and it&rsquo;ll all be<a href="http://scriptinggames.org/entries">archived</a> once the final votes are tallied and prizes awarded. There will be ZIP files of entries for each track and event, and I encourage you to download them over the Summer - we won&rsquo;t necessarily archive them permanently.<br>
We&rsquo;ve seen an enormous range of techniques and approaches, and generated hundreds of learning notes across more than a dozen active expert commentators. We&rsquo;ve awarded - with some yet to be handed out - thousands of dollars worth of prizes.<br>
This is also a good time to start collecting general feedback on the Games, so feel free to drop into our<a href="https://powershell.org/forums/topic/post-mortem-likedislike/">official post-mortem thread and offer your feedback</a>.<strong>Read the introductory post in that thread</strong> before you post, please. I&rsquo;m asking for a specific feedback format at this time, although you&rsquo;re always welcome to open your own thread if you have something specific or off-format you want to offer. I ask only that you keep things<em>constructive</em> and<em>professional.</em><br>
Thanks to everyone who participated in the Games. We&rsquo;re formulating our next event, so stay tuned.</p>
]]></content:encoded></item></channel></rss>