&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 2012 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2012/06/</link><description>Recent content in Articles from June 2012 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2012/06/index.xml" rel="self" type="application/rss+xml"/><item><title>Upcoming PowerShell Books and How to Get Them</title><link>https://powershell.org/articles/2012-06-26-upcoming-powershell-books-and-how-to-get-them/</link><guid>https://powershell.org/articles/2012-06-26-upcoming-powershell-books-and-how-to-get-them/</guid><pubDate>Tue, 26 Jun 2012 12:29:00 +0000</pubDate><description>&lt;p&gt;My co-authors and I have no less than three new PowerShell books coming out&amp;hellip; and a couple of different way to get them.&lt;/p&gt;
&lt;h2 id="powershell-in-depth" class="ps-heading"&gt;PowerShell In Depth&lt;a class="ps-heading-anchor" href="#powershell-in-depth" 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;/h2&gt;
&lt;p&gt;This is meant to be a comprehensive, administrator-focused reference on all things PowerShell v3. &lt;a href="http://bit.ly/Psh3InDepth"&gt;It&amp;rsquo;s available directly from the publisher as part of their Manning Early Access Program (MEAP)&lt;/a&gt;. Under that program, you get all available chapters now in PDF format. As new chapters are released, you get those too. When the book is done, you get your choice of ebook format and, optionally, the printed book.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>My co-authors and I have no less than three new PowerShell books coming out&hellip; and a couple of different way to get them.</p><h2 id="powershell-in-depth" class="ps-heading">PowerShell In Depth<a class="ps-heading-anchor" href="#powershell-in-depth" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>This is meant to be a comprehensive, administrator-focused reference on all things PowerShell v3.<a href="http://bit.ly/Psh3InDepth">It&rsquo;s available directly from the publisher as part of their Manning Early Access Program (MEAP)</a>. Under that program, you get all available chapters now in PDF format. As new chapters are released, you get those too. When the book is done, you get your choice of ebook format and, optionally, the printed book.</p><p>The three authors are also<a href="http://store.concentratedtech.com/indepth.php">offering a direct pre-order</a>. With this offer, which goes on sale July 1st, you get the print book and ebook in your choice of formats. The book will be autographed by the three of us, and we&rsquo;re including an exclusive video disc full of PowerShell demos, tips, and tricks. Only 200 units will be offered through this pre-order, and each will be hand-numbered. So whoever buys the first order will get the lowest-numbered book! You don&rsquo;t get &ldquo;early access,&rdquo; though - you&rsquo;ll have to wait until the book is done and printed.</p><h2 id="the-month-of-lunches-books" class="ps-heading">The &ldquo;Month of Lunches&rdquo; Books<a class="ps-heading-anchor" href="#the-month-of-lunches-books" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>There are two of these:<em>Learn Windows PowerShell 3 in a Month of Lunches</em> and<em>Learn PowerShell Toolmaking in a Month of Lunches.</em> Again, you can get &ldquo;early access&rdquo; directly from the publisher through the MEAP program, but you have to buy that separately for each title.<a href="http://bit.ly/PSHv3Lunch">The first title is available in MEAP right now</a>. Once the book is published, you get the finished version in ebook and, if you chose, in print.</p><p>Jeff and I are also<a href="http://store.concentratedtech.com/lunchesbundle.php">offering a bundle pre-order</a> that includes both books, a resources disc with video introductions from us, a logo lunch bag, and a lunch item (for US orders only). This is a pre-order; you&rsquo;ll get both the physical books and ebook versions, but you have to wait until they&rsquo;re published - there&rsquo;s no early access. Both books will be autographed, and only 100 hand-numbered copies will be offered. This goes on sale August 1st, and the first purchasers get the lowest-numbered copies.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17258" alt=""/>
]]></content:encoded></item><item><title>[UPDATED] Snover School: FANCY Wildcards</title><link>https://powershell.org/articles/2012-06-19-updated-snover-school-fancy-wildcards/</link><guid>https://powershell.org/articles/2012-06-19-updated-snover-school-fancy-wildcards/</guid><pubDate>Tue, 19 Jun 2012 20:13:00 +0000</pubDate><description>&lt;p&gt;So, I&amp;rsquo;d previously posted about a cool trick Jeffrey Snover demonstrated at TechEd:&lt;/p&gt;
&lt;p&gt;Get-Service -Name [a-b]*&lt;/p&gt;
&lt;p&gt;This will return a list of all services whose names start with A or B. Now for me, this was a cool trick: I didn&amp;rsquo;t realize that wildcards could be more than * or ?! And Snover described these as &amp;ldquo;rich regular expressions.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Well, not exactly. We&amp;rsquo;ve corresponded, and what&amp;rsquo;s actually happening is that PowerShell&amp;rsquo;s wildcard support is essentially a dumbed-down set of the regex syntax. Specifically, read the about_wildcards help topic and you&amp;rsquo;ll learn that you can use ranges like [a-b], the * and ? characters, or a set of characters like [abeft] - but not much else. So it looks like a regex at first blush, but isn&amp;rsquo;t, really.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>So, I&rsquo;d previously posted about a cool trick Jeffrey Snover demonstrated at TechEd:</p><p>Get-Service -Name [a-b]*</p><p>This will return a list of all services whose names start with A or B. Now for me, this was a cool trick: I didn&rsquo;t realize that wildcards could be more than * or ?! And Snover described these as &ldquo;rich regular expressions.&rdquo;</p><p>Well, not exactly. We&rsquo;ve corresponded, and what&rsquo;s actually happening is that PowerShell&rsquo;s wildcard support is essentially a dumbed-down set of the regex syntax. Specifically, read the about_wildcards help topic and you&rsquo;ll learn that you can use ranges like [a-b], the * and ? characters, or a set of characters like [abeft] - but not much else. So it looks like a regex at first blush, but isn&rsquo;t, really.</p><p>This is a nifty trick, though! Keep in mind that it&rsquo;s only supported on parameters that have been explicitly designed, by their developers, to support wildcards. That&rsquo;s usually documented in the cmdlet&rsquo;s full help (e.g., Help Get-Service -full), although in some cases you&rsquo;ll need to use a bit of trial and error to see what works and what doesn&rsquo;t.</p><p>Another aspect of this is the -like operator. You&rsquo;re probably familiar with something like this:</p><pre><code>get-service | where { $_.name -like 'b*' }</code></pre><p>But the operator also supports these richer, semi-regex wildcards:</p><p>get-service | where { $_.name -like &lsquo;[abd]*&rsquo; }</p><p>Give it a shot! It was very cool to be doing a session at TechEd<em>with Jeffrey Snover,</em> especially when he kept whipping out these little gems that I&rsquo;d never even thought to try. I&rsquo;ll share some more of them in the upcoming weeks!</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17124" alt=""/>
]]></content:encoded></item><item><title>TechEd PowerShell Sessions</title><link>https://powershell.org/articles/2012-06-19-teched-powershell-sessions/</link><guid>https://powershell.org/articles/2012-06-19-teched-powershell-sessions/</guid><pubDate>Tue, 19 Jun 2012 14:21:00 +0000</pubDate><description>&lt;p&gt;Many sessions are now available on Channel 9 as recordings&amp;hellip;&lt;/p&gt;
&lt;p&gt;First, mine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV321-R"&gt;Crash Course w/Jeffrey Snover&lt;/a&gt; (one of the conference&amp;rsquo;s top-rated overall sessions)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV321"&gt;Crash Course repeat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL404"&gt;Building Reusable PowerShell Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL403"&gt;Remoting in Depth&lt;/a&gt; (another top-rated session!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But wait, there&amp;rsquo;s more!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-
[App-V 5 and PowerShell](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL201)
-
[Win2012 Multi-Server Management](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV306)
-
[Advanced Automation in PSH 3](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV414)
I'll caution you that the videos haven't yet been posted on all of these, so poke around until you find 'em all. With hundreds of sessions to sort through, I imagine they're prioritizing the production process.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="http://powershell.com/cs/aggbug.aspx?PostID=17125" alt=""&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Many sessions are now available on Channel 9 as recordings&hellip;</p><p>First, mine:</p><ul><li><a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV321-R">Crash Course w/Jeffrey Snover</a> (one of the conference&rsquo;s top-rated overall sessions)</li><li><a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV321">Crash Course repeat</a></li><li><a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL404">Building Reusable PowerShell Tools</a></li><li><a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL403">Remoting in Depth</a> (another top-rated session!)</li></ul><p>But wait, there&rsquo;s more!</p><pre><code>-
[App-V 5 and PowerShell](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WCL201)
-
[Win2012 Multi-Server Management](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV306)
-
[Advanced Automation in PSH 3](http://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/WSV414)
I'll caution you that the videos haven't yet been posted on all of these, so poke around until you find 'em all. With hundreds of sessions to sort through, I imagine they're prioritizing the production process.</code></pre><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17125" alt=""/>
]]></content:encoded></item><item><title>How To Use Write-Host Without Endangering Puppies (or, A Manifesto for Modularizing PowerShell Scripts)</title><link>https://powershell.org/articles/2012-06-14-how-to-use-write-host-without-endangering-puppies-or-a-manifesto-for-modularizing-powershell-scripts/</link><guid>https://powershell.org/articles/2012-06-14-how-to-use-write-host-without-endangering-puppies-or-a-manifesto-for-modularizing-powershell-scripts/</guid><pubDate>Fri, 15 Jun 2012 01:04:00 +0000</pubDate><description>&lt;p&gt;At this week&amp;rsquo;s TechEd, I was speaking with Jeffrey Snover in the hallway on Wednesday when he remarked, &amp;ldquo;you know, Write-Host isn&amp;rsquo;t all bad.&amp;rdquo; After he got someone to come around with smelling salts to revive me, he elaborated, &amp;ldquo;so long as your verb is Show.&amp;rdquo; I started to object - and then a subtle, yet brilliant light came upon me.&lt;/p&gt;
&lt;p&gt;He&amp;rsquo;s write. Heh.&lt;/p&gt;
&lt;p&gt;But, seriously, if you do three simple things, you can&amp;rsquo;t go wrong when you write a PowerShell script or function - and this goes further than just Write-Host. Ask yourself:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>At this week&rsquo;s TechEd, I was speaking with Jeffrey Snover in the hallway on Wednesday when he remarked, &ldquo;you know, Write-Host isn&rsquo;t all bad.&rdquo; After he got someone to come around with smelling salts to revive me, he elaborated, &ldquo;so long as your verb is Show.&rdquo; I started to object - and then a subtle, yet brilliant light came upon me.</p><p>He&rsquo;s write. Heh.</p><p>But, seriously, if you do three simple things, you can&rsquo;t go wrong when you write a PowerShell script or function - and this goes further than just Write-Host. Ask yourself:</p><ul><li>Am I naming my script/function according to PowerShell verb-noun naming conventions?</li><li>Am I only using allowed verbs (run Get-Verb for a list)?</li><li>Am I<em>respecting the use of the verb I chose?</em></li></ul><p>That last one&rsquo;s the doozy. But think about it: If your verb is Get, then your function/script *should just get stuff. *It shouldn&rsquo;t manipulate it. Shouldn&rsquo;t format it. Shouldn&rsquo;t (generally) change bytes into megabytes, or anything else. Just get the data, and output a single kind of object to the pipeline, using Write-Output. That&rsquo;s it.</p><p>Ok, if you want some step-by-step progress information as it runs, use Write-Verbose. That&rsquo;s cool. Or use Write-Debug for trace code, if you need.</p><p>The Get verb implies that you may want to do something else with the data. Convert it to HTML. Export it to CSV. Whatever. And so you just output raw objects. Need to put that data into a database? Fine, create an &ldquo;Export-MyStuffToDatabase&rdquo; function that does that - the Export verb makes it clear that the data is &ldquo;leaving the shell&rdquo; and going elsewhere.</p><p>Want to display the data on-screen? *Write a &ldquo;Show-Whatever&rdquo; function. *The Show verb<em>implies</em> on-screendisplay. You&rsquo;d never think to run something like &ldquo;Get-Service | Show-ServiceData | Export-CSV.&rdquo; The Show verb tells you that &ldquo;this is going to the screen, and by God it isn&rsquo;t going anywhere else.&rdquo; So if you&rsquo;re using the Show verb&hellip; go ahead and use Write-Host. *That&rsquo;s what it&rsquo;s for. *No puppies will be harmed.</p><p>This gets back to my bigger design philosophy of *make each function/script do only one thing. *Each should automate some<em>task</em>, and should act appropriately for the verb you&rsquo;ve chosen. If you have a function<em>Get</em>ting something as well as<em>Format</em>ting the output&hellip; that&rsquo;s two things. You&rsquo;ll also write larger scripts that automate *processes, *and those should generally just be calling sequences of your task-automating commands. A task, then, is something you might use in several different scenarios; a process is one such scenario that employs several tasks.</p><p>Provisioning a new user? You&rsquo;ve got tasks like New-ADUser, Add-ADGroupMember, New-UserHomeShare, New-HREmployeeRecord, and so on. But those tasks (some of which you&rsquo;d write yourself, obviously) might be used in other circumstances: New-ADUser, for example, might also be used when you need to set up a new SQL Server and create an AD service account, right? With all the tasks written, you&rsquo;d write a larger &ldquo;process&rdquo; script, perhaps called New-CompanyUser.ps1, which combined those various tasks into the sequence needed to provision a user - while leaving the tasks free to be used in other processes as well.</p><p>Stick with the verbs, my friend. They won&rsquo;t lead you astray.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17079" alt=""/>
]]></content:encoded></item><item><title>Sample Code from my TechEd "Building Reusable PowerShell Tools" Session</title><link>https://powershell.org/articles/2012-06-14-sample-code-from-my-teched-building-reusable-powershell-tools-session/</link><guid>https://powershell.org/articles/2012-06-14-sample-code-from-my-teched-building-reusable-powershell-tools-session/</guid><pubDate>Thu, 14 Jun 2012 08:48:00 +0000</pubDate><description>&lt;p&gt;Hey, all! I was looking over the script I&amp;rsquo;d saved from this TechEd session, and realized I could offer something better.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://morelunches.com/toolmaking.html"&gt;Go to the Web page for my upcoming &amp;ldquo;Toolmaking&amp;rdquo; book&lt;/a&gt;. In the Downloads section, grab the book&amp;rsquo;s code samples. You&amp;rsquo;ll actually get a &lt;em&gt;better&lt;/em&gt; example than I showed in class, and it goes &lt;em&gt;further.&lt;/em&gt; The listings for Chapter 13 pretty much put you where that session wraps up.&lt;/p&gt;
&lt;p&gt;Now, these haven&amp;rsquo;t been totally tech-edited yet, so if you find any bugs - please let me know! The book itself should go into &amp;ldquo;Early Access Preview&amp;rdquo; in a couple of months, I&amp;rsquo;m hoping. Stay tuned!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hey, all! I was looking over the script I&rsquo;d saved from this TechEd session, and realized I could offer something better.</p><p><a href="http://morelunches.com/toolmaking.html">Go to the Web page for my upcoming &ldquo;Toolmaking&rdquo; book</a>. In the Downloads section, grab the book&rsquo;s code samples. You&rsquo;ll actually get a<em>better</em> example than I showed in class, and it goes<em>further.</em> The listings for Chapter 13 pretty much put you where that session wraps up.</p><p>Now, these haven&rsquo;t been totally tech-edited yet, so if you find any bugs - please let me know! The book itself should go into &ldquo;Early Access Preview&rdquo; in a couple of months, I&rsquo;m hoping. Stay tuned!</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17054" alt=""/>
]]></content:encoded></item><item><title>Using PowerShell to Scrape the Web</title><link>https://powershell.org/articles/2012-06-07-using-powershell-to-scrape-the-web/</link><guid>https://powershell.org/articles/2012-06-07-using-powershell-to-scrape-the-web/</guid><pubDate>Thu, 07 Jun 2012 14:22:00 +0000</pubDate><description>&lt;p&gt;One of the things administrators often look to do with PowerShell is &amp;ldquo;scrape&amp;rdquo; Web pages. In the past, you had a couple of options: Use Internet Explorer&amp;rsquo;s COM object (which can get a bit fugly), or use the .NET Framework&amp;rsquo;s WebRequest stuff (slightly less fugly, but still a bit).&lt;/p&gt;
&lt;p&gt;PowerShell v3 to the rescue. Microsoft has wrapped much of the fugly in some cool and simple cmdlets, and given PowerShell a native ability to understand an HTML document&amp;rsquo;s object model (DOM). Note that the ability to parse the HTML document tree is dependent upon IE being installed, which means it won&amp;rsquo;t work on a Server Core system (since IE doesn&amp;rsquo;t exist there). You&amp;rsquo;ll still get some HTML parsing, but it won&amp;rsquo;t be the full, broken-down tree.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>One of the things administrators often look to do with PowerShell is &ldquo;scrape&rdquo; Web pages. In the past, you had a couple of options: Use Internet Explorer&rsquo;s COM object (which can get a bit fugly), or use the .NET Framework&rsquo;s WebRequest stuff (slightly less fugly, but still a bit).</p><p>PowerShell v3 to the rescue. Microsoft has wrapped much of the fugly in some cool and simple cmdlets, and given PowerShell a native ability to understand an HTML document&rsquo;s object model (DOM). Note that the ability to parse the HTML document tree is dependent upon IE being installed, which means it won&rsquo;t work on a Server Core system (since IE doesn&rsquo;t exist there). You&rsquo;ll still get some HTML parsing, but it won&rsquo;t be the full, broken-down tree.</p><p>Start by running Invoke-WebRequest, passing it a -URI with the URL of the Web page you want to download. It&rsquo;ll handle the full task of connecting to the Web server, getting the text of the HTML page, and parsing it. Other parameters let you specify a -Credential, modify the HTTP -Headers, redirect the text to an -OutFile so that you have a local copy, specify -Proxy settings, and more. You&rsquo;ll specify -UseBasicParsing when IE isn&rsquo;t available.</p><p>What you get back (store it in a variable to work with it) is an HTML response. it&rsquo;ll have a StatusCode property, a Content property, and more. What&rsquo;s useful are some of the parsed properties:</p><ul><li>Images - all the tags</li><li>InputFields - all form fields</li><li>Links - all tags</li><li>Forms - all tags</li></ul><p>These are collections of objects, each one giving you access to the most commonly-needed data from he HTML. You can easily grab all of the images, links, and so forth, and process them however you like. For example, assume that you put your HTML results in $html. Run $html.links[0].href to get the destination of the first hyperlink in the page. Cool!</p><p>Here&rsquo;s a quick example that grabs the first page of search result links from a Bing search for &ldquo;cmdlet:&rdquo;</p><p>0
1
68
392
Concentrated Technology
3
1
459
14.0
Normal
0
false
false
false
EN-US
JA
X-NONE</p><pre><code>PS C:\&gt; Invoke-WebRequest -uri</code></pre><p>&lsquo;<a href="http://www.bing.com/search?q=cmdlet&amp;form=AP">http://www.bing.com/search?q=cmdlet&amp;form=AP</a></p><pre><code>MCS1' | select -expand links | select -expand href -first 10
/?scope=web&amp;FORM=Z9FD
/images/search?q=cmdlet&amp;FORM=BIFD
/videos/search?q=cmdlet&amp;FORM=BVFD
/shopping/search?q=cmdlet&amp;mkt=en-US&amp;FORM=BPFD
/news/search?q=cmdlet&amp;FORM=BNFD
/maps/default.aspx?q=cmdlet&amp;mkt=en-US&amp;FORM=BYFD
/explore?q=cmdlet&amp;FORM=BXFD
http://www.msn.com/
http://mail.live.com/</code></pre><p>Now that&rsquo;s just nifty. And it works fine against local HTML pages as well as ones served up from a Web server. There&rsquo;s obviously a LOT more you can do, but this should give you a great starting point!</p><p><em>This article was inspired by the chapter &ldquo;Working with HTML and XML Data&rdquo; in the upcoming<a href="http://bit.ly/Psh3InDepth">PowerShell in Depth</a>, co-authored with Jeffery Hicks and Richard Siddaway. That book can be purchased from the publisher, and is<a href="http://store.concentratedtech.com/indepth.php">available directly from the authors</a> in a signed, limited edition package.</em></p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=16940" alt=""/>
]]></content:encoded></item><item><title>[UPDATED] Tweaks to PowerShel v3 Updatable Help</title><link>https://powershell.org/articles/2012-06-04-updated-tweaks-to-powershel-v3-updatable-help/</link><guid>https://powershell.org/articles/2012-06-04-updated-tweaks-to-powershel-v3-updatable-help/</guid><pubDate>Mon, 04 Jun 2012 23:58:00 +0000</pubDate><description>&lt;p&gt;&lt;a href="http://powershell.com/cs/blogs/donjones/archive/2012/03/02/wait-powershell-v3-doesn-t-come-with-help.aspx"&gt;I&amp;rsquo;ve written before about how PowerShell v3 won&amp;rsquo;t come with help&lt;/a&gt; &amp;ldquo;in the box,&amp;rdquo; but will instead require you to download help from Microsoft&amp;rsquo;s servers.&lt;/p&gt;
&lt;p&gt;ASIDE: Technically, &lt;em&gt;any&lt;/em&gt; module author can provide updatable help on their own Web server; you just have to tag your module manifest with the appropriate information so that PowerShell can locate your online content and download it.&lt;/p&gt;
&lt;p&gt;Now that Windows PowerShell v3 Release Candidate is out, I&amp;rsquo;ve noticed a slight tweak to the help system. Previously, if you looked at a command&amp;rsquo;s help prior to downloading the help content, you still got the basic syntax and a reminder that you hadn&amp;rsquo;t yet downloaded help. That still occurs, but when you first try to ask for help (if you haven&amp;rsquo;t downloaded it), you actually get an interaction-required Yes/No prompt, reminding you to run Update-Help to get the help content to your computer.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p><a href="http://powershell.com/cs/blogs/donjones/archive/2012/03/02/wait-powershell-v3-doesn-t-come-with-help.aspx">I&rsquo;ve written before about how PowerShell v3 won&rsquo;t come with help</a> &ldquo;in the box,&rdquo; but will instead require you to download help from Microsoft&rsquo;s servers.</p><p>ASIDE: Technically,<em>any</em> module author can provide updatable help on their own Web server; you just have to tag your module manifest with the appropriate information so that PowerShell can locate your online content and download it.</p><p>Now that Windows PowerShell v3 Release Candidate is out, I&rsquo;ve noticed a slight tweak to the help system. Previously, if you looked at a command&rsquo;s help prior to downloading the help content, you still got the basic syntax and a reminder that you hadn&rsquo;t yet downloaded help. That still occurs, but when you first try to ask for help (if you haven&rsquo;t downloaded it), you actually get an interaction-required Yes/No prompt, reminding you to run Update-Help to get the help content to your computer.</p><p>UPDATE: And, if you hit &ldquo;Y&rdquo; on that prompt, it runs Update-Help. So&hellip; this is pretty smart.</p><p>I think this is a great compromise. Now, there&rsquo;s no way you can possibly<em>not realize</em> that you haven&rsquo;t downloaded help, and you&rsquo;re told<em>exactly</em> how to do so, and Microsoft (and other authors) are able to provide more accurate, continuously-updated content.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=16885" alt=""/>
]]></content:encoded></item><item><title>FInal Outlines for the v3 "Lunches" Books</title><link>https://powershell.org/articles/2012-06-03-final-outlines-for-the-v3-lunches-books/</link><guid>https://powershell.org/articles/2012-06-03-final-outlines-for-the-v3-lunches-books/</guid><pubDate>Sun, 03 Jun 2012 13:35:00 +0000</pubDate><description>&lt;p&gt;1&lt;br&gt;
1095&lt;br&gt;
6247&lt;br&gt;
Concentrated Technology&lt;br&gt;
52&lt;br&gt;
14&lt;br&gt;
7328&lt;br&gt;
14.0&lt;br&gt;
Normal&lt;/p&gt;
&lt;p&gt;false&lt;br&gt;
false&lt;br&gt;
false&lt;br&gt;
EN-US&lt;br&gt;
JA&lt;br&gt;
X-NONE&lt;/p&gt;
&lt;p&gt;I wanted to get these posted for folks&amp;rsquo; reference. The books are proceeding apace, and now that PowerShell v3 is in Release Candidate, we&amp;rsquo;re going to move forward with publication ASAP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ToC &amp;ndash; &amp;ldquo;Learn Windows PowerShell 3 in a Month of Lunches&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Before You Begin&lt;/p&gt;
&lt;p&gt;a. &lt;br&gt;
Why You Can&amp;rsquo;t Afford to Ignore PowerShell&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>1<br>
1095<br>
6247<br>
Concentrated Technology<br>
52<br>
14<br>
7328<br>
14.0<br>
Normal</p><p>false<br>
false<br>
false<br>
EN-US<br>
JA<br>
X-NONE</p><p>I wanted to get these posted for folks&rsquo; reference. The books are proceeding apace, and now that PowerShell v3 is in Release Candidate, we&rsquo;re going to move forward with publication ASAP.</p><p><strong>ToC &ndash; &ldquo;Learn Windows PowerShell 3 in a Month of Lunches&rdquo;</strong></p><ol><li/></ol><p>Before You Begin</p><p>a.<br>
Why You Can&rsquo;t Afford to Ignore PowerShell</p><p>b.<br>
Is This Book for You?</p><p>c.<br>
How to Use this Book</p><p>i. The<br>
Main Chapters</p><p>ii. Hands-On<br>
Labs</p><p>iii. Supplementary<br>
Materials</p><p>iv. Further<br>
Exploration</p><p>v. Above<br>
and Beyond</p><p>d.<br>
Setting up Your Lab Environment</p><p>e.<br>
Installing Windows PowerShell</p><p>f.<br>
Online Resources</p><p>g.<br>
Being<em>Immediately<br>
Effective</em> with PowerShell</p><ol start="2"><li/></ol><p>Meet PowerShell</p><p>a.<br>
Choose Your Weapon</p><p>b.<br>
The Console Window</p><p>c.<br>
The Integrated Scripting Environment</p><p>d.<br>
It&rsquo;s Typing Class All Over Again!</p><p>e.<br>
What Version is This?</p><p>f.<br>
Common Points of Confusion</p><p>g.<br><strong>Lab</strong></p><p>h.<br><strong>Further<br>
Exploration</strong></p><ol start="3"><li/></ol><p>Using the Help System</p><p>a.<br>
The Help System: How You Discover Commands</p><p>b.<br>
Updatable Help</p><p>c.<br>
Asking for Help</p><p>d.<br>
Using Help to Find Commands</p><p>e.<br>
Interpreting the Help</p><p>i. Parameter<br>
Sets and Common Parameters</p><p>ii. Optional<br>
and Mandatory Parameters</p><p>iii. Positional<br>
Parameters</p><p>iv. Parameter<br>
Values</p><p>v. Examples</p><p>f.<br>
Accessing &ldquo;About&rdquo; Topics</p><p>g.<br>
Accessing Online Help</p><p>h.<br><strong>Lab</strong></p><ol start="4"><li/></ol><p>Running Commands</p><p>a.<br>
Not Scripting: Just Running Commands</p><p>b.<br>
The Anatomy of a Command</p><p>c.<br>
The Cmdlet Naming Convention</p><p>d.<br>
Aliases: Nicknames for Commands</p><p>e.<br>
Taking Shortcuts</p><p>i. Truncating<br>
Parameter Names</p><p>ii. Parameter<br>
Name Aliases</p><p>iii. Positional<br>
Parameters</p><p>f.<br>
Cheating, a Bit: Show-Command</p><p>g.<br>
Support for External Commands</p><p>h.<br>
Dealing With Errors</p><p>i.<br>
Common Points of Confusion</p><p>i. Typing<br>
Cmdlet Names</p><p>ii. Typing<br>
Parameters</p><p>j.<br><strong>Lab</strong></p><ol start="5"><li/></ol><p>Working with Providers</p><p>a.<br>
What are Providers?</p><p>b.<br>
How the File System is Organized</p><p>c.<br>
How the File System is Like Other Data Stores</p><p>d.<br>
Navigating the File System</p><p>e.<br>
Using Wildcards and Literal Paths</p><p>f.<br>
Working with Other Providers</p><p>g.<br><strong>Lab</strong></p><p>h.<br><strong>Further<br>
Exploration</strong></p><ol start="6"><li/></ol><p>The Pipeline: Connecting Commands</p><p>a.<br>
Connect One Command to Another: Less Work For<br>
You!</p><p>b.<br>
Exporting to a CSV or XML File</p><p>c.<br>
Piping to a File or Printer</p><p>d.<br>
Converting to HTML</p><p>e.<br>
Using Cmdlets That Modify the System: Killing<br>
Processes and Stopping Services</p><p>f.<br>
Common Points of Confusion</p><p>g.<br><strong>Lab</strong></p><ol start="7"><li/></ol><p>Adding Commands</p><p>a.<br>
How One Shell Can Do Everything</p><p>b.<br>
About Product-Specific &ldquo;Management Shells&rdquo;</p><p>c.<br>
Extensions: Finding and Adding Snap-Ins</p><p>d.<br>
Extensions: Finding and Adding Modules</p><p>e.<br>
Playing With a New Module</p><p>f.<br>
Profile Scripts: Preloading Extensions When the<br>
Shell Starts</p><p>g.<br>
Common Points of Confusion</p><p>h.<br><strong>Lab</strong></p><ol start="8"><li/></ol><p>&ldquo;Objects:&rdquo;<br>
Just Data by Another Name</p><p>a.<br>
What are Objects?</p><p>b.<br>
Why PowerShell Uses Objects</p><p>c.<br>
Discovering Objects: Get-Member</p><p>d.<br>
Object Attributes, or &ldquo;Properties&rdquo;</p><p>e.<br>
Object Actions, or &ldquo;Methods&rdquo;</p><p>f.<br>
Sorting Objects</p><p>g.<br>
Selecting the Properties You Want</p><p>h.<br>
Objects Until the Very End</p><p>i.<br>
Common Points of Confusion</p><p>j.<br><strong>Lab</strong></p><ol start="9"><li/></ol><p>The Pipeline, Deeper</p><p>a.<br>
The Pipeline: Enabling Power With Less Typing</p><p>b.<br>
How PowerShell Passes Data Down the Pipeline</p><p>c.<br>
Plan A: Pipeline Input ByValue</p><p>d.<br>
Plan B: Pipeline Input ByPropertyName</p><p>e.<br>
When Things Don&rsquo;t Line Up: Custom Properties</p><p>f.<br>
Parenthetical Commands</p><p>g.<br>
Extracting the Value from a Single Property</p><p>h.<br><strong>Lab</strong></p><ol start="10"><li>Formatting</li></ol><ul><li>and Why it&rsquo;s Done on the Right</li></ul><p>a.<br>
Formatting: Making What You See Prettier</p><p>b.<br>
About the Default Formatting</p><p>c.<br>
Formatting Tables</p><p>d.<br>
Formatting Lists</p><p>e.<br>
Formatting Wide</p><p>f.<br>
Custom Columns and List Entries</p><p>g.<br>
Going Out: To a File, a Printer, or the Host</p><p>h.<br>
Another Out: GridViews</p><p>i.<br>
Common Points of Confusion</p><p>i. Always<br>
Format Right</p><p>ii. One<br>
Object at a Time, Please</p><p>j.<br><strong>Lab</strong></p><p>k.<br><strong>Further<br>
Exploration</strong></p><ol start="11"><li>Filtering<br>
and Comparisons</li></ol><p>a.<br>
Making the Shell Give You Just What You Need</p><p>b.<br>
Filter Left</p><p>c.<br>
Comparison Operators</p><p>d.<br>
Filtering Objects out of the Pipeline</p><p>e.<br>
The Iterative Command-Line Model</p><p>f.<br>
Common Points of Confusion</p><p>i. Filter<br>
Left, Please</p><p>ii. When<br>
$_ is Allowed</p><p>g.<br><strong>Lab</strong></p><p>h.<br><strong>Further<br>
Exploration</strong></p><ol start="12"><li>A<br>
Practical Interlude</li></ol><p>a.<br>
Defining the Task</p><p>b.<br>
Finding the Commands</p><p>c.<br>
Learning to Use the Commands</p><p>d.<br>
Tips for Teaching Yourself</p><p>e.<br><strong>Lab</strong></p><ol start="13"><li>Remote<br>
Control: One on One, and One to Many</li></ol><p>a.<br>
The Idea Behind Remote PowerShell</p><p>b.<br>
WinRM Overview</p><p>c.<br>
Using Enter-PSSession and Exit-PSSession for<br>
One-to-one Remoting</p><p>d.<br>
Using Invoke-Command for One-to-many Remoting</p><p>e.<br>
Differences Between Remote and Local Commands</p><p>i. Invoke-Command<br>
vs -ComputerName</p><p>ii. Local<br>
vs Remote Processing</p><p>iii. Deserialized<br>
Objects</p><p>f.<br>
But Wait, There&rsquo;s More</p><p>g.<br>
Remoting Options</p><p>h.<br>
Common Points of Confusion</p><p>i.<br><strong>Lab</strong></p><p>j.<br><strong>Further<br>
Exploration</strong></p><ol start="14"><li>Using<br>
Windows Management Instrumentation</li></ol><p>a.<br>
WMI Essentials</p><p>b.<br>
The Bad News About WMI</p><p>c.<br>
Exploring WMI</p><p>d.<br>
Choose Your Weapon: WMI or CIM</p><p>e.<br>
Using Get-WmiObject</p><p>f.<br>
Using Get-Ciminstance</p><p>g.<br>
WMI Documentation</p><p>h.<br>
Common Points of Confusion</p><p>i.<br><strong>Lab</strong></p><p>j.<br><strong>Further<br>
Exploration</strong></p><ol start="15"><li>Multitasking<br>
with Background Jobs</li></ol><p>a.<br>
Making PowerShell Do Multiple Things at the Same<br>
Time</p><p>b.<br>
Synchronous versus Asynchronous</p><p>c.<br>
Creating a Local Job</p><p>d.<br>
WMI, as a Job</p><p>e.<br>
Remoting, as a Job</p><p>f.<br>
Getting Job Results</p><p>g.<br>
Working with Child Jobs</p><p>h.<br>
Commands for Managing Jobs</p><p>i.<br>
Scheduled Jobs</p><p>j.<br>
Common Points of Confusion</p><p>k.<br><strong>Lab</strong></p><ol start="16"><li>Working<br>
with Bunches of Objects, One at a Time</li></ol><p>a.<br>
Automation for Mass Management</p><p>b.<br>
The Preferred Way: &ldquo;Batch&rdquo; Cmdlets</p><p>c.<br>
The WMI Way: Invoking WMI Methods</p><p>d.<br>
The Backup Plan: Enumerating Objects</p><p>e.<br>
Common Points of Confusion</p><p>i. Which<br>
Way is the Right Way?</p><p>ii. WMI<br>
Methods versus Cmdlets</p><p>iii. Method<br>
Documentation</p><p>iv. ForEach-Object<br>
Confusion</p><p>f.<br><strong>Lab</strong></p><ol start="17"><li>Security<br>
Alert!</li></ol><p>a.<br>
Keeping the Shell Secure</p><p>b.<br>
Windows PowerShell Security Goals</p><p>c.<br>
Execution Policy and Code Signing</p><p>i. Execution<br>
Policy Settings</p><p>ii. Digital<br>
Code Signing</p><p>d.<br>
Other Security Measures</p><p>e.<br>
Other Security Holes?</p><p>f.<br>
Security Recommendations</p><p>g.<br><strong>Lab</strong></p><ol start="18"><li>Variables:<br>
A Place to Store Your Stuff</li></ol><p>a.<br>
Introduction to Variables</p><p>b.<br>
Storing Values in Variables</p><p>c.<br>
Fun Tricks with Quotes</p><p>d.<br>
Storing Lots of Objects in a Variable</p><p>e.<br>
More Tricks with Double Quotes</p><p>f.<br>
Declaring a Variable&rsquo;s Type</p><p>g.<br>
Commands for Working with Variables</p><p>h.<br>
Variable Best Practices</p><p>i.<br>
Common Points of Confusion</p><p>j.<br><strong>Lab</strong></p><p>k.<br><strong>Further<br>
Exploration</strong></p><ol start="19"><li>Input<br>
and Output</li></ol><p>a.<br>
Prompting For, and Displaying, Information</p><p>b.<br>
Read-Host</p><p>c.<br>
Write-Host</p><p>d.<br>
Write-Output</p><p>e.<br>
Other Ways to Write</p><p>f.<br><strong>Lab</strong></p><p>g.<br><strong>Further<br>
Exploration</strong></p><ol start="20"><li>Sessions:<br>
Remote Control, with Less Work</li></ol><p>a.<br>
Making PowerShell Remoting a Bit Easier</p><p>b.<br>
Creating and Using Reusable Sessions</p><p>c.<br>
Using Sessions with Enter-PSSession</p><p>d.<br>
Using Sessions with Invoke-Command</p><p>e.<br>
Implicit Remoting: Importing a Session</p><p>f.<br>
Disconnected Sessions</p><p>g.<br><strong>Lab</strong></p><p>h.<br><strong>Further<br>
Exploration</strong></p><ol start="21"><li>You<br>
Call This Scripting?</li></ol><p>a.<br>
Not Programming&hellip; More Like Batch Files</p><p>b.<br>
Making Commands Repeatable</p><p>c.<br>
Parameterizing Commands</p><p>d.<br>
Creating a Parameterized Script</p><p>e.<br>
Documenting Your Script</p><p>f.<br>
One Script, One Pipeline</p><p>g.<br>
A Quick Look at Scope</p><p>h.<br><strong>Lab</strong></p><ol start="22"><li>Improving<br>
Your Parameterized Script</li></ol><p>a.<br>
Starting Point</p><p>b.<br>
Getting PowerShell to do the Hard Work</p><p>c.<br>
Making Parameters Mandatory</p><p>d.<br>
Adding Parameter Aliases</p><p>e.<br>
Validating Parameter Input</p><p>f.<br>
Adding the Warm and Fuzzies with Verbose Output</p><p>g.<br><strong>Lab</strong></p><ol start="23"><li>Advanced<br>
Remoting Configuration</li></ol><p>a.<br>
Using Other Endpoints</p><p>b.<br>
Creating Custom Endpoints</p><p>i. Creating<br>
the Session Configuration</p><p>ii. Registering<br>
the Session</p><p>c.<br>
Enabling Multi-Hop Remoting</p><p>d.<br>
Digging Deep into Remoting Authentication</p><p>i. Defaults<br>
for Mutual Authentication</p><p>ii. Mutual<br>
Authentication via SSL</p><p>iii. Mutual<br>
Authentication via TrustedHosts</p><p>e.<br><strong>Lab</strong></p><ol start="24"><li>Using<br>
Regular Expressions to Parse Text Files</li></ol><p>a.<br>
The Purpose of Regular Expressions</p><p>b.<br>
A RegEx Syntax Primer</p><p>c.<br>
Using RegEx with -Match</p><p>d.<br>
Using RegEx with Select-String</p><p>e.<br><strong>Lab</strong></p><p>f.<br><strong>Further<br>
Exploration</strong></p><ol start="25"><li>Additional<br>
Random Tips, Tricks, and Techniques</li></ol><p>a.<br>
Profiles, Prompts and Colors: Customizing the<br>
Shell</p><p>i. PowerShell<br>
Profiles</p><p>ii. Customizing<br>
the Prompt</p><p>iii. Tweaking<br>
Colors</p><p>b.<br>
More Operators: -as, -is, -replace, -join,<br>
-split</p><p>i. -as<br>
and -is</p><p>ii. -replace</p><p>iii. -join<br>
and -split</p><p>iv. -contains<br>
and -in</p><p>c.<br>
String Manipulation</p><p>d.<br>
Date Manipulation</p><p>e.<br>
Dealing with WMI Dates</p><p>f.<br>
Setting Default Parameter Values</p><p>g.<br>
Playing with Script Blocks</p><ol start="26"><li>Using<br>
Someone Else&rsquo;s Script</li></ol><p>a.<br>
The Script</p><p>b.<br>
It&rsquo;s a Line-by-line Examination</p><p>c.<br><strong>Lab</strong></p><ol start="27"><li>Never<br>
the End</li></ol><p>a.<br>
Ideas for Further Exploration</p><p>b.<br>
&ldquo;Now That I&rsquo;m Done, Where Do I Start?&rdquo;</p><p>c.<br>
Other Resources You&rsquo;ll Grow to Love</p><ol start="28"><li>PowerShell<br>
Cheat Sheet</li></ol><p>a.<br>
Punctuation</p><p>b.<br>
Help File</p><p>c.<br>
Operators</p><p>d.<br>
Custom Property and Column Syntax</p><p>e.<br>
Pipeline Parameter Input</p><p>f.<br>
When to Use $_</p><ol start="29"><li>Appendix<br>
A: Review Labs</li></ol><p>a.<br>
Review Lab 1 (Chapters 1-6)</p><p>b.<br>
Review Lab 2 (Chapters 1-14)</p><p>c.<br>
Review Lab 3 (Chapters 1-19)</p><p>1<br>
784<br>
4474<br>
Concentrated Technology<br>
37<br>
10<br>
5248<br>
14.0<br>
Normal</p><p>false<br>
false<br>
false<br>
EN-US<br>
JA<br>
X-NONE</p><p><strong>ToC &ndash; &ldquo;PowerShell Scripting and Toolmaking in a Month of Lunches&rdquo;</strong></p><hr><p><strong>Part I: Introduction<br>
to Toolmaking</strong></p><ol><li/></ol><p>Before You Begin</p><p>a.<br>
What is Toolmaking?</p><p>b.<br>
Is This Book for You?</p><p>c.<br>
Pre-Requisites</p><p>i. PowerShell<br>
v3</p><p>ii. Admin<br>
Privileges</p><p>iii. Multiple<br>
Computers</p><p>iv. SQL<br>
Server</p><p>v. PowerShell<br>
ISE</p><p>vi. Optional<br>
Pre-Requisites</p><p>d.<br>
How To Use this Book</p><ol start="2"><li/></ol><p>PowerShell Scripting Overview</p><p>a.<br>
What<em>is</em><br>
PowerShell Scripting?</p><p>b.<br>
PowerShell&rsquo;s Execution Policy</p><p>c.<br>
Running Scripts</p><p>d.<br>
Editing Scripts</p><p>e.<br><strong>Further<br>
Exploration: Script Editors</strong></p><p>f.<br><strong>Lab</strong></p><ol start="3"><li/></ol><p>PowerShell&rsquo;s Scripting Language</p><p>a.<br>
One Script, One Pipeline</p><p>b.<br>
Variables</p><p>c.<br>
Quotation Marks</p><p>d.<br>
Object Members and Variables</p><p>e.<br>
Parentheses</p><p>f.<br>
Refresher: Comparisons</p><p>g.<br>
Logical Constructs</p><p>i. If<br>
Construct</p><p>ii. Switch<br>
Construct</p><p>h.<br>
Looping Constructs</p><p>i. Do&hellip;While<br>
Construct</p><p>ii. ForEach<br>
Construct</p><p>iii. For<br>
Construct</p><p>i.<br>
Break and Continue in Constructs</p><p>j.<br><strong>Lab</strong></p><ol start="4"><li/></ol><p>Simple Scripts and Functions</p><p>a.<br>
Start with a Command</p><p>b.<br>
Turn the Command into a Script</p><p>c.<br>
Parameterize the Command</p><p>d.<br>
Turning the Script into a Function</p><p>e.<br>
Testing the Function</p><p>i. Dot-Sourcing</p><p>ii. Calling<br>
the Function in the Script</p><p>iii. A<br>
Better Way Ahead: Script Modules</p><p>f.<br><strong>Lab</strong></p><ol start="5"><li/></ol><p>Scope</p><p>a.<br>
What is Scope?</p><p>b.<br>
Seeing Scope in Action</p><p>c.<br>
Working Out-of-Scope</p><p>d.<br>
Getting Strict with Scope</p><p>e.<br>
Best Practices for Scope</p><p>f.<br><strong>Lab</strong></p><hr><p><strong>Part II: Building an<br>
Inventory Tool</strong></p><ol start="6"><li/></ol><p>Tool Design Guidelines</p><p>a.<br>
Do One Thing, and Do it Well</p><p>i. Input<br>
Tools</p><p>ii. Functional<br>
Tools</p><p>iii. Output<br>
Tools</p><p>b.<br><strong>Lab</strong></p><ol start="7"><li/></ol><p>Advanced Functions, Part 1</p><p>a.<br>
Advanced Function Template</p><p>b.<br>
Designing the Function</p><p>c.<br>
Declaring Parameters</p><p>d.<br>
Testing the Parameters</p><p>e.<br>
Writing the Main Code</p><p>f.<br>
Outputting Custom Objects</p><p>g.<br>
What Not to Do</p><p>h.<br>
Coming Up Next</p><p>i.<br><strong>Lab</strong></p><ol start="8"><li/></ol><p>Advanced Functions, Part 2</p><p>a.<br>
Making Parameters Mandatory</p><p>b.<br>
Verbose Output</p><p>c.<br>
Parameter Aliases</p><p>d.<br>
Accepting Pipeline Input</p><p>e.<br>
Parameter Validation</p><p>f.<br>
Adding a Switch Parameter</p><p>g.<br>
Parameter Help</p><p>h.<br>
Coming Up Next</p><p>i.<br><strong>Lab</strong></p><ol start="9"><li/></ol><p>Writing Help</p><p>a.<br>
Comment-Based Help</p><p>b.<br>
XML-Based Help</p><p>c.<br>
Coming Up Next</p><p>d.<br><strong>Lab</strong></p><ol start="10"><li>Error<br>
Handling</li></ol><p>a.<br>
It&rsquo;s All About the Action</p><p>b.<br>
Setting the Error Action</p><p>c.<br>
Saving the Error</p><p>d.<br>
Error Handling v1: Trap</p><p>e.<br>
Error Handling v2+: Try&hellip;Catch&hellip;Finally</p><p>f.<br>
Providing Some Visuals</p><p>g.<br>
Coming Up Next</p><p>h.<br><strong>Lab</strong></p><ol start="11"><li>Debugging<br>
Techniques</li></ol><p>a.<br>
Two Types of Bugs</p><p>b.<br>
Solving Typos</p><p>c.<br>
The Real Trick to Debugging: Expectations</p><p>d.<br>
Dealing with Logic Errors: Trace Code</p><p>e.<br>
Dealing with Logic Errors: Breakpoints</p><p>f.<br>
Seriously, Have Expectations</p><p>g.<br>
Coming Up Next</p><p>h.<br><strong>Lab</strong></p><ol start="12"><li>Creating<br>
Custom Format Views</li></ol><p>a.<br>
The Anatomy of a View</p><p>b.<br>
Adding a Type Name to Output Objects</p><p>c.<br>
Making a View</p><p>d.<br>
Loading and Debugging the View</p><p>e.<br>
Using the View</p><p>f.<br>
Coming Up Next</p><p>g.<br><strong>Lab</strong></p><ol start="13"><li>Script<br>
and Manifest Modules</li></ol><p>a.<br>
Introducing Modules</p><p>i. Module<br>
Location</p><p>ii. Module<br>
Name</p><p>iii. Module<br>
Contents</p><p>b.<br>
Creating a Script Module</p><p>c.<br>
Creating a Module Manifest</p><p>d.<br>
Creating a Module-Level Setting Variable</p><p>e.<br>
Coming Up Next</p><p>f.<br><strong>Lab</strong></p><ol start="14"><li>Adding<br>
Database Access</li></ol><p>a.<br>
Simplifying Database Access</p><p>b.<br>
Setting Up Your Environment</p><p>c.<br>
The Database Functions</p><p>d.<br>
About the Database Functions</p><p>e.<br>
Using the Database Functions</p><p>f.<br><strong>Lab</strong></p><ol start="15"><li>Interlude:<br>
Creating a New Tool</li></ol><p>a.<br>
Designing the Tool</p><p>b.<br>
Writing and testing the Function</p><p>c.<br>
Dressing Up the Parameters</p><p>d.<br>
Adding Help</p><p>e.<br>
Handling Errors</p><p>f.<br>
Creating a Custom Format View</p><p>g.<br>
Making a Module</p><p>h.<br>
Coming Up Next</p><p><strong>Part III: Advanced<br>
Toolmaking Techniques</strong></p><ol start="16"><li>Making<br>
Tools that Make Changes</li></ol><p>a.<br>
The -Confirm and -WhatIf Parameters</p><p>b.<br>
Passthrough ShouldProcess</p><p>c.<br>
Defining the Impact Level</p><p>d.<br>
Implementing ShouldProcess</p><p>**e.<br>
**<strong>Lab</strong></p><ol start="17"><li>Creating<br>
a Custom Type Extension</li></ol><p>a.<br>
The Anatomy of an Extension</p><p>b.<br>
Creating a Script Property</p><p>c.<br>
Creating a Script Method</p><p>d.<br>
Loading the Extension</p><p>e.<br>
Testing the Extension</p><p>f.<br>
Adding the Extension to a Manifest</p><p>g.<br><strong>Lab</strong></p><ol start="18"><li>Creating<br>
PowerShell Workflows</li></ol><p>a.<br>
Workflow Overview</p><p>i. Common<br>
Parameters for Workflows</p><p>ii. Activities<br>
and Stateless Execution</p><p>iii. Persisting<br>
State</p><p>iv. Suspending<br>
and Resuming Workflows</p><p>v. Inherently<br>
Remotable</p><p>vi. Parallelism</p><p>b.<br>
General Workflow Design Strategy</p><p>c.<br>
Example Workflow Scenario</p><p>d.<br>
Writing the Workflow</p><p>e.<br>
Workflows vs. Functions</p><p>f.<br><strong>Lab</strong></p><ol start="19"><li>Troubleshooting<br>
Pipeline Input</li></ol><p>a.<br>
Refresher: How Pipeline Input Works</p><p>b.<br>
Introducing Trace-Command</p><p>c.<br>
Interpreting Trace-Command Output</p><p>d.<br><strong>Lab</strong></p><ol start="20"><li>Using<br>
Object Hierarchies for Complex Output</li></ol><p>a.<br>
When a Hierarchy Might be Necessary</p><p>b.<br>
Hierarchies and CSV: Not a Good Idea</p><p>c.<br>
Creating Nested Objects</p><p>d.<br>
Working with Nested Objects</p><p>i. Using<br>
Select-Object to Expand Child Objects</p><p>ii. Using<br>
Format-Custom to Expand an Object Hierarchy</p><p>iii. Using<br>
a ForEach Loop to Enumerate Sub-Objects</p><p>iv. Using<br>
PowerShell&rsquo;s Array Syntax to Access Individual Sub-Objects</p><p>e.</p><p>f.<br><strong>Lab</strong></p><ol start="21"><li>Globalizing<br>
a Function</li></ol><p>a.<br>
Introduction to Globalization and Localization</p><p>b.<br>
PowerShell&rsquo;s Data Language</p><p>c.<br>
Storing Translated Strings</p><p>d.<br>
Do You Need to Globalize?</p><p>e.<br><strong>Lab</strong></p><ol start="22"><li>Crossing<br>
the Line: Utilizing the .NET Framework</li></ol><p>a.<br>
.NET Classes and Instances</p><p>b.<br>
Static Methods of a Class</p><p>c.<br>
Instantiating a Class</p><p>d.<br>
Using Reflection</p><p>e.<br>
Finding Class Documentation</p><p>f.<br>
PowerShell vs. Visual Studio</p><p>g.<br><strong>Lab</strong></p><p><strong>Part IV: Creating<br>
Tools for Delegated Administration</strong></p><ol start="23"><li>Creating<br>
a GUI Tool, Part 1: The GUI</li></ol><p>a.<br>
Introduction to WinForms</p><p>b.<br>
Using a GUI to create the GUI</p><p>c.<br>
Manually Coding the GUI</p><p>d.<br>
Showing the GUI</p><p>e.<br><strong>Lab</strong></p><ol start="24"><li>Creating<br>
a GUI Tool, Part 2: The Code</li></ol><p>a.<br>
Addressing GUI Objects</p><p>b.<br>
Example: Text Boxes</p><p>c.<br>
Example: Button Clicks</p><p>d.<br>
Example: List Boxes</p><p>e.<br><strong>Lab</strong></p><ol start="25"><li>Creating<br>
a GUI Tool, Part 3: The Output</li></ol><p>a.<br>
Using Out-GridView</p><p>b.<br>
Creating a Form for Output</p><p>c.<br>
Populating and Showing the Output</p><p>d.<br><strong>Lab</strong></p><ol start="26"><li>Creating<br>
Proxy Functions</li></ol><p>a.<br>
What are Proxy Functions?</p><p>b.<br>
Creating the Proxy Function Template</p><p>c.<br>
Removing a Parameter</p><p>d.<br>
Adding a Parameter</p><p>e.<br>
Loading the Proxy Function</p><p>f.<br><strong>Lab</strong></p><ol start="27"><li>Setting<br>
Up Constrained Remoting Endpoints</li></ol><p>a.<br>
Refresher: Remoting Architecture</p><p>b.<br>
What are Constrained Endpoints?</p><p>c.<br>
Creating the Endpoint Definition</p><p>d.<br>
Registering the Endpoint</p><p>e.<br>
Connecting to the Endpoint</p><p>f.<br><strong>Lab</strong></p><hr><p><strong>Conclusion</strong></p><ol start="28"><li>Never<br>
the End</li></ol><p>a.<br>
Welcome to Toolmaking</p><p>b.<br>
Cool Ideas for Tools</p><p>c.<br>
What&rsquo;s Your Next Step?</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=16860" alt=""/>
]]></content:encoded></item><item><title>Looking for a good tech conference? Try this.</title><link>https://powershell.org/articles/2012-06-02-looking-for-a-good-tech-conference-try-this/</link><guid>https://powershell.org/articles/2012-06-02-looking-for-a-good-tech-conference-try-this/</guid><pubDate>Sat, 02 Jun 2012 23:57:00 +0000</pubDate><description>&lt;p&gt;It&amp;rsquo;s called &lt;a href="http://techmentorevents.com/events/microsofthq/home.aspx?utm_source=AttendeeMktg&amp;amp;utm_medium=BannerAd&amp;amp;utm_campaign=TMSK6"&gt;TechMentor&lt;/a&gt;. The next one is in August, &lt;em&gt;at Microsoft campus.&lt;/em&gt; Yup, in Redmond. The mothership. And, unlike larger shows (like TechEd), you won&amp;rsquo;t be one of 15,000 people crammed into a convention center, fighting for lunch space and getting ignored by speakers. TechMentor&amp;rsquo;s a more &amp;ldquo;boutique&amp;rdquo; event, with just a few hundred other IT professionals (and no developers - ew, cooties!). You&amp;rsquo;ll get tons of one-on-one time with expert speakers (like me), and plenty of networking time with your colleagues. And smaller lines for lunches.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>It&rsquo;s called<a href="http://techmentorevents.com/events/microsofthq/home.aspx?utm_source=AttendeeMktg&amp;utm_medium=BannerAd&amp;utm_campaign=TMSK6">TechMentor</a>. The next one is in August,<em>at Microsoft campus.</em> Yup, in Redmond. The mothership. And, unlike larger shows (like TechEd), you won&rsquo;t be one of 15,000 people crammed into a convention center, fighting for lunch space and getting ignored by speakers. TechMentor&rsquo;s a more &ldquo;boutique&rdquo; event, with just a few hundred other IT professionals (and no developers - ew, cooties!). You&rsquo;ll get tons of one-on-one time with expert speakers (like me), and plenty of networking time with your colleagues. And smaller lines for lunches.</p><p>And a trip to the Microsoft Company Store and Museum. Seriously, it&rsquo;ll be a good time.</p><p>Use code TMSK6 when you register; that&rsquo;ll get you a $1495 registration price, with is the lowest price they offer on a full 5-day pass (which includes pre- and post-conference workshops).</p><p>Prices go up June 13 and again on June 18, so don&rsquo;t linger too long on this decision - and I hope to see you there.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=16854" alt=""/>
]]></content:encoded></item></channel></rss>