&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 2012 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2012/</link><description>Recent content in Articles from 2012 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2012/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing 10961: First Module in For Review</title><link>https://powershell.org/articles/2012-12-24-writing-10961-first-module-in-for-review/</link><guid>https://powershell.org/articles/2012-12-24-writing-10961-first-module-in-for-review/</guid><pubDate>Mon, 24 Dec 2012 15:28:20 +0000</pubDate><description>&lt;p&gt;Microsoft course 10961, which will be a 5-day course on PowerShell 3.0, is officially in development! We received signoff on the outline this week, and I&amp;rsquo;ve submitted a first module for review. A big part of that review is making sure I&amp;rsquo;m using the template properly, as the authoring tool is fairly complex. It does, however, offer (more-or-less) one-touch publishing of the student manual, instructor slide deck, OneNote trainer pack, Lab Answer Key, and other documents, so it&amp;rsquo;s worth a bit of complexity.&lt;br&gt;
The outline process, along with the actual details of the writing, has been challenging. I pored through the feedback for 10325A, and the only consistent thing I took away was a general feeling that students and instructors worldwide are &lt;em&gt;really, really&lt;/em&gt; different!&lt;br&gt;
Some European instructors cautioned against running class longer than 3 or 4pm. US instructors pointed out that a short day ending at 3pm often left students feeling shortchanged. Er. To try and accommodate both crowds, most days in 10961A will end in a significant lab, letting folks kind of free-form the end of the day however they want.&lt;br&gt;
Many folks pointed out that they liked to get into variables early in the course, not so much for scripting purposes but to simplify command-line stuff. Other instructors suggested I avoid variables too early, since they created the impression of a programming course, which scared off some students. Again&amp;hellip; er. So I&amp;rsquo;m officially waffling on that one: I don&amp;rsquo;t &lt;em&gt;formally&lt;/em&gt; cover variables until fairly late in the course (well, midway), but I &lt;em&gt;introduce&lt;/em&gt; them quite early. It means students can potentially see and use variables on day 1, although I don&amp;rsquo;t get into all the details about how they work, naming rules, and so on. The way I&amp;rsquo;m writing them in, instructors also have the option to just gloss over them or skip them entirely if their students aren&amp;rsquo;t ready.&lt;br&gt;
I asked a few MCTs to look over some of my draft material and give me a delivery time estimate. I had pacing ranging from 2 minutes per slide to almost 8. Er. So I&amp;rsquo;m going with fairly simple slides that have minimal bullets (always, in most folks&amp;rsquo; opinion, the right thing to do). Instructors can then decide how deeply they&amp;rsquo;ll cover the material based on their class&amp;rsquo; needs. It does mean the instructor will need to be familiar with the material in advance - this will be a tough course to just pick up and teach ad-hoc. As, I believe, it should be.&lt;br&gt;
If there&amp;rsquo;s a theme here, it&amp;rsquo;s that &lt;em&gt;you need a good instructor&lt;/em&gt; teaching you. As a courseware author, all I can really do is provide raw material, and an instructional design that leads &lt;em&gt;most&lt;/em&gt; students through a sensible learning progression. But the instructor&amp;rsquo;s value-add is to be able to switch things up to meet the specific needs of their class. Every time an instructor tells me, &amp;ldquo;oh, I always move Module 11 to the second day of class,&amp;rdquo; I don&amp;rsquo;t take it as a sign of bad instructional design - I take it as the sign of a good instructor who hopefully is making the change to benefit his class. But classes vary widely, and I kind of have to write for the worst-case scenario. That can sometimes make a course seem overly timid - but that&amp;rsquo;s why the instructor is there, to add their own value, experience, examples, and demonstrations to further instruct and clarify.&lt;br&gt;
So the one thing I&amp;rsquo;m keeping in mind as I write 10961 is to &lt;em&gt;leave room for the instructor to shine.&lt;/em&gt; Don&amp;rsquo;t fill the course so full of information that the instructor has no wiggle room. Give the instructor the ability to go slowly and less deep for classes that need it, and to go faster and deeper for classes that need &lt;em&gt;that.&lt;/em&gt; Provide instructors with notes on what can be skipped if necessary, and what&amp;rsquo;s absolutely critical, so that they can triage. I&amp;rsquo;ll be doing a prep video to help provide even more context to instructors in that regard, and to let them know that customizing the delivery is absolutely okay, provided they&amp;rsquo;re doing so with an understanding of the original instructional design.&lt;br&gt;
Fingers crossed.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Microsoft course 10961, which will be a 5-day course on PowerShell 3.0, is officially in development! We received signoff on the outline this week, and I&rsquo;ve submitted a first module for review. A big part of that review is making sure I&rsquo;m using the template properly, as the authoring tool is fairly complex. It does, however, offer (more-or-less) one-touch publishing of the student manual, instructor slide deck, OneNote trainer pack, Lab Answer Key, and other documents, so it&rsquo;s worth a bit of complexity.<br>
The outline process, along with the actual details of the writing, has been challenging. I pored through the feedback for 10325A, and the only consistent thing I took away was a general feeling that students and instructors worldwide are<em>really, really</em> different!<br>
Some European instructors cautioned against running class longer than 3 or 4pm. US instructors pointed out that a short day ending at 3pm often left students feeling shortchanged. Er. To try and accommodate both crowds, most days in 10961A will end in a significant lab, letting folks kind of free-form the end of the day however they want.<br>
Many folks pointed out that they liked to get into variables early in the course, not so much for scripting purposes but to simplify command-line stuff. Other instructors suggested I avoid variables too early, since they created the impression of a programming course, which scared off some students. Again&hellip; er. So I&rsquo;m officially waffling on that one: I don&rsquo;t<em>formally</em> cover variables until fairly late in the course (well, midway), but I<em>introduce</em> them quite early. It means students can potentially see and use variables on day 1, although I don&rsquo;t get into all the details about how they work, naming rules, and so on. The way I&rsquo;m writing them in, instructors also have the option to just gloss over them or skip them entirely if their students aren&rsquo;t ready.<br>
I asked a few MCTs to look over some of my draft material and give me a delivery time estimate. I had pacing ranging from 2 minutes per slide to almost 8. Er. So I&rsquo;m going with fairly simple slides that have minimal bullets (always, in most folks&rsquo; opinion, the right thing to do). Instructors can then decide how deeply they&rsquo;ll cover the material based on their class&rsquo; needs. It does mean the instructor will need to be familiar with the material in advance - this will be a tough course to just pick up and teach ad-hoc. As, I believe, it should be.<br>
If there&rsquo;s a theme here, it&rsquo;s that<em>you need a good instructor</em> teaching you. As a courseware author, all I can really do is provide raw material, and an instructional design that leads<em>most</em> students through a sensible learning progression. But the instructor&rsquo;s value-add is to be able to switch things up to meet the specific needs of their class. Every time an instructor tells me, &ldquo;oh, I always move Module 11 to the second day of class,&rdquo; I don&rsquo;t take it as a sign of bad instructional design - I take it as the sign of a good instructor who hopefully is making the change to benefit his class. But classes vary widely, and I kind of have to write for the worst-case scenario. That can sometimes make a course seem overly timid - but that&rsquo;s why the instructor is there, to add their own value, experience, examples, and demonstrations to further instruct and clarify.<br>
So the one thing I&rsquo;m keeping in mind as I write 10961 is to<em>leave room for the instructor to shine.</em> Don&rsquo;t fill the course so full of information that the instructor has no wiggle room. Give the instructor the ability to go slowly and less deep for classes that need it, and to go faster and deeper for classes that need<em>that.</em> Provide instructors with notes on what can be skipped if necessary, and what&rsquo;s absolutely critical, so that they can triage. I&rsquo;ll be doing a prep video to help provide even more context to instructors in that regard, and to let them know that customizing the delivery is absolutely okay, provided they&rsquo;re doing so with an understanding of the original instructional design.<br>
Fingers crossed.</p>
]]></content:encoded></item><item><title>PowerShell.org: Our First Year in Review</title><link>https://powershell.org/articles/2012-12-21-powershell-org-our-first-year-in-review/</link><guid>https://powershell.org/articles/2012-12-21-powershell-org-our-first-year-in-review/</guid><pubDate>Fri, 21 Dec 2012 17:28:34 +0000</pubDate><description>&lt;p&gt;In September 2012, we incorporated PowerShell.org, Inc., and founded PowerShell.org. Our goal was to provide a solid Q&amp;amp;A forum, and to act as a portal to the rest of the PowerShell community.&lt;br&gt;
By any measure, we&amp;rsquo;ve had a great first showing.&lt;br&gt;
We have more than a dozen shareholders in PowerShell.org, Inc., making this the first community-owned PowerShell organization ever. We&amp;rsquo;ve signed on three Platinum sponsors - &lt;a href="http://cbtnuggets.com"&gt;CBT Nuggets&lt;/a&gt;, &lt;a href="http://sapien.com" title="Writing 10961: Remoting"&gt;SAPIEN Technologies&lt;/a&gt;, and &lt;a href="http://interfacett.com"&gt;Interface Technical Training&lt;/a&gt;. We&amp;rsquo;re now funded for 2-3 years of operation, including providing (upon request), gift cards to help local user groups pay for pizza and other monthly meeting expenses.&lt;br&gt;
PowerShell.org is now taking an average of 18,000 visits per month from more than 12,000 unique visitors, with a total of almost 57,000 monthly page views. Our forums have helped more than 760 people answer more than 850 questions.&lt;br&gt;
Microsoft&amp;rsquo;s Scripting Guy, Ed Wilson, has handed off the Scripting Games for 2013, and we&amp;rsquo;re preparing for a small-scale &amp;ldquo;Winter Scripting Camp&amp;rdquo; trial run that will include a purpose-built platform for reviewing events, submitting entries, and judging. And by the looks of things, that platform will run on PowerShell itself.&lt;br&gt;
We&amp;rsquo;ve announced our first &lt;a href="https://powershell.org/summit/"&gt;PowerShell Summit North America&lt;/a&gt;, and have completely sold out. We&amp;rsquo;re already doing initial planning for 2014, aiming for a larger venue and hoping to accommodate twice as many attendees, and to fully cover speaker travel expenses.&lt;br&gt;
We&amp;rsquo;ve launched PowerShell People, accessible via PowerShell.net, where you can write a PowerShell script to create and post your own profile and &amp;ldquo;brag&amp;rdquo; page about your PowerShell activities and accomplishments.&lt;br&gt;
We&amp;rsquo;ve launched three free PowerShell.org-branded &lt;a href="http://powershellbooks.com"&gt;ebooks&lt;/a&gt;, and are preparing to launch our PowerShell.org TechLetter &lt;em&gt;monthly&lt;/em&gt; (!!!) e-mail newsletter complete with feature articles, news updates, and more. That&amp;rsquo;s by (free) subscription only, so sign up if you haven&amp;rsquo;t done so already! We&amp;rsquo;ve also had help from &lt;a href="http://twitter.com/jhofferle"&gt;Jason Hofferle&lt;/a&gt; on our new Books page, rounding up all the free and commercial PowerShell books out there.&lt;br&gt;
It&amp;rsquo;s been a whirlwind year, and it&amp;rsquo;s all thanks to you for supporting it. By asking questions in the forums, offering answers, creating your People page, registering for the Summit, signing up for the Newsletter - all of these little activities spur us all on to new heights, and we appreciate all the feedback you&amp;rsquo;ve offered. There will be more to come - follow the &lt;a href="http://twitter.com/powershellorg"&gt;community on Twitter&lt;/a&gt; (and the &lt;a href="https://twitter.com/PSHSummit"&gt;Summit&lt;/a&gt; too, while you&amp;rsquo;re at it) for the latest announcements.If you&amp;rsquo;d like to contribute, just drop a note in the Suggestion Box &lt;a href="https://forums.powershell.org"&gt;forum&lt;/a&gt; - whether you want to help monitor a discussion forum, write book reviews, or whatever, there&amp;rsquo;s always room to contribute.&lt;br&gt;
There have been some setbacks. &lt;a href="http://twitter.com/pen_test"&gt;Will Steele&lt;/a&gt;, who had volunteered to populate our Events page, has had to step down due to health problems. Will has been a great contributor to the site and to the overall community, and we miss him. Our thoughts are with him and his family this holiday season.&lt;br&gt;
As we all wind down and look forward to the New Year, I wanted to personally express my gratitude to everyone who&amp;rsquo;s helped make all of this happen. Happy Holidays, Happy New Year, and I&amp;rsquo;ll see you again in 2013!&lt;br&gt;
Don Jones&lt;br&gt;
President and CEO, PowerShell.org, Inc.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In September 2012, we incorporated PowerShell.org, Inc., and founded PowerShell.org. Our goal was to provide a solid Q&amp;A forum, and to act as a portal to the rest of the PowerShell community.<br>
By any measure, we&rsquo;ve had a great first showing.<br>
We have more than a dozen shareholders in PowerShell.org, Inc., making this the first community-owned PowerShell organization ever. We&rsquo;ve signed on three Platinum sponsors -<a href="http://cbtnuggets.com">CBT Nuggets</a>,<a href="http://sapien.com" title="Writing 10961: Remoting">SAPIEN Technologies</a>, and<a href="http://interfacett.com">Interface Technical Training</a>. We&rsquo;re now funded for 2-3 years of operation, including providing (upon request), gift cards to help local user groups pay for pizza and other monthly meeting expenses.<br>
PowerShell.org is now taking an average of 18,000 visits per month from more than 12,000 unique visitors, with a total of almost 57,000 monthly page views. Our forums have helped more than 760 people answer more than 850 questions.<br>
Microsoft&rsquo;s Scripting Guy, Ed Wilson, has handed off the Scripting Games for 2013, and we&rsquo;re preparing for a small-scale &ldquo;Winter Scripting Camp&rdquo; trial run that will include a purpose-built platform for reviewing events, submitting entries, and judging. And by the looks of things, that platform will run on PowerShell itself.<br>
We&rsquo;ve announced our first<a href="/summit/">PowerShell Summit North America</a>, and have completely sold out. We&rsquo;re already doing initial planning for 2014, aiming for a larger venue and hoping to accommodate twice as many attendees, and to fully cover speaker travel expenses.<br>
We&rsquo;ve launched PowerShell People, accessible via PowerShell.net, where you can write a PowerShell script to create and post your own profile and &ldquo;brag&rdquo; page about your PowerShell activities and accomplishments.<br>
We&rsquo;ve launched three free PowerShell.org-branded<a href="http://powershellbooks.com">ebooks</a>, and are preparing to launch our PowerShell.org TechLetter<em>monthly</em> (!!!) e-mail newsletter complete with feature articles, news updates, and more. That&rsquo;s by (free) subscription only, so sign up if you haven&rsquo;t done so already! We&rsquo;ve also had help from<a href="http://twitter.com/jhofferle">Jason Hofferle</a> on our new Books page, rounding up all the free and commercial PowerShell books out there.<br>
It&rsquo;s been a whirlwind year, and it&rsquo;s all thanks to you for supporting it. By asking questions in the forums, offering answers, creating your People page, registering for the Summit, signing up for the Newsletter - all of these little activities spur us all on to new heights, and we appreciate all the feedback you&rsquo;ve offered. There will be more to come - follow the<a href="http://twitter.com/powershellorg">community on Twitter</a> (and the<a href="https://twitter.com/PSHSummit">Summit</a> too, while you&rsquo;re at it) for the latest announcements.If you&rsquo;d like to contribute, just drop a note in the Suggestion Box<a href="https://forums.powershell.org">forum</a> - whether you want to help monitor a discussion forum, write book reviews, or whatever, there&rsquo;s always room to contribute.<br>
There have been some setbacks.<a href="http://twitter.com/pen_test">Will Steele</a>, who had volunteered to populate our Events page, has had to step down due to health problems. Will has been a great contributor to the site and to the overall community, and we miss him. Our thoughts are with him and his family this holiday season.<br>
As we all wind down and look forward to the New Year, I wanted to personally express my gratitude to everyone who&rsquo;s helped make all of this happen. Happy Holidays, Happy New Year, and I&rsquo;ll see you again in 2013!<br>
Don Jones<br>
President and CEO, PowerShell.org, Inc.</p>
]]></content:encoded></item><item><title>Writing 10961: Remoting</title><link>https://powershell.org/articles/2012-12-21-writing-10961-remoting/</link><guid>https://powershell.org/articles/2012-12-21-writing-10961-remoting/</guid><pubDate>Fri, 21 Dec 2012 15:26:43 +0000</pubDate><description>&lt;p&gt;As I write this, we&amp;rsquo;re close to sign-off on the outline of 10961A, which is a new 5-day Microsoft course on PowerShell v3. I sat down yesterday and starting doing some detailed-level design work on the proposed Module 9, which will cover PowerShell Remoting.&lt;br&gt;
I &lt;em&gt;love&lt;/em&gt; Remoting (and yes, I capitalize the &amp;ldquo;R&amp;rdquo; when referring to the specific feature, much as I would for Workflow). And although I&amp;rsquo;ve taught Remoting over and over and over since it was introduced in v2, although with this course I&amp;rsquo;m trying something a bit new.&lt;br&gt;
I&amp;rsquo;m going to start by covering the basics: What Remoting is, what WS-MAN is (and yes, I know it&amp;rsquo;s formally called WS-Management, but you never see it referred to that way in-product), what WinRM is, and so on. I cover Invoke-Command and Enter-PSSession. Then I get into some advanced stuff, primarily covering how to pass arguments to Invoke-Command via its -ArgumentList parameter and an in-scriptblock Param() block. Surprisingly, &lt;em&gt;this isn&amp;rsquo;t covered in the examples of Invoke-Command in the help.&lt;/em&gt; I was shocked to discover that. I need to use that technique in Module 10, so I&amp;rsquo;m covering it in 9.&lt;br&gt;
Then I get into sessions, and I also cover disconnected sessions. Then the cool begins.&lt;br&gt;
I cover both implicit remoting (which is tons easier to do in v3) and delegated administration via custom session configurations (also vastly easier in v3). In the penultimate lab for the module, students will create a Remoting endpoint that contains a single command (Set-ADAccountPassword), have that command run under Domain Admin credentials, and restrict the endpoint to members of a HelpDesk domain user group. Voila, delegated administration! We don&amp;rsquo;t go so far as to build a GUI tool atop it all, but that would be out of scope for this course. As-is, the lab covers an &lt;em&gt;extremely&lt;/em&gt; real-world use of PowerShell and Remoting, and does it in a very practical and production-ready way. I think it&amp;rsquo;s gonna be awesome.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As I write this, we&rsquo;re close to sign-off on the outline of 10961A, which is a new 5-day Microsoft course on PowerShell v3. I sat down yesterday and starting doing some detailed-level design work on the proposed Module 9, which will cover PowerShell Remoting.<br>
I<em>love</em> Remoting (and yes, I capitalize the &ldquo;R&rdquo; when referring to the specific feature, much as I would for Workflow). And although I&rsquo;ve taught Remoting over and over and over since it was introduced in v2, although with this course I&rsquo;m trying something a bit new.<br>
I&rsquo;m going to start by covering the basics: What Remoting is, what WS-MAN is (and yes, I know it&rsquo;s formally called WS-Management, but you never see it referred to that way in-product), what WinRM is, and so on. I cover Invoke-Command and Enter-PSSession. Then I get into some advanced stuff, primarily covering how to pass arguments to Invoke-Command via its -ArgumentList parameter and an in-scriptblock Param() block. Surprisingly,<em>this isn&rsquo;t covered in the examples of Invoke-Command in the help.</em> I was shocked to discover that. I need to use that technique in Module 10, so I&rsquo;m covering it in 9.<br>
Then I get into sessions, and I also cover disconnected sessions. Then the cool begins.<br>
I cover both implicit remoting (which is tons easier to do in v3) and delegated administration via custom session configurations (also vastly easier in v3). In the penultimate lab for the module, students will create a Remoting endpoint that contains a single command (Set-ADAccountPassword), have that command run under Domain Admin credentials, and restrict the endpoint to members of a HelpDesk domain user group. Voila, delegated administration! We don&rsquo;t go so far as to build a GUI tool atop it all, but that would be out of scope for this course. As-is, the lab covers an<em>extremely</em> real-world use of PowerShell and Remoting, and does it in a very practical and production-ready way. I think it&rsquo;s gonna be awesome.</p>
]]></content:encoded></item><item><title>UK PowerShell Group sessions for 2013</title><link>https://powershell.org/articles/2012-12-20-uk-powershell-group-sessions-for-2013/</link><guid>https://powershell.org/articles/2012-12-20-uk-powershell-group-sessions-for-2013/</guid><pubDate>Thu, 20 Dec 2012 17:17:23 +0000</pubDate><description>&lt;p&gt;This is the list of proposed sessions for 2013. It is subject to change depending on circumstances.&lt;/p&gt;
&lt;p&gt;All sessions are delivered by Live Meeting on Tuesdays at 7:30 UK time&lt;/p&gt;
&lt;p&gt;29 January – PowerShell and Active Directory&lt;br&gt;
26 February – PowerShell Advanced Functions&lt;br&gt;
26 March – PowerShell cmdlets for Hyper-V&lt;br&gt;
30 April – Notes from the PowerShell summit (may be changed)&lt;br&gt;
21 May – Powershell Web Access&lt;br&gt;
25 June – guest speaker PowerShell MVP Max Trinidad&lt;br&gt;
30 July – Lessons from the Scripting Games&lt;br&gt;
27 August – PowerShell eventing engine&lt;br&gt;
24 September – CIM – cmdlets and sessions&lt;br&gt;
29 October – PowerShell and XML&lt;br&gt;
26 November – PowerShell type system – formatting and types files&lt;br&gt;
17 December – PowerShell error handling&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>This is the list of proposed sessions for 2013. It is subject to change depending on circumstances.</p><p>All sessions are delivered by Live Meeting on Tuesdays at 7:30 UK time</p><p>29 January – PowerShell and Active Directory<br>
26 February – PowerShell Advanced Functions<br>
26 March – PowerShell cmdlets for Hyper-V<br>
30 April – Notes from the PowerShell summit (may be changed)<br>
21 May – Powershell Web Access<br>
25 June – guest speaker PowerShell MVP Max Trinidad<br>
30 July – Lessons from the Scripting Games<br>
27 August – PowerShell eventing engine<br>
24 September – CIM – cmdlets and sessions<br>
29 October – PowerShell and XML<br>
26 November – PowerShell type system – formatting and types files<br>
17 December – PowerShell error handling</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2777/"><img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2777/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;blog=16267735&amp;%23038;post=2777&amp;%23038;subd=richardspowershellblog&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>WMF compatibility</title><link>https://powershell.org/articles/2012-12-20-wmf-compatibility/</link><guid>https://powershell.org/articles/2012-12-20-wmf-compatibility/</guid><pubDate>Thu, 20 Dec 2012 16:18:43 +0000</pubDate><description>&lt;p&gt;The Windows Management Framework 3.0 has been released as a Windows update.&lt;/p&gt;
&lt;p&gt;However there are some compatibility issues as documented on the PowerShell team blog. if you haven&amp;quot;™t see the post it here&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx" title="http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx"&gt;http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2775/"&gt;&lt;img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2775/" alt=""&gt;&lt;/a&gt;&lt;img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;amp;blog=16267735&amp;amp;%23038;post=2775&amp;amp;%23038;subd=richardspowershellblog&amp;amp;%23038;ref=&amp;amp;%23038;feed=1" alt=""&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>The Windows Management Framework 3.0 has been released as a Windows update.</p><p>However there are some compatibility issues as documented on the PowerShell team blog. if you haven"™t see the post it here</p><p><a href="http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx" title="http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx">http://blogs.msdn.com/b/powershell/archive/2012/12/20/windows-management-framework-3-0-compatibility-update.aspx</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2775/"><img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2775/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;blog=16267735&amp;%23038;post=2775&amp;%23038;subd=richardspowershellblog&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Renaming a user</title><link>https://powershell.org/articles/2012-12-19-renaming-a-user/</link><guid>https://powershell.org/articles/2012-12-19-renaming-a-user/</guid><pubDate>Wed, 19 Dec 2012 15:45:34 +0000</pubDate><description>&lt;p&gt;I was asked about searching a user name for a string and replacing it so that the object is renamed.&lt;/p&gt;
&lt;p&gt;This is a three stage activity. First get the user. Two modify the name. Three rename the object. In active directory the name attribute has the LDAP name of cn but the Microsoft AD cmdlets treta it as name. So we end up with this code:&lt;/p&gt;
&lt;p&gt;`$user&lt;/p&gt;
&lt;p&gt;=&lt;/p&gt;
&lt;p&gt;Get-ADUser&lt;/p&gt;
&lt;p&gt;-Filter&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;cn&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I was asked about searching a user name for a string and replacing it so that the object is renamed.</p><p>This is a three stage activity. First get the user. Two modify the name. Three rename the object. In active directory the name attribute has the LDAP name of cn but the Microsoft AD cmdlets treta it as name. So we end up with this code:</p><p>`$user</p><p>=</p><p>Get-ADUser</p><p>-Filter</p><p>{</p><p>cn</p><p>-eq</p><p>&lsquo;GREYIEN Bill&rsquo;</p><p>}</p><p>$newname</p><p>=</p><p>$user</p><p>.</p><p>Name</p><p>.</p><p>Replace</p><p>(</p><p>&ldquo;YI&rdquo;</p><p>,</p><p>&ldquo;A&rdquo;</p><p>)</p><p>Rename-ADObject</p><p>-Identity</p><p>$user</p><p>-NewName</p><p>$newname</p><p>-PassThru</p><p>`The trick is in the middle line because the name is a string so you can use the standard string methods to perform the search and replacement. Using &ldquo;“Passthru displays the object so you can see the change has taken place.</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2773/"><img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2773/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;blog=16267735&amp;%23038;post=2773&amp;%23038;subd=richardspowershellblog&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Writing 10961: The Ultimate Lab</title><link>https://powershell.org/articles/2012-12-18-writing-10961-the-ultimate-lab/</link><guid>https://powershell.org/articles/2012-12-18-writing-10961-the-ultimate-lab/</guid><pubDate>Tue, 18 Dec 2012 20:50:30 +0000</pubDate><description>&lt;p&gt;My company has been contracted by Microsoft to design and author Microsoft Official Curriculum (MOC) course 10961A, Automating Administration with Windows PowerShell v3. While there is no announced release date I can share, I did want to share some of the experience.&lt;br&gt;
As I write this, 10961A&amp;rsquo;s proposed outline is going through several review cycles. In the meantime, I wanted to sit down and start doing some detail-level design on some of the more complex labs in the course - the most complex of which is a proposed Module 10, consisting of little more than a big, 2-hour lab where you write a script to provision a newly installed Server Core computer.&lt;br&gt;
This, for me, is the ultimate lab. It&amp;rsquo;s practical, meaning it focuses on a scenario that&amp;rsquo;s extremely real-world. It&amp;rsquo;s also not &amp;ldquo;perfect,&amp;rdquo; meaning it doesn&amp;rsquo;t throw you into an everything-just-works environment and hand-hold you though a few self-guided demos. Initiating communications between a domain client and a non-domain machine is tricky in PowerShell, and automating that is not entirely straightforward.&lt;br&gt;
The approach I&amp;rsquo;m planning to take will break down all the major sub-tasks, and then walk students through some of the considerations for each. What commands will you need? What information will you need up front in order to run them? Where will you get that information - and how? I think it&amp;rsquo;ll be a very nice &amp;ldquo;putting it all together&amp;rdquo; module (although there are two modules after it, so it isn&amp;rsquo;t exactly the end of the course). It should occupy the entire afternoon of the course&amp;rsquo;s fourth day (Thursday), which makes for a nice open-ended wrap to that day (meaning faster students can finish and leave early, while leaving time for slower students to work through everything without feeling rushed).&lt;br&gt;
In the lab, you&amp;rsquo;ll write a parameterized script that saves off your old Remoting TrustedHosts list, queries DHCP for the new server&amp;rsquo;s IP address, and saves that IP address into your TrustedHosts. You&amp;rsquo;ll make a Remoting connection to the new machine and have it join itself to the domain while renaming itself, wait for it to reboot, and then add a role (IIS) to it. You wrap by putting TrustedHosts back to where it came from.&lt;br&gt;
This is actually a trimmed-down, more methodical version of a workshop I just did last week at Live! 360 in Orlando. That workshop took four hours, which I don&amp;rsquo;t have in the class&amp;rsquo; time budget, so I trimmed out a few things that were cool, but not entirely necessary, such as testing to see if a DHCP reservation already exists before creating one (without testing, you can potentially get an error, but it&amp;rsquo;s non-tragic).&lt;br&gt;
I&amp;rsquo;m looking forward to getting into the actual writing of the module once the outline is approved; I think this&amp;rsquo;ll really be the highlight of the course. It replaces a module in the older 10325A course (which I also wrote) where you break down a script &lt;em&gt;someone else wrote,&lt;/em&gt; customizing it to run in your environment. While I think that&amp;rsquo;s a useful skill, the feedback I got was that it wasn&amp;rsquo;t the most interesting lab possible, and that the script I provided (written by Jeffery Hicks, actually) was pretty complex given the time allotted. This new lab provides the same beginning-to-end scripting opportunity, but hopefully folks will find it to be a lot more practical and useful, both educationally and when they get back to the office.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>My company has been contracted by Microsoft to design and author Microsoft Official Curriculum (MOC) course 10961A, Automating Administration with Windows PowerShell v3. While there is no announced release date I can share, I did want to share some of the experience.<br>
As I write this, 10961A&rsquo;s proposed outline is going through several review cycles. In the meantime, I wanted to sit down and start doing some detail-level design on some of the more complex labs in the course - the most complex of which is a proposed Module 10, consisting of little more than a big, 2-hour lab where you write a script to provision a newly installed Server Core computer.<br>
This, for me, is the ultimate lab. It&rsquo;s practical, meaning it focuses on a scenario that&rsquo;s extremely real-world. It&rsquo;s also not &ldquo;perfect,&rdquo; meaning it doesn&rsquo;t throw you into an everything-just-works environment and hand-hold you though a few self-guided demos. Initiating communications between a domain client and a non-domain machine is tricky in PowerShell, and automating that is not entirely straightforward.<br>
The approach I&rsquo;m planning to take will break down all the major sub-tasks, and then walk students through some of the considerations for each. What commands will you need? What information will you need up front in order to run them? Where will you get that information - and how? I think it&rsquo;ll be a very nice &ldquo;putting it all together&rdquo; module (although there are two modules after it, so it isn&rsquo;t exactly the end of the course). It should occupy the entire afternoon of the course&rsquo;s fourth day (Thursday), which makes for a nice open-ended wrap to that day (meaning faster students can finish and leave early, while leaving time for slower students to work through everything without feeling rushed).<br>
In the lab, you&rsquo;ll write a parameterized script that saves off your old Remoting TrustedHosts list, queries DHCP for the new server&rsquo;s IP address, and saves that IP address into your TrustedHosts. You&rsquo;ll make a Remoting connection to the new machine and have it join itself to the domain while renaming itself, wait for it to reboot, and then add a role (IIS) to it. You wrap by putting TrustedHosts back to where it came from.<br>
This is actually a trimmed-down, more methodical version of a workshop I just did last week at Live! 360 in Orlando. That workshop took four hours, which I don&rsquo;t have in the class&rsquo; time budget, so I trimmed out a few things that were cool, but not entirely necessary, such as testing to see if a DHCP reservation already exists before creating one (without testing, you can potentially get an error, but it&rsquo;s non-tragic).<br>
I&rsquo;m looking forward to getting into the actual writing of the module once the outline is approved; I think this&rsquo;ll really be the highlight of the course. It replaces a module in the older 10325A course (which I also wrote) where you break down a script<em>someone else wrote,</em> customizing it to run in your environment. While I think that&rsquo;s a useful skill, the feedback I got was that it wasn&rsquo;t the most interesting lab possible, and that the script I provided (written by Jeffery Hicks, actually) was pretty complex given the time allotted. This new lab provides the same beginning-to-end scripting opportunity, but hopefully folks will find it to be a lot more practical and useful, both educationally and when they get back to the office.</p>
]]></content:encoded></item><item><title>PowerShell Deep Dives</title><link>https://powershell.org/articles/2012-12-18-powershell-deep-dives/</link><guid>https://powershell.org/articles/2012-12-18-powershell-deep-dives/</guid><pubDate>Tue, 18 Dec 2012 19:23:45 +0000</pubDate><description>&lt;p&gt;PowerShell Deep Dives is a book put together by the PowerShell community. I&amp;quot;™m editing one of the sections and have contributed some of the chapters. Manning have just started releasing it on their MEAP program. The full book will hopefully be ready in the spring.&lt;/p&gt;
&lt;p&gt;Best of all the royalties are being donated to worthwhile cause.&lt;/p&gt;
&lt;p&gt;Check it out – &lt;a href="http://manning.com/hicks/" title="http://manning.com/hicks/"&gt;http://manning.com/hicks/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2772/"&gt;&lt;img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2772/" alt=""&gt;&lt;/a&gt;&lt;img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;amp;blog=16267735&amp;amp;%23038;post=2772&amp;amp;%23038;subd=richardspowershellblog&amp;amp;%23038;ref=&amp;amp;%23038;feed=1" alt=""&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>PowerShell Deep Dives is a book put together by the PowerShell community. I"™m editing one of the sections and have contributed some of the chapters. Manning have just started releasing it on their MEAP program. The full book will hopefully be ready in the spring.</p><p>Best of all the royalties are being donated to worthwhile cause.</p><p>Check it out –<a href="http://manning.com/hicks/" title="http://manning.com/hicks/">http://manning.com/hicks/</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/richardspowershellblog.wordpress.com/2772/"><img src="http://feeds.wordpress.com/1.0/comments/richardspowershellblog.wordpress.com/2772/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=richardspowershellblog.wordpress.com&amp;blog=16267735&amp;%23038;post=2772&amp;%23038;subd=richardspowershellblog&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PhillyPoSH 12/06/2012 meeting summary and presentation materials</title><link>https://powershell.org/articles/2012-12-10-phillyposh-12062012-meeting-summary-and-presentation-materials/</link><guid>https://powershell.org/articles/2012-12-10-phillyposh-12062012-meeting-summary-and-presentation-materials/</guid><pubDate>Mon, 10 Dec 2012 16:52:55 +0000</pubDate><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://mellositmusings.com/"&gt;John Mello&lt;/a&gt; gave a presentation entitled &amp;ldquo;Intro to PowerShell&amp;rsquo;s Pipeline, Part 1&amp;rdquo;. A copy of his slide deck and code examples are available &lt;a href="https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_Presentations.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Script Club :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;John R. Nahrgang and [Lido Paglia](http://paglia.org/) presented a work in progress script that returns all the members of the Local Administrators Group on a filtered list of Active Directory PCs. A copy of the script is available [here](https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_ScriptClub.zip).
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Various other information worth mentioning.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;In response to [last month's script club](https://powershell.org/2012/11/08/phillyposh-11012012-meeting-summary-and-presentation-materials/), Carl Larson submitted a script that splits an Active Directory users' *distinguishedName* into an array and then put's it back together so that you can get the Parent OU. This script is meant as a jumping off point for [John Mello's](http://mellositmusings.com/) expressed difficulty trying to pull a user name from a full Active Directory path. A copy of the script is available [here](https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_Extras.zip).
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded>&lt;![CDATA[<ul><li><p><a href="http://mellositmusings.com/">John Mello</a> gave a presentation entitled &ldquo;Intro to PowerShell&rsquo;s Pipeline, Part 1&rdquo;. A copy of his slide deck and code examples are available <a href="https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_Presentations.zip">here</a>.</p><ul><li><p>Script Club :</p><pre><code>John R. Nahrgang and [Lido Paglia](http://paglia.org/) presented a work in progress script that returns all the members of the Local Administrators Group on a filtered list of Active Directory PCs. A copy of the script is available [here](https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_ScriptClub.zip).</code></pre></li><li><p>Various other information worth mentioning.</p><pre><code>In response to [last month's script club](https://powershell.org/2012/11/08/phillyposh-11012012-meeting-summary-and-presentation-materials/), Carl Larson submitted a script that splits an Active Directory users' *distinguishedName* into an array and then put's it back together so that you can get the Parent OU. This script is meant as a jumping off point for [John Mello's](http://mellositmusings.com/) expressed difficulty trying to pull a user name from a full Active Directory path. A copy of the script is available [here](https://powershell.org/wp-content/uploads/2012/12/PhillyPosh_2012-12-05_Extras.zip).</code></pre></li></ul></li></ul>
]]></content:encoded></item><item><title>What To Do If You Don't Score a PowerShell Summit Ticket</title><link>https://powershell.org/articles/2012-11-24-what-to-do-if-you-dont-score-a-powershell-summit-ticket/</link><guid>https://powershell.org/articles/2012-11-24-what-to-do-if-you-dont-score-a-powershell-summit-ticket/</guid><pubDate>Sat, 24 Nov 2012 20:46:11 +0000</pubDate><description>&lt;p&gt;As I write this, we&amp;rsquo;re down to one ticket for the &lt;a href="http://powershellsummit.org"&gt;PowerShell Summit North America 2013&lt;/a&gt;. So what do you do if you really wanted to go, but miss that last, golden ticket?&lt;/p&gt;
&lt;h2 id="cry-a-little" class="ps-heading"&gt;Cry a Little&lt;a class="ps-heading-anchor" href="#cry-a-little" 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;Let&amp;rsquo;s face it, this was totally avoidable. It&amp;rsquo;s probably your boss&amp;rsquo; fault for not approving the expense, and so some subtle retribution may be in order. Burn the coffee for a week. Reboot domain controllers randomly. You know, just sulk.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As I write this, we&rsquo;re down to one ticket for the<a href="http://powershellsummit.org">PowerShell Summit North America 2013</a>. So what do you do if you really wanted to go, but miss that last, golden ticket?</p><h2 id="cry-a-little" class="ps-heading">Cry a Little<a class="ps-heading-anchor" href="#cry-a-little" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Let&rsquo;s face it, this was totally avoidable. It&rsquo;s probably your boss&rsquo; fault for not approving the expense, and so some subtle retribution may be in order. Burn the coffee for a week. Reboot domain controllers randomly. You know, just sulk.</p><h2 id="waitlist" class="ps-heading">Waitlist<a class="ps-heading-anchor" href="#waitlist" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>But all is not lost. You can still<a href="http://powershellsummit.eventbrite.com/#">go through the registration process</a> and get on the wait list. You won&rsquo;t have to pay any money. If a slot opens up, you&rsquo;ll be notified via e-mail from EventBrite, and have 24 hours to purchase the ticket. If you don&rsquo;t buy it within 24 hours, you&rsquo;ll go to the bottom of the list and the next person will be offered the ticket. There&rsquo;s a solid chance that at least a few top waitlist spots will be filled; I know we have a couple of tentative attendees, and we have a couple of volunteers who&rsquo;ve said they&rsquo;d give up their spot (but continue to help out at the event) if it came down to this.</p><h2 id="plan-ahead" class="ps-heading">Plan Ahead<a class="ps-heading-anchor" href="#plan-ahead" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Our 2014 event will go on sale in April, 2013, during the 2013 event. Don&rsquo;t miss it next time! Start getting the boss on board in advance, like maybe in February or March. We<em>know</em> the cost is going to be higher next time - we&rsquo;re going to try and move to an actual conference center, and that&rsquo;s just a bit more expensive. We also need to do a better job of fully reimbursing speaker expenses, which we might not be able to do 100% this time. But we&rsquo;re still going to try and keep things as close to our cost as possible.</p>
]]></content:encoded></item><item><title>Help Beta-Test a New Free eBook on PowerShell Reporting</title><link>https://powershell.org/articles/2012-11-18-help-beta-test-a-new-free-ebook-on-powershell-reporting/</link><guid>https://powershell.org/articles/2012-11-18-help-beta-test-a-new-free-ebook-on-powershell-reporting/</guid><pubDate>Sun, 18 Nov 2012 18:11:37 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;ve &lt;a href="https://powershell.org/2012/11/16/charts-in-powershell-generated-reports/" title="Charts in PowerShell-Generated Reports"&gt;written previously&lt;/a&gt; about my frustration with reporting in PowerShell - how I see admins struggle with ugly, low-level COM code to manipulate Excel spreadsheets, just so they can get nice-looking reports with a degree of automation.&lt;br&gt;
Enough.&lt;br&gt;
The &lt;em&gt;right&lt;/em&gt; thing to do is put your data in SQL Server, and use SQL Server Reporting Services to generate &lt;em&gt;awesome&lt;/em&gt; looking reports, complete with charts and graphs. With the right setup, you can completely automate data collection, report generation, and delivery. And it doesn&amp;rsquo;t have to cost &lt;em&gt;a single dime.&lt;/em&gt; Plus, the learning curve isn&amp;rsquo;t too steep, and the skills you&amp;rsquo;ll learn along the way will be &lt;em&gt;massively&lt;/em&gt; beneficial to you over the long haul - far more so than the time sunk into becoming an Excel jockey.&lt;br&gt;
So I&amp;rsquo;ve written a little book about it, which you&amp;rsquo;ll find on at &lt;a href="https://powershell.org/ebooks"&gt;https://powershell.org/ebooks&lt;/a&gt;, entitled &lt;em&gt;Making Historical and Trend Reports in PowerShell.&lt;/em&gt; Unlike my earlier book on HTML reporting, which was mainly around producing inventory reports, this one&amp;rsquo;s specifically designed to make reports based on collected-over-time data, like disk utilization, performance, and so on. And I&amp;rsquo;ve bundled in a PowerShell module that should make this &lt;em&gt;easy,&lt;/em&gt; insulating you from 99% of the SQL Server-related stuff.&lt;br&gt;
Right now (November 2012) I&amp;rsquo;m looking for folks to test stuff out and let me know (via comments here) if you find any problems. I want to make sure that what I&amp;rsquo;ve got in here works and is understandable. Final publication is scheduled for January 2013, after which I&amp;rsquo;ll start taking suggestions for stuff to add to the book.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;ve<a href="https://powershell.org/2012/11/16/charts-in-powershell-generated-reports/" title="Charts in PowerShell-Generated Reports">written previously</a> about my frustration with reporting in PowerShell - how I see admins struggle with ugly, low-level COM code to manipulate Excel spreadsheets, just so they can get nice-looking reports with a degree of automation.<br>
Enough.<br>
The<em>right</em> thing to do is put your data in SQL Server, and use SQL Server Reporting Services to generate<em>awesome</em> looking reports, complete with charts and graphs. With the right setup, you can completely automate data collection, report generation, and delivery. And it doesn&rsquo;t have to cost<em>a single dime.</em> Plus, the learning curve isn&rsquo;t too steep, and the skills you&rsquo;ll learn along the way will be<em>massively</em> beneficial to you over the long haul - far more so than the time sunk into becoming an Excel jockey.<br>
So I&rsquo;ve written a little book about it, which you&rsquo;ll find on at<a href="https://powershell.org/ebooks">https://powershell.org/ebooks</a>, entitled<em>Making Historical and Trend Reports in PowerShell.</em> Unlike my earlier book on HTML reporting, which was mainly around producing inventory reports, this one&rsquo;s specifically designed to make reports based on collected-over-time data, like disk utilization, performance, and so on. And I&rsquo;ve bundled in a PowerShell module that should make this<em>easy,</em> insulating you from 99% of the SQL Server-related stuff.<br>
Right now (November 2012) I&rsquo;m looking for folks to test stuff out and let me know (via comments here) if you find any problems. I want to make sure that what I&rsquo;ve got in here works and is understandable. Final publication is scheduled for January 2013, after which I&rsquo;ll start taking suggestions for stuff to add to the book.</p>
]]></content:encoded></item><item><title>Charts in PowerShell-Generated Reports</title><link>https://powershell.org/articles/2012-11-16-charts-in-powershell-generated-reports/</link><guid>https://powershell.org/articles/2012-11-16-charts-in-powershell-generated-reports/</guid><pubDate>Fri, 16 Nov 2012 23:09:05 +0000</pubDate><description>&lt;p&gt;So, as you may know, I have an ongoing hobby project called _Creating HTML Reports in PowerShell. _I&amp;rsquo;m working on an update for next year, and one of the things I&amp;rsquo;ve been looking at are embedded charts within the report.&lt;br&gt;
Problem is, I don&amp;rsquo;t know what people would actually chart. Now&amp;hellip; I&amp;rsquo;m going to ask you for ideas, but you need to read this whole post before you go popping a comment in. Because there are some restrictions.&lt;br&gt;
&lt;strong&gt;First&lt;/strong&gt;, I&amp;rsquo;m 
not talking about historical data or trend reports
. Those require a data store of historical data. If you&amp;rsquo;re not using SQL Server for that (even free SQL Express), learn how. Excel is 
not
your trend database, no matter how little learning it requires (and I bet if you added up all the time you&amp;rsquo;ve spent becoming an Excel jockey, you&amp;rsquo;d be shocked). Once you&amp;rsquo;ve got the data in SQL (even Express), you can use SQL Server Reporting Services (SSRS) to generate truly kick-butt reports with very little effort. Reports which can be scheduled and e-mailed. Truly, folks, this is worth spending time on - and I may make that my next ebook project.&lt;br&gt;
**Second, **don&amp;rsquo;t tell me &amp;ldquo;disk space.&amp;rdquo; I know that one. Pie and stacked bar charts showing size/free space are a great idea. Got it. Anything else?&lt;br&gt;
**Third, **I&amp;rsquo;m not talking about performance charts. PerfMon does those, and also, see my first point. PowerShell is not a performance monitoring tool. Operations Manager is. Oh, and it dumps data into SQL Server and you can use SSRS to report on it. If your company needs historical performance reports (and most probably do) and is to cheap to get you a real monitoring solution, consider taking drastic measures. I&amp;rsquo;m not suggesting you put Ex-Lax in the boss&amp;rsquo; coffee every time he asks you to re-create OpsMan on your own. He&amp;rsquo;d deserve it, and it might help, but I&amp;rsquo;m not suggesting it.&lt;br&gt;
In keeping with point 3, that means I don&amp;rsquo;t want suggestions like &amp;ldquo;charts showing network throughput.&amp;rdquo; That&amp;rsquo;s performance. I&amp;rsquo;m not suggesting such a thing wouldn&amp;rsquo;t be useful, because I know it would be. I&amp;rsquo;m saying it&amp;rsquo;s out of scope for this particular project. If you give me in-scope suggestions, I&amp;rsquo;ll build you a tool. Fire off out-of-scope stuff and I&amp;rsquo;m just going to go build a kegerator for my beer instead.&lt;br&gt;
&lt;strong&gt;SO&lt;/strong&gt;&amp;hellip; given those restrictions, what sort of data could you query from a computer (say, using WMI/CIM or something) that you&amp;rsquo;d want displayed in chart form? Anything?&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>So, as you may know, I have an ongoing hobby project called _Creating HTML Reports in PowerShell. _I&rsquo;m working on an update for next year, and one of the things I&rsquo;ve been looking at are embedded charts within the report.<br>
Problem is, I don&rsquo;t know what people would actually chart. Now&hellip; I&rsquo;m going to ask you for ideas, but you need to read this whole post before you go popping a comment in. Because there are some restrictions.<br><strong>First</strong>, I&rsquo;m 
not talking about historical data or trend reports
. Those require a data store of historical data. If you&rsquo;re not using SQL Server for that (even free SQL Express), learn how. Excel is 
not
your trend database, no matter how little learning it requires (and I bet if you added up all the time you&rsquo;ve spent becoming an Excel jockey, you&rsquo;d be shocked). Once you&rsquo;ve got the data in SQL (even Express), you can use SQL Server Reporting Services (SSRS) to generate truly kick-butt reports with very little effort. Reports which can be scheduled and e-mailed. Truly, folks, this is worth spending time on - and I may make that my next ebook project.<br>
**Second, **don&rsquo;t tell me &ldquo;disk space.&rdquo; I know that one. Pie and stacked bar charts showing size/free space are a great idea. Got it. Anything else?<br>
**Third, **I&rsquo;m not talking about performance charts. PerfMon does those, and also, see my first point. PowerShell is not a performance monitoring tool. Operations Manager is. Oh, and it dumps data into SQL Server and you can use SSRS to report on it. If your company needs historical performance reports (and most probably do) and is to cheap to get you a real monitoring solution, consider taking drastic measures. I&rsquo;m not suggesting you put Ex-Lax in the boss&rsquo; coffee every time he asks you to re-create OpsMan on your own. He&rsquo;d deserve it, and it might help, but I&rsquo;m not suggesting it.<br>
In keeping with point 3, that means I don&rsquo;t want suggestions like &ldquo;charts showing network throughput.&rdquo; That&rsquo;s performance. I&rsquo;m not suggesting such a thing wouldn&rsquo;t be useful, because I know it would be. I&rsquo;m saying it&rsquo;s out of scope for this particular project. If you give me in-scope suggestions, I&rsquo;ll build you a tool. Fire off out-of-scope stuff and I&rsquo;m just going to go build a kegerator for my beer instead.<br><strong>SO</strong>&hellip; given those restrictions, what sort of data could you query from a computer (say, using WMI/CIM or something) that you&rsquo;d want displayed in chart form? Anything?</p>
]]></content:encoded></item><item><title>Verify Your PowerShell Skills</title><link>https://powershell.org/articles/2012-11-09-verify-your-powershell-skills/</link><guid>https://powershell.org/articles/2012-11-09-verify-your-powershell-skills/</guid><pubDate>Fri, 09 Nov 2012 23:58:21 +0000</pubDate><description>&lt;p&gt;A long time ago&amp;hellip; about a year, in fact&amp;hellip; &lt;a href="http://twitter.com/thejasonhelmick"&gt;Jason Helmick&lt;/a&gt; and I started talking about a community-owned PowerShell &amp;ldquo;certification.&amp;rdquo; It went nowhere. Well, not very far.&lt;br&gt;
Some background on exams: Microsoft, in my opinion, will &lt;strong&gt;never&lt;/strong&gt; do a PowerShell cert. I say this having been part owner of a company that did outsourced exam development for the company. The deal is that Microsoft tries to certify _job tasks, _not _tools. _Nobody (well, maybe me) wakes up thinking, &amp;ldquo;gonna do me some PowerShell today.&amp;rdquo; No, PowerShell is the means to an end: &amp;ldquo;gonna automate me some user creation today&amp;rdquo; is more likely. And Microsoft tries to certify that end. PowerShell&amp;rsquo;s an important tool, and it already shows up on certification exams here and there.&lt;br&gt;
For the most part, I agree with Microsoft&amp;rsquo;s reasoning, there. The argument can be summarized as saying &amp;ldquo;bosses don&amp;rsquo;t hire IT pros based on their ability to operate a low-level tool, they hire them to perform job tasks, which &lt;em&gt;encompasses&lt;/em&gt; the tool.&amp;rdquo; Except that, in the case of PowerShell, I think it&amp;rsquo;d be &lt;em&gt;tremendously&lt;/em&gt; useful for an employer to use PowerShell expertise as a discriminating factor in hiring. I mean, &amp;ldquo;someone who can automate stuff&amp;rdquo; is more valuable than &amp;ldquo;someone who can only do stuff manually,&amp;rdquo; in any situation.&lt;br&gt;
So &amp;ldquo;PowerShell Verified&amp;rdquo; was intended to be a way for someone to prove - at least to themselves - that they&amp;rsquo;ve taken their PowerShell skills _to the minimum level necessary to be an effective automator. _Not a guru. Not an expert. Not &lt;a href="http://poshoholic.com"&gt;Poshoholic&lt;/a&gt;. _Minimally effective, _who could then grow from there with experience.&lt;br&gt;
So that&amp;rsquo;s what I&amp;rsquo;m going to put together.&lt;br&gt;
I want to explain why I&amp;rsquo;m not using the word &amp;ldquo;Certification,&amp;rdquo; though. In my mind, certifications come from, mainly, first-parties like Microsoft. Microsoft has to jump through a lot of hoops to make sure their exam content is accurate, legally defensible, blah blah blah. They worry about security, brain dumps, and other stuff that diminishes the value of the certification. I don&amp;rsquo;t have that kind of bandwidth or their resources, so in many ways my little program will be less effective than a &amp;ldquo;real&amp;rdquo; certification. Plus, few bosses will give a rat&amp;rsquo;s patooty what that Don Jones guy said about your skillz (I can&amp;rsquo;t even convince bosses to buy you guys 12-core 64GB workstations for your desk). So my &amp;ldquo;Verified&amp;rdquo; program is going to be _low stakes, _meaning you take it to prove something to _
yourself
_.&lt;br&gt;
Here&amp;rsquo;s how this is going to go.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>A long time ago&hellip; about a year, in fact&hellip;<a href="http://twitter.com/thejasonhelmick">Jason Helmick</a> and I started talking about a community-owned PowerShell &ldquo;certification.&rdquo; It went nowhere. Well, not very far.<br>
Some background on exams: Microsoft, in my opinion, will<strong>never</strong> do a PowerShell cert. I say this having been part owner of a company that did outsourced exam development for the company. The deal is that Microsoft tries to certify _job tasks, _not _tools. _Nobody (well, maybe me) wakes up thinking, &ldquo;gonna do me some PowerShell today.&rdquo; No, PowerShell is the means to an end: &ldquo;gonna automate me some user creation today&rdquo; is more likely. And Microsoft tries to certify that end. PowerShell&rsquo;s an important tool, and it already shows up on certification exams here and there.<br>
For the most part, I agree with Microsoft&rsquo;s reasoning, there. The argument can be summarized as saying &ldquo;bosses don&rsquo;t hire IT pros based on their ability to operate a low-level tool, they hire them to perform job tasks, which <em>encompasses</em> the tool.&rdquo; Except that, in the case of PowerShell, I think it&rsquo;d be <em>tremendously</em> useful for an employer to use PowerShell expertise as a discriminating factor in hiring. I mean, &ldquo;someone who can automate stuff&rdquo; is more valuable than &ldquo;someone who can only do stuff manually,&rdquo; in any situation.<br>
So &ldquo;PowerShell Verified&rdquo; was intended to be a way for someone to prove - at least to themselves - that they&rsquo;ve taken their PowerShell skills _to the minimum level necessary to be an effective automator. _Not a guru. Not an expert. Not<a href="http://poshoholic.com">Poshoholic</a>. _Minimally effective, _who could then grow from there with experience.<br>
So that&rsquo;s what I&rsquo;m going to put together.<br>
I want to explain why I&rsquo;m not using the word &ldquo;Certification,&rdquo; though. In my mind, certifications come from, mainly, first-parties like Microsoft. Microsoft has to jump through a lot of hoops to make sure their exam content is accurate, legally defensible, blah blah blah. They worry about security, brain dumps, and other stuff that diminishes the value of the certification. I don&rsquo;t have that kind of bandwidth or their resources, so in many ways my little program will be less effective than a &ldquo;real&rdquo; certification. Plus, few bosses will give a rat&rsquo;s patooty what that Don Jones guy said about your skillz (I can&rsquo;t even convince bosses to buy you guys 12-core 64GB workstations for your desk). So my &ldquo;Verified&rdquo; program is going to be _low stakes, _meaning you take it to prove something to _
yourself
_.<br>
Here&rsquo;s how this is going to go.</p><h2 id="how-you-can-help" class="ps-heading">How You Can Help<a class="ps-heading-anchor" href="#how-you-can-help" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>First, I&rsquo;m attaching a doc with the general program description. Drop a comment in here after you read it, and tell me what you think. <a href="https://powershell.org/wp-content/uploads/2012/11/PowerShellVerified.docx">PowerShellVerified</a> (it&rsquo;s a Word doc).<br>
Second, the cost on this is going to be in the neighborhood of $100. There&rsquo;s some infrastructure that has to support this, because it&rsquo;s a _practical, hands-on exam using the actual product _running in a cloud-based virtual environment. To the cloud!<br>
Third, let me know if you&rsquo;d like to participate in a LiveMeeting where I&rsquo;ll cover the general approach of the test scenario, and gather your feedback. This is appropriate mainly if you&rsquo;re pretty high-level in your org - senior IT, IT management, etc. In the comment, give me a way to contact you (Twitter&rsquo;s fine). You <strong>will</strong> be asked to sign a Nondisclosure Agreement (NDA) prior to that LiveMeeting, which will be in January sometime, I think.<br>
Fourth, let me know if you&rsquo;d like to beta test this. I&rsquo;m only taking 2-3 people for this. For logistical reasons, you need to be in the US (mainly to keep time zone coordination from becoming a hassle) and you need to have a Twitter handle. Drop that handle in a comment if you&rsquo;d like to beta. That&rsquo;ll be free.</p><h2 id="whats-tested" class="ps-heading">What&rsquo;s Tested<a class="ps-heading-anchor" href="#whats-tested" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Now, for a bit of background. This first-go will verify what I call <strong>toolmaker</strong> competency. That means you have the skills needed to write and deploy high-level tools across your organization, particularly those which involve delegated administration. The scenario <strong>will</strong> be slightly artificial, but that&rsquo;s so that it can include a number of underlying objectives that test the breadth of your PowerShell knowledge. That said, the overall skill set you&rsquo;ll have to demonstrate will be <em>very</em> real-world. No esoteric stuff, here, just techniques you&rsquo;d actually deploy for real-real. I know there are a <em>lot</em> of other things that could be tested; this is where I&rsquo;m choosing to start because I can make it relatively constrained, and therefore automate the grading process somewhat.<br>
The focus of the exam will be on _PowerShell. _Not AD, not Exchange, not anything domain-specific. The intent is PowerShell competency, not your super guru-ness with some other product.<br>
Alright. Let me know what you think.</p>]]></content:encoded></item><item><title>PhillyPoSH 11/01/2012 meeting summary and presentation materials</title><link>https://powershell.org/articles/2012-11-08-phillyposh-11012012-meeting-summary-and-presentation-materials/</link><guid>https://powershell.org/articles/2012-11-08-phillyposh-11012012-meeting-summary-and-presentation-materials/</guid><pubDate>Thu, 08 Nov 2012 13:49:49 +0000</pubDate><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://techguytj.com/"&gt;TJ Turner&lt;/a&gt; gave a demonstration of how to bring &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/hh846323(v=vs.85).aspx"&gt;Server 2012 Core&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; To [Minimal Server](http://msdn.microsoft.com/en-us/library/windows/desktop/hh846317(v=vs.85).aspx)
-
To Full GUI
-
Back down to [Core](http://msdn.microsoft.com/en-us/library/windows/desktop/hh846323(v=vs.85).aspx) again.
-
A copy of his slide deck is available [here](https://powershell.org/wp-content/uploads/2012/10/2012_11_01-PhillyPoSH.zip)
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://paglia.org/"&gt;Lido Paglia&lt;/a&gt; gave a demonstration on how to bring a fresh Server 2012 Core install to a functional domain member server using PowerShell commands. A copy of his command outline is available &lt;a href="https://powershell.org/wp-content/uploads/2012/10/2012_11_01-PhillyPoSH.zip"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Script Club :&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<ul><li><p><a href="http://techguytj.com/">TJ Turner</a> gave a demonstration of how to bring<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/hh846323(v=vs.85).aspx">Server 2012 Core</a>:</p><pre><code> To [Minimal Server](http://msdn.microsoft.com/en-us/library/windows/desktop/hh846317(v=vs.85).aspx)
-
To Full GUI
-
Back down to [Core](http://msdn.microsoft.com/en-us/library/windows/desktop/hh846323(v=vs.85).aspx) again.
-
A copy of his slide deck is available [here](https://powershell.org/wp-content/uploads/2012/10/2012_11_01-PhillyPoSH.zip)</code></pre><ul><li><p><a href="http://paglia.org/">Lido Paglia</a> gave a demonstration on how to bring a fresh Server 2012 Core install to a functional domain member server using PowerShell commands. A copy of his command outline is available<a href="https://powershell.org/wp-content/uploads/2012/10/2012_11_01-PhillyPoSH.zip">here</a></p></li><li><p>Script Club :</p><pre><code>[John Mello](http://mellositmusings.com/) presented his script that generates an email listing all ActiveSync devices that haven't synced in a specified period. A copy of his script is available [here](https://powershell.org/wp-content/uploads/2012/10/2012_11_01-PhillyPoSH.zip)</code></pre></li><li><p>Various other information worth mentioning.</p><pre><code>Only the Hype-V MMC was updated in Server 2012, No other MMCs were upgraded and no new ones will created going forward.</code></pre><ul><li><p><a href="http://coreconfig.codeplex.com/">Core Configurator</a> for Server 2008 and 2008R2 has been replaced by the<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/hh846317(v=vs.85).aspx">Minimal Server Interface</a>in 2012. Though it is unconfirmed if Core Configurator for 2008 and 2008 R2 won&rsquo;t work for 2012</p></li><li><p><a href="http://technet.microsoft.com/en-us/library/ee441254(v=WS.10).aspx">Sconfig</a> is also recommended in place of Core Configurator</p></li><li><p>The following resources and link were recommended during the meeting</p><pre><code>[PowerShell Cheat Sheets/Quick Ref Cards:](http://www.microsoft.com/en-us/download/details.aspx?id=30002)
[Additional cheat sheet links:](http://www.jonoble.com/blog/2011/12/12/powershell-quick-reference-guides-and-cheat-sheets.html)</code></pre><ul><li><p><a href="http://www.jonoble.com/blog/2012/10/24/powershell-plus-goes-free.html">PowerShell Plus from Idera is now FREE:</a></p></li><li><p><a href="http://www.powershellmagazine.com/2012/10/29/cim-cmdlets-cheat-sheet-from-the-wmi-team/">Two WMI cheat sheets from WMI team:</a></p></li><li><p><a href="http://powershellbooks.com/">Free Creating HTML reports in Windows PowerShell by Don Jones</a></p><pre><code>On the same page is the book [Learn PowerShell 3 in a Month of Lunches](http://bit.ly/PSHv3Lunch), which is highly recommended.</code></pre></li></ul></li></ul></li></ul></li></ul>
]]></content:encoded></item><item><title>Hands-on Workshop at the 2013 PowerShell Summit</title><link>https://powershell.org/articles/2012-11-06-hands-on-workshop-at-the-2013-powershell-summit/</link><guid>https://powershell.org/articles/2012-11-06-hands-on-workshop-at-the-2013-powershell-summit/</guid><pubDate>Tue, 06 Nov 2012 21:43:45 +0000</pubDate><description>&lt;p&gt;In my last post I hinted about more news coming soon for the 2013 PowerShell Summit.  In addition to the fantastic list of sessions that attendees will be able to attend, we also have a special event lined up for the last day of the event.  On Wednesday, April 24th, for the entire afternoon attendees will be able to attend a half-day Windows PowerShell scenario walkthrough, presented by the PowerShell Team.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In my last post I hinted about more news coming soon for the 2013 PowerShell Summit.  In addition to the fantastic list of sessions that attendees will be able to attend, we also have a special event lined up for the last day of the event.  On Wednesday, April 24th, for the entire afternoon attendees will be able to attend a half-day Windows PowerShell scenario walkthrough, presented by the PowerShell Team.</p><p>The event will take place on April 24 from 1pm – 5pm.  During this time the PowerShell Team will work with attendees to collectively solve a problem from the ground up using many of the new features in Windows PowerShell 3.0 and Windows Server 2012.</p><p>Starting from base Windows Server 2012 images, you will walk through:</p><ul><li>Writing a PowerShell script workflow to perform Server deployments</li><li>Creating a constrained endpoint that hosts only the deployment workflow</li><li>Delegate a set of credentials for the workflow to use</li><li>Exposing the workflow and it&rsquo;s results through a RESTful web service</li><li>Using Windows PowerShell Web Access to manage the workflow</li></ul><p>This is a BYOD event, so please don&rsquo;t forget to bring your own laptop to follow along!</p><p>The facilities we have for the conference can only accommodate 50 people at this event.  To give everyone a fair chance to sign up, on December 1st we will send an email from EventBrite to everyone who has already purchased their conference ticket so that they can then sign-up for this free event.  If you want to have a chance to attend this workshop, you will have a much better chance if you<a href="http://powershellsummit.com/">buy your ticket</a> before that date!</p><p>There will also be other activities that afternoon for those who cannot attend this event due to their travel plans, or if all of the workshop tickets are all gone. If you are able to stick around though and if you can attend this workshop, this should be a fantastic way to end the conference!</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/PowerShell+Summit">PowerShell Summit</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/830/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/830/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=830&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Special PowerShell Team Workshop to be Held at PowerShell Summit N.A. 2013</title><link>https://powershell.org/articles/2012-11-06-special-powershell-team-workshop-to-be-held-at-powershell-summit-n-a-2013/</link><guid>https://powershell.org/articles/2012-11-06-special-powershell-team-workshop-to-be-held-at-powershell-summit-n-a-2013/</guid><pubDate>Tue, 06 Nov 2012 21:32:24 +0000</pubDate><description>&lt;p&gt;To cap off the 2013 PowerShell Summit the PowerShell Team is going to host a half day Windows PowerShell scenario walkthrough. This is designed to not only familiarize folks with specific PowerShell features, but also to help the team see how you interact with these features.&lt;/p&gt;
&lt;p&gt;The event will take place on April 24 from 1pm - 5pm.  During this time we will collectively solve a problem from the ground up using many of the new features in Windows PowerShell 3.0 and Windows Server 2012.
Starting from base Windows Server 2012 images, we will walk you through:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>To cap off the 2013 PowerShell Summit the PowerShell Team is going to host a half day Windows PowerShell scenario walkthrough. This is designed to not only familiarize folks with specific PowerShell features, but also to help the team see how you interact with these features.</p><p>The event will take place on April 24 from 1pm - 5pm.  During this time we will collectively solve a problem from the ground up using many of the new features in Windows PowerShell 3.0 and Windows Server 2012.
Starting from base Windows Server 2012 images, we will walk you through:</p><pre><code>-
Writing a PowerShell script workflow to perform Server deployments
-
Creating a constrained endpoint that hosts only the deployment workflow
-
Delegate a set of credentials for the workflow to use
-
Exposing the workflow and it's results through a RESTful webservice
-
Using Windows PowerShell Web Access to manage the workflow
This is a BYOD event, so please don't forget to bring your own laptop to follow along.</code></pre><p>We can accomodate 50 people at this event. **This will be first-come, first-served registration, open only to paid attendees of the PowerShell Summit N.A. 2013. **We will e-mail the invitation code to <strong>paid attendees</strong> on December 1st (watch your e-mail; it&rsquo;ll come from EventBrite). Once the 50 slots are filled, the workshop will be closed.
If you&rsquo;re attending but don&rsquo;t get a slot in this workshop, or don&rsquo;t want to attend, then you&rsquo;ll be able to partake in some lightning-round and ad-hoc sessions in the Summit&rsquo;s other meeting room.</p>
]]></content:encoded></item><item><title>PowerShell Summit Community Sessions List [Updated]</title><link>https://powershell.org/articles/2012-11-02-powershell-summit-community-sessions-list/</link><guid>https://powershell.org/articles/2012-11-02-powershell-summit-community-sessions-list/</guid><pubDate>Fri, 02 Nov 2012 19:19:22 +0000</pubDate><description>&lt;p&gt;[Update: April 19, 2013] &lt;strong&gt;Important Note:&lt;/strong&gt; Due to some last minute schedule changes for some of our speakers, several of the sessions below were replaced with other sessions.  To see the final list of sessions offered at the 2013 PowerShell Summit, please visit this page: &lt;a href="https://powershell.org/2013/04/19/powershell-summit-2013-conference-schedule/"&gt;https://powershell.org/2013/04/19/powershell-summit-2013-conference-schedule/&lt;/a&gt;{.vt-p}&lt;/p&gt;
&lt;p&gt;After almost 100 people voted for the sessions they would like to see the most at the &lt;a href="http://powershellsummit.org/"&gt;2013 PowerShell Summit&lt;/a&gt;{.vt-p}, the results are in!  These votes are for the sessions chosen by the community, and additional sessions from the PowerShell Team will be announced at a later date (as soon as I have them).&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>[Update: April 19, 2013]<strong>Important Note:</strong> Due to some last minute schedule changes for some of our speakers, several of the sessions below were replaced with other sessions.  To see the final list of sessions offered at the 2013 PowerShell Summit, please visit this page: <a href="https://powershell.org/2013/04/19/powershell-summit-2013-conference-schedule/">https://powershell.org/2013/04/19/powershell-summit-2013-conference-schedule/</a>{.vt-p}</p><p>After almost 100 people voted for the sessions they would like to see the most at the<a href="http://powershellsummit.org/">2013 PowerShell Summit</a>{.vt-p}, the results are in!  These votes are for the sessions chosen by the community, and additional sessions from the PowerShell Team will be announced at a later date (as soon as I have them).</p><p>Below you will find the not-quite-finalized list of community sessions that will be included in the 2013 PowerShell Summit, sorted alphabetically by speaker.  It is not quite finalized because I am still awaiting final confirmation from a handful of speakers (those marked with an asterisk).  I will update this post as the final confirmations come in.</p><p>Thank you to everyone who submitted a session proposal for this conference.  There were a lot of great proposals this year, and I personally think no matter which sessions were voted for, the conference would have been fantastic.  Also thank you to anyone who took the time to vote for their favorite sessions.  Your votes really helped us a lot here, both for the upcoming 2013 conference and for conferences we"™ll be planning in the future too!</p><p>If you would like to attend this conference so that you can learn from these great sessions and others that are not yet announced, and so that you can participate in the fantastic conversations that happen at such an event, you can purchase your ticket here:<a href="https://powershell.org/summit/">https://powershell.org/summit/</a>{.vt-p}.</p><p>Here is the list of sessions that made the final cut:</p><pre><code> Speaker
Title
Description
June Blender
Help for Help: A Help Authoring Deep Dive
A comprehensive 400-level talk for module authors about authoring techniques for all types of Windows PowerShell Help, including About help and help for all command types, including cmdlets (and the MAML schema), scripts, functions, CIM commands, workflows (script and XAML), providers (including custom cmdlet help), and snippets. What you can and cannot do, and what's worth doing when time and resources are short. We'll cover online help, Updatable Help, and all the gotchas (HelpInfo XML, HelpInfoUri, HelpUri, CHMs), and I'll share the scripts that I use to generate help files and verify the accuracy of parameters, parameter values, parameter attributes, GUIDs, and URIs.
James Brundage*
The Powers of PowerShell Pipeworks
Ever wanted to make PowerShell easy for others? Or realize that a simple script you have would be a great backbone of a business (if only you could charge for it)? PowerShell Pipeworks is a web platform built in PowerShell that makes is simple to build compelling web applications and software services in a snap. In this session, you will see: – How to use Pipeworks to store your data to the cloud – How to create a monitoring dashboard with Pipeworks – How to build a Facebook application with PowerShell Pipeworks – How to put a price tag on a cmdlet
Ian Davis
Metaprogramming PowerShell
PowerShell can be a fun and crazy language to use, but we can take it a step further with metaprogramming. By taking advantage of PowerShell's flexible language features including dynamic scoping, modules, deferred evaluation, and ScriptBlocks, we can create simple and powerful applications applications leveraging metaprogramming idioms.
Ian Davis
Automated Builds With PowerShell
Automated builds are a critical part of application lifecycle management. PowerShell is very well suited for making this process easier. We have gone full circle with scripting builds and by leveraging PowerShell on the command line and building DSLs, our builds can be more robust and intuitive than ever.
Adam Driscoll
Inside PowerShell: Abstract Syntax Tree Manipulation
In this session we will take apart PowerShell. This session will highlight the new abstract syntax tree and node visitor API that is exposed in v3. An instrumentation profiler will be used as an example of how to traverse and manipulate PowerShell scripts from within the engine.
Adam Driscoll
.NET Reverse Engineering with PowerShell
In this session we will look at how to utilize ILSpy to decompile .NET assemblies and quickly access internal aspects of them using PowerShell. We will see how to easily expose private members for access and manipulation within scripts. Adam Driscoll
Jeffery Hicks
Adding a GUI to PowerShell without WinForms
Graphical PowerShell scripts seem all the rage these days. But most often that means using Windows Forms which can be very tedious to work with. But that is not the only game in town. Depending on your requirements there are a number of techniques you can use to add graphical elements to your PowerShell scripts. This session will explore how to create message boxes, input forms and more, all without a single Windows Form. If you are just getting started with writing PowerShell scripts, you'll find these techniques simple to use, plus there will be plenty of sample code for all!
Don Jones
Workflow Walkthrough
It seems like everyone's interested in v3′s new Workflow feature, so let's do a quick walkthrough of building one from scratch. We'll skip the usual "provisioning" example and go for something a bit more constrained, and perhaps real-world, where workflow's unique features can really be put to solid use. This'll also be an opportunity to discuss what workflow can and can't do, and discuss some of the options and permutations of using it.
Don Jones
Remoting Configuration Deep Dive
What do you do when Enable-PSRemoting isn't enough? Dig deeper. We'll run through all of the major configuration scenarios, including how to use (and not abuse) TrustedHosts, how to set up an HTTPS listener (and use it), how to do non-domain authentication, how to enable CredSSP and configure it to be less than a major security hole, and more. Pretty much every possible Remoting config, we'll cover. With detailed, step-by-step instructions!
Kirk Munro
Creating Add-on Tools for PowerShell ISE
PowerShell 3 includes a ton of improvements to the integrated scripting editor, PowerShell ISE. As great as PowerShell ISE is in this version, there is still a lot of room for improvement. Fortunately, Microsoft anticipated that they wouldn't be able to do everything, so they extended their support for creating Add-on Tools for PowerShell ISE.In this session, the worlds first self-proclaimed Poshoholic and PowerShell MVP Kirk Munro will provide a soup to nuts demonstration of PowerShell ISE Add-on Tools, showing how you can create everything from simple menu extensions to feature rich windows that respond to ISE events and that are docked right inside of the ISE.
Technologies covered in this session include the PowerShell ISE object model, C#, WPF, eventing, Visual Studio 2012, and of course several core PowerShell features.
Kirk Munro
Authoring PowerShell like a Poshoholic
I've been using PowerShell for over 6 years. Blogging about it for over 5 years. Creating and managing products based on PowerShell for about that long as well, and writing a whole lot of scripts during the process. During this time I've come up with a trick or three to make that work easier. Some of these tricks are simple time savers, while others are ground breaking opportunities that just might change the way you write PowerShell.Come and join me in this session to get a bird's eye view at some of the work I've been doing with PowerShell, as I talk about tips, tricks, and best practices while demonstrating some of the extensions I've written specifically to make authoring with PowerShell easier to do.
Topics discussed include proxy functions, WMI/CIM, Microsoft Office, DSVs, WiX, merge modules, type accelerators, and more.
Aleksandar Nikolic
How to Delegate Administration and Customize PowerShell Session Configuration
In this session you will learn how to customize PowerShell session configuration, and then use it to assign specific administrative tasks to the appropriate users and groups without changing the membership of local Administrators group. By using new Windows PowerShell and Windows Remote Management 3.0 capabilities we will enable dynamic creation of customized automation environments that users can access through the Windows PowerShell Web Access.
Aleksandar Nikolic
Configuring Your Windows PowerShell Workflow Environment
In this session you will learn how to set up your environment to run Windows PowerShell workflows. We will discuss different workflow configurations, how to prepare computers to run workflows, what is workflow session configuration and how to customize it. At the end, you will learn how to properly run your Windows PowerShell workflows.
Aleksandar Nikolic
Build Your Demo Environment or a Test Lab with Windows PowerShell
With Windows PowerShell 3.0 and the new Client Hyper-V available in Windows 8, it is so easy, and fun, to automate creation of your demo environment or a test lab infrastructure. You can easily convert ISO files to VHDs, deploy your VMs and configure networking and storage. Join us for this demo-heavy session to see all the steps.
Alan Renouf
Creating a complex and reusable HTML reporting structure
In this session I will show you the shortcuts and tricks picked up when creating a complex reporting structure with PowerShell, how a simple HTML output script grew to be a reporting structure which can adapt to give detailed, nicely formatted reports on any application or system that has a PowerShell interface, and even some that don't!
Alan Renouf
Practical PowerShell Integration from Bare Metal to the Cloud
See how PowerShell can be used as the glue of the datacenter, take information from VMware, Cisco and Microsoft, Glue them all together and go from bare metal up to the cloud and beyond. Learn how PowerShell is now expanding to be the language of choice and how Microsoft and third party products can be tied together to create fantastic solutions.
Andy Schneider
PowerShell and Source Control for the IT Pro
Are you ever concerned about updating a script, having it break, and can't remember what you changed. This is source control by an IT Pro for IT Pros. Come check out some best practices and lessons learned on how to incorporate source control as part of writing scripts. Learn how to have your code available via the web and easily accessed on multiple machines. We'll take a look at using GIT to ensure your code is always up to date and you can always get back to where you were if you break something.
Andy Schneider
PowerShell and Active Directory
This session will provide a quick overview of different options to manage AD using PowerShell. It will quickly jump into some of the shortcomings of the MSFT provided Active Directory module and how to work around them, and even "fix" them using proxy functions and the new Default Parameter Set feature in V3.
Richard Siddaway
CIM sessions
The introduction of the CIM cmdlets and "cmdlets over objects" in PowerShell v3 provide new ways to work with WMI. In addition, they bring a new way to access remote systems ? CIM sessions. Analogous to PowerShell remoting sessions they provide a new flexibility when working with WMI and remote machines. This session will demonstrate:</code></pre><ul><li><p>How to use CIM sessions against systems running PowerShell v3</p></li><li><p>How to work with legacy installations of PowerShell v2</p></li><li><p>How to use the available CIM session options to configure the session to meet your requirements</p></li><li><p>Compare and contrast working with WMI, CIM and WSMAN cmdlets against remote machines to illustrate the strengths and weaknesses of each</p></li><li><p>How to mix and match CIM sessions using WSMAN and DCOM.The key takeaways from this session will be:</p></li><li><p>The CIM cmdlets provide a new way to access WMI</p></li><li><p>WSMAN is required knowledge</p></li><li><p>WSMAN and DCOM can both be used with the CIM cmdlets</p></li><li><p>CIM sessions are easy to use and very powerful</p></li><li><p>No more DCOM problems</p><pre><code> Richard Siddaway
PowerShell Web Access
PowerShell Web Access is a new feature in Windows Server 2012 that provides a web based PowerShell console. You don't need PowerShell on your client to administer remote machines as long as you have PWA. This session will demonstrate how to configure PWA, its strengths and weaknesses – you might even see PowerShell being accessed from a non-Windows machine! The security implications of PWA will be discussed. PWA will be compared to other ways to access remote machines through PowerShell including PS Remoting and CIM sessions.
Richard Siddaway
PowerShell events
The PowerShell event engine enables you to work with .NET; WMI and PowerShell engine events. What are these and how do they work? What can I do with them? Want to stop a process that shouldn't be running? Want to start a process that's stopped? That's what this session will show you with PowerShell events.
Ed Wilson
Write modules, not scripts
Learn how to get the most from Windows PowerShell by learning a simple five-step method to transform your Windows PowerShell code into a highly reusable module. This presentation is a live demo that begins with a single line of Windows PowerShell code, transforms the code into a function, adds comment based help to the function, and converts it into a module. Next, the installation and discovery of Windows PowerShell modules is covered, as is updating the module and creating a Windows PowerShell module manifest. Ed Wilson
Ed Wilson
What I learned by grading 2000 PowerShell Scripts in the 2012 Scripting Games
The 2012 Scripting Games attracted both experienced and novice scripters from more than 100 countries around the world. In grading the 2000 submitted scripts, I noticed a common theme emerged. Some of the things that were consistently confused by both beginners and advanced scripters include the following: failure to return objects from functions, not creating reusable functions, spending too much duplicating capabilities of native PowerShell, using meaningless comments, omission of error handling, and an overreliance on Write-Host. In this session, I will address each of these areas of concern and show both good and bad examples from the games. A thorough discussion of each of these topics rounds out the presentation. This presentation uses live demos to illustrate the techniques that are discussed. Ed Wilson
Ed Wilson
PoshMon: PowerShell does performance counters
One of the cool features on Windows PowerShell 3.0 is easy consumption of WMI performance counters into Windows PowerShell. In the past, leveraging these performance counters meant writing long lines of cryptic code, calling refresher objects, and dealing with weird timestamp issues. But no more! Using a simple cmdlet, Windows PowerShell throws open the door to the treasure trove of performance counter information. But where does the oversubscribed IT pro begin? A question on my Windows NT 3.51 MCSE exam stated there are four areas for performance monitoring: disk, memory, network, and CPU. These four resources have not changed much, regardless of the application these basic areas of investigation still ring true. In this session, I talk about discovering performance counters, using performance counters, and storing information gathered from performance counters. The talk will be strengthened by live demos at each stage of the presentation.
Matt Wrock*
Unit Testing PowerShell
This talk will provide a walk through of Unit Testing PowerShell scripts. The OSS project Pester ([https://github.com/pester/Pester](https://github.com/pester/Pester)) will be used to illustrate popular unit testing patterns such as ArrangeActAssert and Mocking to provide testability to PowerShell. There will be discussion on why and when to use unit testing in PowerShell as well.
Keep an eye on my blog for additional news about this conference, because more exciting news is on the way!
Thanks,
Kirk out.
Technorati Tags: [PowerShell](http://technorati.com/tags/PowerShell),[PoSh](http://technorati.com/tags/PoSh),[Poshoholic](http://technorati.com/tags/Poshoholic),[PowerShell Summit](http://technorati.com/tags/PowerShell+Summit)
[![](http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/824/)](http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/824/) ![](http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=824&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1)</code></pre></li></ul>
]]></content:encoded></item><item><title>Final Ticket Inventory for PowerShell Summit NA 2013 Released!</title><link>https://powershell.org/articles/2012-11-02-final-ticket-inventory-for-powershell-summit-na-2013-released/</link><guid>https://powershell.org/articles/2012-11-02-final-ticket-inventory-for-powershell-summit-na-2013-released/</guid><pubDate>Fri, 02 Nov 2012 15:24:26 +0000</pubDate><description>&lt;p&gt;As we&amp;rsquo;ve been finalizing our speaker and session collection, we&amp;rsquo;ve been able to release a small block of Summit tickets into the general admission pool. Also, the end of October saw the expiration of a set-aside block for PowerShell MVPs, releasing that block&amp;rsquo;s unsold tickets back into the general admission pool as well.&lt;br&gt;
As it stands, the G.A. pool now has 57 tickets, of which we&amp;rsquo;ve sold 24. That leaves 33 tickets left for the April 22-24 event at Microsoft&amp;rsquo;s corporate headquarters in Redmond, WA.&lt;br&gt;
We currently have a total of 57 attendees, including speakers. That doesn&amp;rsquo;t include Microsoft team members who will be delivering sessions, nor does it include a small batch of tickets reserved for Microsoft staff who will be participating in the sessions for all three days.&lt;br&gt;
If you&amp;rsquo;re thinking of coming to the Summit, **now is the time to register. **We&amp;rsquo;ll be releasing our session and speaker lineup within the next few days, and that usually triggers a big rush in registration as people get even more exciting about the upcoming event. If you do happen to miss one of these final 33 tickets, you&amp;rsquo;ll have the opportunity to go on a waitlist, where you&amp;rsquo;ll be notified if anyone cancels.&lt;br&gt;
&lt;strong&gt;Don&amp;rsquo;t miss your chance to be a part of this first-ever community-owned and -operated event!&lt;/strong&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As we&rsquo;ve been finalizing our speaker and session collection, we&rsquo;ve been able to release a small block of Summit tickets into the general admission pool. Also, the end of October saw the expiration of a set-aside block for PowerShell MVPs, releasing that block&rsquo;s unsold tickets back into the general admission pool as well.<br>
As it stands, the G.A. pool now has 57 tickets, of which we&rsquo;ve sold 24. That leaves 33 tickets left for the April 22-24 event at Microsoft&rsquo;s corporate headquarters in Redmond, WA.<br>
We currently have a total of 57 attendees, including speakers. That doesn&rsquo;t include Microsoft team members who will be delivering sessions, nor does it include a small batch of tickets reserved for Microsoft staff who will be participating in the sessions for all three days.<br>
If you&rsquo;re thinking of coming to the Summit, **now is the time to register. **We&rsquo;ll be releasing our session and speaker lineup within the next few days, and that usually triggers a big rush in registration as people get even more exciting about the upcoming event. If you do happen to miss one of these final 33 tickets, you&rsquo;ll have the opportunity to go on a waitlist, where you&rsquo;ll be notified if anyone cancels.<br><strong>Don&rsquo;t miss your chance to be a part of this first-ever community-owned and -operated event!</strong></p>
]]></content:encoded></item><item><title>Idera's PowerShell Plus Editor Now Free for All</title><link>https://powershell.org/articles/2012-10-28-ideras-powershell-plus-editor-now-free-for-all/</link><guid>https://powershell.org/articles/2012-10-28-ideras-powershell-plus-editor-now-free-for-all/</guid><pubDate>Sun, 28 Oct 2012 16:30:32 +0000</pubDate><description>&lt;p&gt;Idera&amp;rsquo;s gone and made PowerShell Plus free. Given that it&amp;rsquo;s been updated to support PowerShell v3, this will probably become many folks&amp;rsquo; go-to editor (PowerGUI, the former champ, is more or less out of development and hasn&amp;rsquo;t been updated for v3).&lt;br&gt;
Idera says:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;ldquo;Idera is dedicated to providing products that help our customers and community members be successful in their jobs,&amp;rdquo; said Rick Pleczko, CEO of Idera. &amp;ldquo;PowerShell Plus is a proven and essential productivity tool so we wanted to get it into the hands of IT professionals everywhere. It also complements our sponsorship of the PowerShell.com community, which features forums and resources for novice to advanced PowerShell users.&amp;rdquo;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Idera&rsquo;s gone and made PowerShell Plus free. Given that it&rsquo;s been updated to support PowerShell v3, this will probably become many folks&rsquo; go-to editor (PowerGUI, the former champ, is more or less out of development and hasn&rsquo;t been updated for v3).<br>
Idera says:</p><blockquote><p>&ldquo;Idera is dedicated to providing products that help our customers and community members be successful in their jobs,&rdquo; said Rick Pleczko, CEO of Idera. &ldquo;PowerShell Plus is a proven and essential productivity tool so we wanted to get it into the hands of IT professionals everywhere. It also complements our sponsorship of the PowerShell.com community, which features forums and resources for novice to advanced PowerShell users.&rdquo;</p></blockquote><p>Idera runs<a href="http://powershell.com">PowerShell.com</a>, which features a bevy of Q&amp;A forums and daily &ldquo;PowerTips.&rdquo; Regarding PowerShell Plus:</p><blockquote><p>PowerShell Plus features a powerful interactive console, an advanced script editor and debugger, and a comprehensive interactive learning center integrated into a single product. It helps administrators and developers quickly learn and master PowerShell, while also dramatically increasing the productivity of expert users. The new version, PowerShell Plus 4.6, has been certified on Windows 8. It includes revised and expanded script libraries for SQL Server and SharePoint 2010. Additionally, the System Explorer now features SQL Server and Share Point 2010 plug-ins that help manage SQL Server instances and SharePoint 2010 farms.</p></blockquote><p>You can read the entire press release, and access the download page, on<a href="http://www.idera.com/News/?NewsCategory=0&amp;ID=482">Idera&rsquo;s Web site</a>.</p>
]]></content:encoded></item><item><title>PowerShell v3's New Simplified Syntax</title><link>https://powershell.org/articles/2012-10-26-powershell-v3s-new-simplified-syntax/</link><guid>https://powershell.org/articles/2012-10-26-powershell-v3s-new-simplified-syntax/</guid><pubDate>Fri, 26 Oct 2012 18:02:31 +0000</pubDate><description>&lt;p&gt;One of the ballyhooed new features in PowerShell v3 is the new &amp;ldquo;simplified&amp;rdquo; syntax for Where-Object and ForEach-Object. I&amp;rsquo;m going to focus on the former for this article. In essence, instead of doing this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Get-Service | Where-Object { $_.Status -eq 'Running' } &lt;/code&gt;You can now do this also:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Get-Service | Where Status -eq Running &lt;/code&gt;Last week, I had the opportunity to include this new syntax in a class I was teaching - mainly to beginners - and I came away with mixed feelings. Whereas once I&amp;rsquo;d felt awesome about the new syntax&amp;hellip; now I&amp;rsquo;m conflicted.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>One of the ballyhooed new features in PowerShell v3 is the new &ldquo;simplified&rdquo; syntax for Where-Object and ForEach-Object. I&rsquo;m going to focus on the former for this article. In essence, instead of doing this:</p><p><code>Get-Service | Where-Object { $_.Status -eq 'Running' }</code>You can now do this also:</p><p><code>Get-Service | Where Status -eq Running</code>Last week, I had the opportunity to include this new syntax in a class I was teaching - mainly to beginners - and I came away with mixed feelings. Whereas once I&rsquo;d felt awesome about the new syntax&hellip; now I&rsquo;m conflicted.</p><h2 id="a-caveat" class="ps-heading">A Caveat<a class="ps-heading-anchor" href="#a-caveat" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>I want to point out up front that my upcoming comments are confined to a pretty tight scenario: Teaching newcomers to PowerShell. I&rsquo;m not sure if these feelings apply universally. I&rsquo;m also not trying to beat up on Microsoft&rsquo;s PowerShell team with this article; instead, I&rsquo;m trying to provide a discussion. I&rsquo;m also hopeful that this article can help clear up some confusion for anyone who experiences the same confusion my students did.</p><h2 id="simplified-or-complexified" class="ps-heading">Simplified or Complexified?<a class="ps-heading-anchor" href="#simplified-or-complexified" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>First, understand that this new syntax <strong>is not</strong> a &ldquo;simplified&rdquo; syntax; it&rsquo;s an <em>additional</em> syntax. The old syntax hasn&rsquo;t been cleaned up in any way, and it hasn&rsquo;t gone away; it&rsquo;s been joined by a new compatriot. This presents a teaching challenge: Now, rather than teaching <em>one</em> syntax and helping students get through it, I have to teach _two. _After all, they&rsquo;re going to encounter both &ldquo;in the wild,&rdquo; and there are six years of the &ldquo;old&rdquo; syntax out there in blogs and examples and whatnot. So the addition of a second syntax doesn&rsquo;t lower the learning barrier; it <em>raises</em> it. That&rsquo;s because, without introducing a breaking change in the product, <em>you can&rsquo;t fix syntax once it&rsquo;s out there.</em></p><h2 id="limitations" class="ps-heading">Limitations<a class="ps-heading-anchor" href="#limitations" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>I also have to continue teaching the &ldquo;original&rdquo; syntax because the &ldquo;simplified&rdquo; syntax is limited to just one expression: this equals that (or not equals, or whatever). You can&rsquo;t, in other words, do this:</p><p><code>Get-WmiObject Win32_Service | Where State -ne 'Running' -and StartMode -eq 'Auto'</code>Only the &ldquo;old&rdquo; syntax supports expressions with more than one operator. And don&rsquo;t think my students didn&rsquo;t try the above - they did, despite explicit explanations up front that it wouldn&rsquo;t work. The problem is that, especially in a class, students are getting so much thrown at them that their brains instinctively attempt to simplify. &ldquo;Ok, if there&rsquo;s two syntaxes, and one has ugly { $_ } garbage in it, I&rsquo;ll focus on the other one.&rdquo; Problem is, that other one won&rsquo;t get you through the whole day.<br>
In fact, I&rsquo;m seriously considering, for my next class, <em>not</em> teaching the &ldquo;simplified&rdquo; syntax right away. I&rsquo;ll stick with the old one, because it&rsquo;s <em>one</em> way I can teach that will <em>always</em> work. Yeah, the $_ is ugly - but you have to know that $_ thing in so many other places, that I&rsquo;ve gotta get students past it anyway. I&rsquo;ll show them the &ldquo;simplified&rdquo; syntax, for sure, but probably later in class after they&rsquo;ve mastered the old one.<br><strong>Help Files</strong><br>
My big pain is that the &ldquo;simplified&rdquo; syntax has made a wreck of the help file for Where-Object. It used to be a simple syntax section: One parameter set, with really only one parameter: -FilterScript. Now it&rsquo;s an unholy mess.<br>
Here&rsquo;s why: the new syntax is really a hack, which takes advantage of the fact that both PowerShell operators (like -eq) and parameters (like -property) look alike. They both start with a dash. The new syntax:</p><p><code>Get-Service | Where Status -eq Running</code> Really means this:</p><p><code>Get-Service | Where -Property Status -eq -Value Running</code>You&rsquo;ve got three parameters on Where-Object: -Property, -Value, and -eq, with -eq being a switch parameter that accepts no value. That means this is equally valid:</p><p><code>Get-Service | Where -eq -Value Running -Property Status</code>Since named parameters can come in any order. The upshot of this is that the help file for Where-Object now has to list a bazillion parameter sets, each with a different &ldquo;operator&rdquo; parameter:</p><p><a href="https://powershell.org/wp-content/uploads/2012/10/VMware-FusionScreenSnapz001.png"><img src="https://powershell.org/wp-content/uploads/2012/10/VMware-FusionScreenSnapz001-300x258.png" alt="">
(</a>Click for larger)</p><p>Barf. The problem is that the help file is <em>syntactically</em> correct, but it is <em>semantically</em> wrong, meaning it doesn&rsquo;t accurately reflect the <em>meaning</em> of the command. I&rsquo;m whined about this to a friend on the PowerShell help team, and they - quite accurately - noted that the help file needed to be syntactically accurate. They also suggested that beginners should be focusing on the excellent Description section of the help file, which better explains the meaning. Okay&hellip; but the Syntax section takes up two screenfuls, and appears before the Description. People tend to read top-down. I caught one of my students trying to do this:`Get-Service | Where $_ -eq Running -Property Status[/property]</p><p>Before I said, &ldquo;Ok, enough, no more playing with the new syntax, everyone back into the {curly bracket} pool.&rdquo;</p><h2 id="inconclusion" class="ps-heading">Inconclusion<a class="ps-heading-anchor" href="#inconclusion" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>That&rsquo;s an accurate heading - I didn&rsquo;t mean &ldquo;in conclusion.&rdquo; I&rsquo;m actually knotted up about this. I totally get, and appreciate, what the team was trying to do with this syntax. Someone accustomed to PowerShell can probably reel off the new syntax with no issues, and love the fact that they have to type a whole five fewer characters. But &ldquo;simplified&rdquo; suggests that the feature was meant to help beginners - and I&rsquo;m not sure it does. It&rsquo;s like giving a kid training wheels on their bike: Sooner or later, those have to come off, and they haven&rsquo;t necessarily prepared you for the big-boy world.<br>
What&rsquo;re your thoughts? I&rsquo;m genuinely interested, especially if you have some experience with <em>newcomers</em> encountering the new syntax. There&rsquo;s no argument that it&rsquo;s easier <em>to begin with</em> - it just doesn&rsquo;t take you very far before you have to &ldquo;grow up&rdquo; to the &ldquo;real&rdquo; syntax anyway, so I&rsquo;m not sure it&rsquo;s a &ldquo;win&rdquo; from an educational perspective.</p>
]]></content:encoded></item><item><title>If you haven't *watched* the PowerScripting Podcast…</title><link>https://powershell.org/articles/2012-10-26-if-you-havent-watched-the-powerscripting-podcast/</link><guid>https://powershell.org/articles/2012-10-26-if-you-havent-watched-the-powerscripting-podcast/</guid><pubDate>Fri, 26 Oct 2012 15:11:46 +0000</pubDate><description>&lt;p&gt;For more than 200 weeks now (there&amp;rsquo;s an episode a week), Jon Walz and Hal Rottenberg have been bringing us the &lt;a href="http://powerscripting.wordpress.com"&gt;PowerScripting Podcast&lt;/a&gt;. It&amp;rsquo;s become an almost official &amp;ldquo;voice&amp;rdquo; of and for the PowerShell community. In it, the two don&amp;rsquo;t focus much on technical tips or anything like that. Instead, the highlight is a weekly interview with a mover and shaker in the PowerShell community. For me, they put a &lt;em&gt;face&lt;/em&gt; on the community. One week you&amp;rsquo;re talking to the inventor of PowerShell, the next to a local user group leader who&amp;rsquo;s helping educate folks in his area, and the next an ISV who&amp;rsquo;s building PowerShell into their products. It&amp;rsquo;s Larry King Does PowerShell.&lt;br&gt;
If you&amp;rsquo;ve listened to the podcast, you know what I&amp;rsquo;m talking about here. But, if you&amp;rsquo;ve &lt;em&gt;only&lt;/em&gt; listened to the podcast, you&amp;rsquo;re missing half the show. Maybe more. You see, on most Thursday nights at 9:30pm (US Eastern), Hal and Jon record the show live. With webcams. And a chat room.&lt;br&gt;
&lt;a href="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz001.png"&gt;&lt;img src="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz001-300x117.png" alt=""&gt;
(click for larger)
&lt;/a&gt;&lt;br&gt;
This is where the podcast goes from being a hobby and into being a truly vital piece of community connective tissue. Pop into the chatroom and regulars, like the Scripting Wife, offer a &amp;ldquo;hello!&amp;rdquo; It&amp;rsquo;s a weekly clubhouse of sorts, where the chatroom conversations parallel the webcast, but also diverge onto tangents. It&amp;rsquo;s where you can offer up questions for the current speaker. It&amp;rsquo;s where you play drinking games (anytime Snover says &amp;ldquo;ecosystem,&amp;rdquo; drink!). And, when I&amp;rsquo;m the featured speaker, as I&amp;rsquo;m privileged to be a couple of times a year, it&amp;rsquo;s where you egg me on in my rant-of-the-season.&lt;br&gt;
&lt;a href="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz002.png"&gt;&lt;img src="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz002-300x117.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
I&amp;rsquo;m going to share a little secret that most software developers already know: _Community counts. _It isn&amp;rsquo;t just a word, or some marketing slogan. The ability to make connections with people in a similar boat - via Twitter, e-mail, &lt;a href="https://powershell.org/discuss"&gt;forums&lt;/a&gt;, or a podcast recording - is important. For many IT pros, IT per se isn&amp;rsquo;t our personal passion. It&amp;rsquo;s a job. And so it&amp;rsquo;s easy, at the end of the workday, to go home and do our &lt;em&gt;real&lt;/em&gt; passion - be with family, play Xbox, or whatever. So IT pro communities have traditionally never been as robust as developer communities. But _make the effort. _Community is how you&amp;rsquo;ll meet the guy (or gal) who has the solution to your next problem, and will share it free for the asking. Community is where your next job will probably come from. Community is, in fact, your _meta-career, _spanning employers and projects and giving you a foundation to really succeed in this business. The colleagues you meet through community will become, over time, more important to your personal success than your direct coworkers.&lt;br&gt;
In fact, PowerShell.org itself wouldn&amp;rsquo;t exist without the strong community connections Kirk Munro and I have made over the years.&lt;br&gt;
Giving up an evening with the family to go to a local user group meeting can be tough, if there&amp;rsquo;s even one in your area. You should do it anyway. But if you can&amp;rsquo;t, Hal and Jon have created a sort of virtual user group where you can connect with _people, _not just learn about technology. Trust me, the first time someone like Jeffrey Snover recognized me in-person and said &amp;ldquo;hi,&amp;rdquo; I got a little thrill - and it was because of opportunities like the PowerScripting Podcast that he got to know me. Much of my success in the IT field has some through community and connectedness, and I heartily recommend it to anyone.&lt;br&gt;
Hope to see you in the chatroom!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>For more than 200 weeks now (there&rsquo;s an episode a week), Jon Walz and Hal Rottenberg have been bringing us the<a href="http://powerscripting.wordpress.com">PowerScripting Podcast</a>. It&rsquo;s become an almost official &ldquo;voice&rdquo; of and for the PowerShell community. In it, the two don&rsquo;t focus much on technical tips or anything like that. Instead, the highlight is a weekly interview with a mover and shaker in the PowerShell community. For me, they put a <em>face</em> on the community. One week you&rsquo;re talking to the inventor of PowerShell, the next to a local user group leader who&rsquo;s helping educate folks in his area, and the next an ISV who&rsquo;s building PowerShell into their products. It&rsquo;s Larry King Does PowerShell.<br>
If you&rsquo;ve listened to the podcast, you know what I&rsquo;m talking about here. But, if you&rsquo;ve <em>only</em> listened to the podcast, you&rsquo;re missing half the show. Maybe more. You see, on most Thursday nights at 9:30pm (US Eastern), Hal and Jon record the show live. With webcams. And a chat room.<br><a href="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz001.png"><img src="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz001-300x117.png" alt="">
(click for larger)</a><br>
This is where the podcast goes from being a hobby and into being a truly vital piece of community connective tissue. Pop into the chatroom and regulars, like the Scripting Wife, offer a &ldquo;hello!&rdquo; It&rsquo;s a weekly clubhouse of sorts, where the chatroom conversations parallel the webcast, but also diverge onto tangents. It&rsquo;s where you can offer up questions for the current speaker. It&rsquo;s where you play drinking games (anytime Snover says &ldquo;ecosystem,&rdquo; drink!). And, when I&rsquo;m the featured speaker, as I&rsquo;m privileged to be a couple of times a year, it&rsquo;s where you egg me on in my rant-of-the-season.<br><a href="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz002.png"><img src="https://powershell.org/wp-content/uploads/2012/10/ColloquyScreenSnapz002-300x117.png" alt=""/><br>
I&rsquo;m going to share a little secret that most software developers already know: _Community counts. _It isn&rsquo;t just a word, or some marketing slogan. The ability to make connections with people in a similar boat - via Twitter, e-mail,<a href="https://powershell.org/discuss">forums</a>, or a podcast recording - is important. For many IT pros, IT per se isn&rsquo;t our personal passion. It&rsquo;s a job. And so it&rsquo;s easy, at the end of the workday, to go home and do our <em>real</em> passion - be with family, play Xbox, or whatever. So IT pro communities have traditionally never been as robust as developer communities. But _make the effort. _Community is how you&rsquo;ll meet the guy (or gal) who has the solution to your next problem, and will share it free for the asking. Community is where your next job will probably come from. Community is, in fact, your _meta-career, _spanning employers and projects and giving you a foundation to really succeed in this business. The colleagues you meet through community will become, over time, more important to your personal success than your direct coworkers.<br>
In fact, PowerShell.org itself wouldn&rsquo;t exist without the strong community connections Kirk Munro and I have made over the years.<br>
Giving up an evening with the family to go to a local user group meeting can be tough, if there&rsquo;s even one in your area. You should do it anyway. But if you can&rsquo;t, Hal and Jon have created a sort of virtual user group where you can connect with _people, _not just learn about technology. Trust me, the first time someone like Jeffrey Snover recognized me in-person and said &ldquo;hi,&rdquo; I got a little thrill - and it was because of opportunities like the PowerScripting Podcast that he got to know me. Much of my success in the IT field has some through community and connectedness, and I heartily recommend it to anyone.<br>
Hope to see you in the chatroom!</p>
]]></content:encoded></item><item><title>Free eBook: Creating HTML Reports in PowerShell</title><link>https://powershell.org/articles/2012-10-24-free-ebook-creating-html-reports-in-powershell/</link><guid>https://powershell.org/articles/2012-10-24-free-ebook-creating-html-reports-in-powershell/</guid><pubDate>Wed, 24 Oct 2012 19:52:35 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;ve written a new, short, totally free eBook that explains how to build multi-sectional HTML reports in Windows PowerShell. This is something I&amp;rsquo;ll be building on in the future, as I have time, to add additional formatting capabilities, and even interactivity. But what&amp;rsquo;s there now should be a great start! Check it out and let me know what you think.&lt;br&gt;
It&amp;rsquo;s on the free ebook list at &lt;a href="https://powershell.org/ebooks"&gt;https://powershell.org/ebooks&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;ve written a new, short, totally free eBook that explains how to build multi-sectional HTML reports in Windows PowerShell. This is something I&rsquo;ll be building on in the future, as I have time, to add additional formatting capabilities, and even interactivity. But what&rsquo;s there now should be a great start! Check it out and let me know what you think.<br>
It&rsquo;s on the free ebook list at<a href="https://powershell.org/ebooks">https://powershell.org/ebooks</a>.</p>
]]></content:encoded></item><item><title>"Secrets of PowerShell Remoting" Updated – Help Check the Beta!</title><link>https://powershell.org/articles/2012-10-23-secrets-of-powershell-remoting-updated-help-check-the-beta/</link><guid>https://powershell.org/articles/2012-10-23-secrets-of-powershell-remoting-updated-help-check-the-beta/</guid><pubDate>Tue, 23 Oct 2012 18:35:23 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;ve finished updating a new revision of _Secrets of PowerShell Remoting; _you&amp;rsquo;ll find PDF and EPUB versions attached to this post in a ZIP file. Note that these are &amp;ldquo;check builds,&amp;rdquo; meaning I&amp;rsquo;m putting these out there in the hopes folks can run through them on their computers and e-readers to let me know if anything looks weird. You can just drop a comment right here if you find anything.&lt;br&gt;
[The book is now live on &lt;a href="http://PowerShellBooks.com"&gt;http://PowerShellBooks.com&lt;/a&gt;.]&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;ve finished updating a new revision of _Secrets of PowerShell Remoting; _you&rsquo;ll find PDF and EPUB versions attached to this post in a ZIP file. Note that these are &ldquo;check builds,&rdquo; meaning I&rsquo;m putting these out there in the hopes folks can run through them on their computers and e-readers to let me know if anything looks weird. You can just drop a comment right here if you find anything.<br>
[The book is now live on <a href="http://PowerShellBooks.com">http://PowerShellBooks.com</a>.]</p>
]]></content:encoded></item><item><title>Voting for the 2013 PowerShell Summit sessions is now open!</title><link>https://powershell.org/articles/2012-10-15-voting-for-the-2013-powershell-summit-sessions-is-now-open-2/</link><guid>https://powershell.org/articles/2012-10-15-voting-for-the-2013-powershell-summit-sessions-is-now-open-2/</guid><pubDate>Tue, 16 Oct 2012 03:29:25 +0000</pubDate><description>&lt;p&gt;Voting is now open!&lt;/p&gt;
&lt;p&gt;As of this morning you can vote for the sessions that you want to see at the 2013 PowerShell Summit!  We have 97 session proposals (see below), plus additional content from the PowerShell Team.  Your vote is really important, so please take some time to indicate what you would like to see from a PowerShell-specific conference with deep technical depth.&lt;/p&gt;
&lt;p&gt;Here&amp;quot;™s what you need to do:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Voting is now open!</p><p>As of this morning you can vote for the sessions that you want to see at the 2013 PowerShell Summit!  We have 97 session proposals (see below), plus additional content from the PowerShell Team.  Your vote is really important, so please take some time to indicate what you would like to see from a PowerShell-specific conference with deep technical depth.</p><p>Here"™s what you need to do:</p><ol><li><p><strong>Open</strong> the<a href="http://674004.polldaddy.com/s/powershell-summit-na-2013-session-voting">voting survey</a> in a new tab or window (this link will automatically open in a new window).</p></li><li><p><strong>Review the list of proposed sessions</strong> side by side with the table below.  The table below contains the titles, descriptions, and presenter details for every proposal that is in the survey.  This should save you a ton of time when you"™re trying to identify the sessions that you want to see.</p></li><li><p><strong>Pick your top 20 sessions</strong> that you would like to see at this conference.  There will be more than 20 sessions, but if everyone sticks to voting for their top 20 we"™ll get a good distribution in the survey and it will provide a better sample of what everyone wants to see.</p></li></ol><p>Once you"™ve done that, then just sit back and wait until we announce the official agenda after<strong>voting closes on midnight, October 28, 2012</strong>.  That gives you 2 full weeks to vote for what you would like to see.  Once voting closes, myself and other conference organizers will review the votes, coordinate with speakers, include additional content from the PowerShell team, and build an agenda for the conference.  Building the agenda and confirming with presenters will take a little time, so don"™t expect to see it posted the morning of October 29.<img src="http://kirkmunro.files.wordpress.com/2012/10/wlemoticon-smile.png?w=595" alt="Smile"/><p>Here are the session proposals that you can choose from:</p><pre><code> Title
Description
How VMware does PowerShell
Presented by: Alan Renouf
Learn the top 5 things VMware does in PowerShell that is different to anything you have seen before, see how a 3rd Party can take the awesome sauce of PowerShell and add their own flare. This session will show you some cool features of VMware's PowerShell snapin (PowerCLI) and show how VMware became the largest PowerShell community outside of Microsoft. This session is relevant to anyone who uses PowerShell as it will show the key features VMware included in their snapin and the benefits these give to system administrators.
Creating a complex and reusable HTML reporting structure
Presented by: Alan Renouf
In this session I will show you the shortcuts and tricks picked up when creating a complex reporting structure with PowerShell, how a simple HTML output script grew to be a reporting structure which can adapt to give detailed, nicely formatted reports on any application or system that has a PowerShell interface, and even some that don't!
Creating Add-on Tools for PowerShell ISE
Presented by: Kirk Munro
PowerShell 3 includes a ton of improvements to the integrated scripting editor, PowerShell ISE. As great as PowerShell ISE is in this version, there is still a lot of room for improvement. Fortunately, Microsoft anticipated that they wouldn't be able to do everything, so they extended their support for creating Add-on Tools for PowerShell ISE.
In this session, the worlds first self-proclaimed Poshoholic and PowerShell MVP Kirk Munro will provide a soup to nuts demonstration of PowerShell ISE Add-on Tools, showing how you can create everything from simple menu extensions to feature rich windows that respond to ISE events and that are docked right inside of the ISE.
Technologies covered in this session include the PowerShell ISE object model, C#, WPF, eventing, Visual Studio 2012, and of course several core PowerShell features.
Workflow Walkthrough
Presented by: Don Jones
It seems like everyone's interested in v3′s new Workflow feature, so let's do a quick walkthrough of building one from scratch. We'll skip the usual "provisioning" example and go for something a bit more constrained, and perhaps real-world, where workflow's unique features can really be put to solid use. This'll also be an opportunity to discuss what workflow can and can't do, and discuss some of the options and permutations of using it.
Remoting Configuration Deep Dive
Presented by: Don Jones
What do you do when Enable-PSRemoting isn't enough? Dig deeper. We'll run through all of the major configuration scenarios, including how to use (and not abuse) TrustedHosts, how to set up an HTTPS listener (and use it), how to do non-domain authentication, how to enable CredSSP and configure it to be less than a major security hole, and more. Pretty much every possible Remoting config, we'll cover. With detailed, step-by-step instructions!
Remoting Security Smackdown
Presented by: Don Jones
You know you want to turn on Remoting. Heck, Win2012 turns it on for you and can't be managed without it! But your "Security Guys" are freaking out, which is odd, because they don't seem to mind RDP. So we'll run through every single aspect of Remoting security: Mutual authentication. Auditing. Authentication. Delegation. Impersonation. Double-hop. Triple-hop. CredSSP. Kerberos. SSL. Everything. You bring the security guys' questions, we'll get you the most accurate answers possible to take back with you.
Delegated Administration via Remoting and GUI
Presented by: Don Jones
It's an age-old problem: You want to set up some of your users to perform some basic task, but you don't actually want to give them permissions to do it, and you certainly don't want to give them the MMC necessary to do it. Thanks to Remoting and a little WinForms action, that's no problem. We'll walk through how to set up a constrained Remoting endpoint that can run a highly limited set of predefined commands, and that runs them under alternate credentials. Then we'll build a simple GUI app, suitable for end-user consumption, that utilizes the endpoint to accomplish the task. It's the perfect way to build end-user tools, help desk utilities, and more!
Building Self-Service Web Tools with PowerShell
Presented by: Don Jones
We all want to make our lives easier... and often, that means giving users self-service tools to accomplish specific tasks. Deploying those tools can be a pain in the next, though, unless you can create them as a Web page. After all, a Web server provides a centralized platform. In this session, we'll look at a couple of ways of building self-service Web pages. One, using /n software's tool that lets a .PS1 become a Web page, and another in building a simple ASP.NET page that hosts PowerShell's engine.
Help for Help: A Help Authoring Deep Dive
Presented by: June Blender, Senior Programming Writer, Windows PowerShell Team
A comprehensive 400-level talk for module authors about authoring techniques for all types of Windows PowerShell Help, including About help and help for all command types, including cmdlets (and the MAML schema), scripts, functions, CIM commands, workflows (script and XAML), providers (including custom cmdlet help), and snippets. What you can and cannot do, and what's worth doing when time and resources are short. We'll cover online help, Updatable Help, and all the gotchas (HelpInfo XML, HelpInfoUri, HelpUri, CHMs), and I'll share the scripts that I use to generate help files and verify the accuracy of parameters, parameter values, parameter attributes, GUIDs, and URIs.
Practical PowerShell Integration from Bare Metal to the Cloud
Presented by: Alan Renouf
See how PowerShell can be used as the glue of the datacenter, take information from VMware, Cisco and Microsoft, Glue them all together and go from bare metal up to the cloud and beyond. Learn how PowerShell is now expanding to be the language of choice and how Microsoft and third party products can be tied together to create fantastic solutions.
PowerShell for the Security Professional
Presented by: Carlos Perez
How can PowerShell be leveraged by the security professional doing Incident Response, Penetration Testing (Enumeration and Post-Exploitation) or performing an audit. The presentation will cover how PowerShell can be used to gather volatile information during an incident response, what cmdlets and technologies work best to gather the proper info and alter the least the system state. Use PowerShell to help in the documentation of the integrity of the results gathered. For the Pentester how to use PowerShell to write enumeration tools leveraging .Net and use PowerShell in post-exploitation running PowerShell in Shell,Leveraging Metasploit PowerShell mixing for running scripts to gain further foothold on target systems, escalate privileges and log all keystrokes on a target.
PowerCLI and vSphere API integration
Presented by: Luc Dekens
The PowerCLI snapin is used to manage and automate your VMware vSphere and vCD environments. One of the strengths of the PowerCLI snapin from day 1 is it's ability to flawlessly integrate with the rich API ecosystem vSphere and vCD offer. A byproduct of this tight API integration is the ability to scale your automation scripts for bigger environments. This session will show how it's done, how you can use it and how easy it is.
PowerCLI and performance reports
Presented by: Luc Dekens
The VMware vSphere environment provides many performance metrics to see what is going on inside. You can use these metrics for problem solving, performance reports and capacity planning. This session will explain how to tackle the collection and handling of these performance metrics. It will also show all the possibilities you have to present your data in a meaningful way. There will be some math and statistics involved, but that' should be no problem for PowerShell and the average administrator.
PowerCLI automates the lifecycle management of your VM
Presented by: Luc Dekens
With VMware's PowerCLI snapin it is easy to automate the complete lifecycle management of your VMs. This sessions will show how this is done. With the available cmdlets you can create, configure, administer and remove any VM. Needless to say that the session will discuss the best practices. But it will also show some lesser known tricks to get your VMs in exactly the state you want them to be. And you'll learn how you can produce meaningful reports at every step of the way. In short, "The Automated Life of a VM".
PowerShell and Source Control for the IT Pro
Presented by: Andy Schneider
Are you ever concerned about updating a script, having it break, and can't remember what you changed. This is source control by an IT Pro for IT Pros. Come check out some best practices and lessons learned on how to incorporate source control as part of writing scripts. Learn how to have your code available via the web and easily accessed on multiple machines. We'll take a look at using GIT to ensure your code is always up to date and you can always get back to where you were if you break something.
PowerShell and Active Directory
Presented by: Andy Schneider
This session will provide a quick overview of different options to manage AD using PowerShell. It will quickly jump into some of the shortcomings of the MSFT provided Active Directory module and how to work around them, and even "fix" them using proxy functions and the new Default Parameter Set feature in V3.
Disconnected Sessions: How they work. How they'll work for you
Presented by: Paul Higinbotham, Software Development Engineer, Microsoft and June Blender, Senior Programming Writer, Windows PowerShell Team
An in-depth talk for script authors and IT professionals interested in learning how to disconnect from live remote sessions and reconnect to those sessions later from an arbitrary client machine. What you can and can't do with disconnected remote sessions, how remote sessions can be automatically disconnected because of network problems, how to query remote machines for available sessions you can connect to, and how to use disconnect session options.
Paul Higinbotham, the developer who coded the feature, and June Blender, Windows PowerShell programming writer, describe the design and architecture of disconnected sessions and explain how session information is retained and disconnected sessions are reconnected. We will cover the details of several remote session disconnect scenarios using the new and modified cmdlets for this feature and demonstrate how to use them.
PowerCLI: how to run PS scripts inside the VM's guest OS
Presented by: Luc Dekens
You can use PSRemoting to run PowerShell scripts inside the guest OS of your VM. But what to do when PSRemoting isn't possible or available ? Think for example of VMs in a DMZ or on a pvlan. This session will show some alternatives. Run scripts as part of the guest OS deployment, run scripts through the VMware Tools interface or use an external trigger, via the VMware Tools, to influence PS jobs scheduled inside the guest OS.
CIM sessions
Presented by: Richard Siddaway
The introduction of the CIM cmdlets and "cmdlets over objects" in PowerShell v3 provide new ways to work with WMI. In addition, they bring a new way to access remote systems ? CIM sessions. Analogous to PowerShell remoting sessions they provide a new flexibility when working with WMI and remote machines. This session will demonstrate:</code></pre><ul><li><p>How to use CIM sessions against systems running PowerShell v3</p></li><li><p>How to work with legacy installations of PowerShell v2</p></li><li><p>How to use the available CIM session options to configure the session to meet your requirements</p></li><li><p>Compare and contrast working with WMI, CIM and WSMAN cmdlets against remote machines to illustrate the strengths and weaknesses of each</p></li><li><p>How to mix and match CIM sessions using WSMAN and DCOM.</p><pre><code> The key takeaways from this session will be:</code></pre></li><li><p>The CIM cmdlets provide a new way to access WMI</p></li><li><p>WSMAN is required knowledge</p></li><li><p>WSMAN and DCOM can both be used with the CIM cmdlets</p></li><li><p>CIM sessions are easy to use and very powerful</p></li><li><p>No more DCOM problems</p><pre><code> PowerShell and the Legacy
Presented by: Sean Kearney
There is a belief that using PowerShell means rejecting the use of legacy environments like vbScript and Console applications. Some may also believe that just because they have an older system it is not possible to manage it with PowerShell Watch as the most Energized MVP, Sean Kearney takes you into a world of wonder where the old and the new Co-Exist. See possibilities you may not have considered before.
Key take-aways:</code></pre></li><li><p>Interaction between modern day PowerShell and older apps</p></li><li><p>Repurposing older tools as PowerShell cmdlets</p><pre><code> Tastes Great! Less Scripting!
Presented by: Sean Kearney
The fight continues on. the argument between the great Lords above that PowerShell is a scripting Environment vs whether it is a Management console! Watch an Actual ITPro on Stage as he shows how he REALLY uses PowerShell in a day to day environment, from basic management and reporting needs, to building out a script to manage needed tasks Take aways Understanding that learning PowerShell does NOT mean a heavy reschooling.
PowerShell and Hyper-V3 – Flying by the Seat of your Pants
Presented by: Sean Kearney
Go hardcore. Or in this case FULL SERVER CORE 2012! Learn how you can fully manage a complete clustered Hyper-V core environment in Server 2012 from Creation of the Cluster to management of the Virtual machines including Site replication all without the GUI.
Take aways? Be hard core and go CORE!
Highway to PowerShell – The Story behind the Story
Presented by: Sean Kearney
Ok this isn't Deep Dive and I don't expect anybody to PAY for this but I'm willing to talk about just HOW and WHY I turned into a musical Madman
Authoring PowerShell like a Poshoholic
Presented by: Kirk Munro
I've been using PowerShell for over 6 years. Blogging about it for over 5 years. Creating and managing products based on PowerShell for about that long as well, and writing a whole lot of scripts during the process. During this time I've come up with a trick or three to make that work easier. Some of these tricks are simple time savers, while others are ground breaking opportunities that just might change the way you write PowerShell.
Come and join me in this session to get a bird's eye view at some of the work I've been doing with PowerShell, as I talk about tips, tricks, and best practices while demonstrating some of the extensions I've written specifically to make authoring with PowerShell easier to do.
Topics discussed include proxy functions, WMI/CIM, Microsoft Office, DSVs, WiX, merge modules, type accelerators, and more.
Introduction to the Storage Management API
Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems
SMAPI is what exposes the Storage module for Windows PowerShell. This session would be focused on providing some details on what it is, how it works, in which cases 3rd party drivers are required, and how it's surfaced as a PowerShell module. More information: This session is recommended as a background for the "Managing Storage with PowerShell" and "Managing Storage Spaces with PowerShell" sessions.
Managing Storage with PowerShell
Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems
A dive into using the Storage module for Windows PowerShell to manage local storage, Storage Spaces, and array-based storage using PowerShell. More information: The focus of this session will be on the management of Disk, Partition, and Volume objects, with a brief overview of how this applies to Storage Spaces.
Managing Storage Spaces with PowerShell
Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems
This topic will focus specifically on deploying, configuring, and managing Storage Spaces using PowerShell. More information: Will cover deployment of Storage Spaces from beginning to end using PowerShell, and focus on using PowerShell to manage Storage Spaces. The "Introduction to the Storage Management API" session is strongly recommended before attending this session.
Managing the iSCSI Initiator and MPIO using PowerShell
Presented by: Bruce Langworthy, Senior Program Manager, Storage and File Systems
This topic introduces users to the iSCSI and MPIO modules in Windows PowerShell on Server 2012, and discusses how to configure these features using PowerShell.
The Powers of PowerShell Pipeworks
Presented by: James Brundage
Ever wanted to make PowerShell easy for others? Or realize that a simple script you have would be a great backbone of a business (if only you could charge for it)? PowerShell Pipeworks is a web platform built in PowerShell that makes is simple to build compelling web applications and software services in a snap. In this session, you will see: – How to use Pipeworks to store your data to the cloud – How to create a monitoring dashboard with Pipeworks – How to build a Facebook application with PowerShell Pipeworks – How to put a price tag on a cmdlet
Networking cmdlets
Presented by: Richard Siddaway
Windows 8/2012 introduces a large number of cmdlets for working with networks and network configurations. This session will introduce those cmdlets and see how you can get the best out of them in your environment. There are a number of interesting quirks associated with these cmdlets that you need to be aware of and they will be demonstrated in the session. Like so much of the functionality in Windows 8/2012 these cmdlets are based on WMI using the CDXML functionality. This will be briefly explained with a look inside one of the networking modules. These cmdlets are only available on Windows 8/2012 but with a bit of WMI you can duplicate the functionality in your environment.
PowerShell Web Access
Presented by: Richard Siddaway
PowerShell Web Access is a new feature in Windows Server 2012 that provides a web based PowerShell console. You don't need PowerShell on your client to administer remote machines as long as you have PWA. This session will demonstrate how to configure PWA, its strengths and weaknesses – you might even see PowerShell being accessed from a non-Windows machine! The security implications of PWA will be discussed. PWA will be compared to other ways to access remote machines through PowerShell including PS Remoting and CIM sessions.
Writing your Hyper-V deployment script in 30 minutes
Presented by: Jeff Wouters
In this session I'll show you just how easy it is to write a simple deployment script for a Hyper-V cluster... in only 30 minutes!
BOFH through PowerShell
Presented by: Jeff Wouters
Ever wondered how you could annoy your users, managers and even your colleagues with PowerShell? Come to this session and let me show you how you can become a BOFH with PowerShell!
How to avoid the pipeline
Presented by: Jeff Wouters
The pipeline... although it is a wonderful concept and very powerful it is also slow. Lots of people pipe everything together and although it may work, you may have some time to get some more coffee before your script is done running. Let me show you how you can avoid the pipeline by utilizing the full potential of cmdlets and their parameters... and with logical thinking.
PowerShell one-liners to the max
Presented by: Jeff Wouters
The readers of my blog know that I simply love one-liners in PowerShell... Over the years I've learned lots of tricks which allow you to put just about anything in a single line of code. Although it's not pretty, it's fun to do and wouldn't it be cool to make a developer cry just by looking at such a one-liner?
My learning experience with PowerShell
Presented by: Jeff Wouters
This will not be a technical session... Back when PowerShell v1 was introduced the first thing I though was: "I can do a heck of a lot more with VBS!". Then PowerShell v2 came along and I was sold! A lot of people would have bought books to learn it... I did not. Instead I started to play around in the prompt. Only after two years I bought my first PowerShell book. In this session I will share with you both the rise and fall of my learning experience of learning PowerShell from the prompt.
How to sell PowerShell to your customers and colleagues
Presented by: Jeff Wouters
You:"Let's enable PowerShell Remoting!". Manager:"Why?" You:"So I can manage the entire environment through PowerShell from a single management server?". Manager:"No!" Does this discussion sound familiar? If that's the case, let me share with you the things I've learned which make it easy for you to 'sell' PowerShell to managers from a practical point of view.
PSDD – PowerShell Deduplication
Presented by: Jeff Wouters
With Windows Server 2012 there comes a new feature named Data Deduplication. How can you configure and manage this through PowerShell? But more importantly, how can you do more with it than the native PowerShell module offers you? This and more will be shown in a very fast-paced session... so faster your seat belts Dorothy 'cause Kansas is going bye-bye!
Unit Testing PowerShell
Presented by: Matt Wrock
This talk will provide a walk through of Unit Testing PowerShell scripts. The OSS project Pester ([https://github.com/pester/Pester](https://github.com/pester/Pester)) will be used to illustrate popular unit testing patterns such as ArrangeActAssert and Mocking to provide testability to PowerShell. There will be discussion on why and when to use unit testing in PowerShell as well.
Bootstrapping a new machine in an hour with Chocolatey
Presented by: Matt Wrock
Sick of losing a day's productivity to setting up a new Machine? Do you find it tedious keeping track of your favorite tools, software settings and windows settings? Do you find using VMs for this task to be awkward and fragile? Learn how to use Chocolatey ([http://chocolatey.org](http://chocolatey.org/)) and other PowerShell tricks to bring this entire process into a single script that will run on its own in just about an hour (give or take depending on installs). You can even have several bootstrapping configurations depending on your scenarios. One for work, another light weight one for Remoting on to a new serer and another for personal machines.
Inside PowerShell: Abstract Syntax Tree Manipulation
Presented by: Adam Driscoll
In this session we will take apart PowerShell. This session will highlight the new abstract syntax tree and node visitor API that is exposed in v3. An instrumentation profiler will be used as an example of how to traverse and manipulate PowerShell scripts from within the engine.
.NET Reverse Engineering with PowerShell
Presented by: Adam Driscoll
In this session we will look at how to utilize ILSpy to decompile .NET assemblies and quickly access internal aspects of them using PowerShell. We will see how to easily expose private members for access and manipulation within scripts. Adam Driscoll
FIM 2010 DevOps with PowerShell
Presented by: Craig Martin
Forefront Identity Manager 2010 (FIM) is a complex product that benefits greatly in a DevOps world facilitated by PowerShell. Come learn how PowerShell improves FIM deployments, highlighting the PowerShell lessons learned from a non-PowerShell MVP, and arguably a non-developer. Topics will include: FIM Test Automation with PowerShell FIM Deployment Automation with PowerShell FIM Extensibility with PowerShell FIM Workflow with PowerShell FIM Diagnostics with PowerShell Craig Martin is a FIM MVP with a passion for improving integration and automation quality with PowerShell.
PowerShell as a SQL Reporting Services DataSource
Presented by: Craig Martin
PowerShell turns out to be an excellent tool for collecting data about just anything. This session shows you how to get objects from PowerShell into SSRS reports quickly and simply, and all without using a data warehouse. This session will explain and demonstrate the use of a CodePlex project (psdpe.codeplex.com) to marry PowerShell and SSRS to provide some of the following benefits:
SSRS Report Designers – Produce Reports in a Simple Design Experience using Objects from a PowerShell Pipeline SSRS Data
Driven Subscriptions – Automatically distribute custom reports to users with data that pertains only to them
SSRS Caching – Cache reports in SSRS for later viewing so that your script does not need to reproduce the data
SSRS Data Processing Extensions – use SSRS to report on PowerShell objects (the core of the topic)
Providing APIs Using Management OData IIS Extension
Presented by: Craig Martin
The API Economy is all the rage, at least when we're not hearing about how cool PowerShell is. The idea is a replacement for ODBC, LDAP, or any other API, and preference by application developers to use OData and RESTful web services. Should we all get busy writing APIs then? Turns out PowerShell users already have, by writing scripts and modules. This new feature in PowerShell exposes the investment in commands to developers that may not care about about PowerShell, but instead demand to consume an API based on OData. Got a command for getting User objects? well now you can share that as an URL such as [http://myServer/User](http://myserver/User) (gets all the user objects) or [http://myServer/User('Craig&amp;#8217](http://myserver/User('Craig&amp;%23038;%238217);)/Manager (gets Craig's manager). The magic here is that the developer is reaping all the rewards of your hard PowerShell work, but that developer never needs to know that the URLs are actually powered by, well PowerShell. This talk will share the experience of an IT Pro with scripting experience, learning how to create APIs using the new Management OData IIS Extension.
Creating Reports with PowerShell that Managers will Read
Presented by: Jeffery Hicks
We all know there is a wealth of information that you can uncover with PowerShell. Sometimes, getting this into a format that someone can read can be a challenge. In this session I'll explain a number of techniques you can use for creating dazzling reports from PowerShell. From simple text files, to snazzy HTML reports to full-on Microsoft Word documents.
PowerShell and Microsoft Excel: A Love Story
Presented by: Jeffery Hicks
After PowerShell, Microsoft Excel is probably an IT Pro's most often used management tool. We store data in spreadsheets. We use spreadsheets as sources for our scripts and functions. Or maybe you would like to do these things but don't know where to start. In this session I'll explain how to integrate Excel into your PowerShell experience. From pulling data from simple spreadsheets to creating stunning reports complete with tables, charts and graphs.
PowerShell and Windows Server 2012 Active Directory Tricks
Presented by: Jeffery Hicks
IT Pro's have been able to manage Active Directory with PowerShell for while. But that was only the beginning. Windows Server 2012 offers a tantalizing array of Active Directory management options. In this session I will offer a number of tips and tricks that take advantage of these new features.
Zip It! Adding Compression to your PowerShell Scripting
Presented by: Jeffery Hicks
PowerShell is a natural tool for file system management. IT Pros copy, delete and move files all the time. Even though storage is cheap and plentiful these days, wouldn't it be nice to add some compression techniques to your PowerShell scripts and functions? This session will demonstrate a number of ways you can add compression to your file management tasks. From simple file and folder compression to creating complete archives. We'll look at using the shell, 3rd party tools and WMI.
PowerShell v3 ISE Snippets
Presented by: Jeffery Hicks
Without question the ISE in PowerShell v3 is a vast and welcome improvement over v2. One of the best features, which hasn't gotten much attention, is the use of snippets. These little code gems can make writing a new script or function a breeze and even fun. But you can also add your own snippets. In this session I'll explain how the snippet system works, demonstrate how you can add your own snippets and manage your snippet library, all from the ISE.
Adding a GUI to PowerShell without WinForms
Presented by: Jeffery Hicks
Graphical PowerShell scripts seem all the rage these days. But most often that means using Windows Forms which can be very tedious to work with. But that is not the only game in town. Depending on your requirements there are a number of techniques you can use to add graphical elements to your PowerShell scripts. This session will explore how to create message boxes, input forms and more, all without a single Windows Form. If you are just getting started with writing PowerShell scripts, you'll find these techniques simple to use, plus there will be plenty of sample code for all!
Building a Quick and Dirty PowerShell Backup System
Presented by: Jeffery Hicks
It is a safe bet to say that most IT Pros have a backup solution in place for their organization. But sometimes you need something a bit more flexible or for special situations. Perhaps you have a lab or home test environment that needs protection. In this session, I will walk you through how to use PowerShell to set up a quick and dirty backup solution. This isn't necessarily a replacement for a full-fledged backup product, but it just might help fill the gaps.
File &amp; Folder Provisioning with Win8, Win2012 and PowerShell
Presented by: Jeffery Hicks
If you manage file servers and aren't using PowerShell, you are working much too hard. Or if you are using PowerShell v2 you are still working pretty hard. Fortunately PowerShell v3 along with Windows 8 and Windows Server 2012 offer a much better solution. This session will demonstrate how to provision and manage folders, files and file shares using PowerShell from a Windows 8 client. With a little up-front work, you 'll be able to create provisioning scripts to deploy a new file share in seconds.
Manage DFS the PowerShell Way
Presented by: Jeffery Hicks
Most of the time, managing a distributed file system (DFS) infrastructure is pretty simple and graphical tools are fine. But all the cool kids will use PowerShell. Windows 8 and Windows Server 2012 offer a better way for managing DFS. From creating new folders to getting a handle on what it looks like now, to troubleshooting access problems, this session will demonstrate how to have it all from a PowerShell prompt.
Write modules, not scripts
Presented by: Ed Wilson, Scripting Guy, Microsoft
Learn how to get the most from Windows PowerShell by learning a simple five-step method to transform your Windows PowerShell code into a highly reusable module. This presentation is a live demo that begins with a single line of Windows PowerShell code, transforms the code into a function, adds comment based help to the function, and converts it into a module. Next, the installation and discovery of Windows PowerShell modules is covered, as is updating the module and creating a Windows PowerShell module manifest. Ed Wilson
What I learned by grading 2000 PowerShell Scripts in the 2012 Scripting Games
Presented by: Ed Wilson, Scripting Guy, Microsoft
The 2012 Scripting Games attracted both experienced and novice scripters from more than 100 countries around the world. In grading the 2000 submitted scripts, I noticed a common theme emerged. Some of the things that were consistently confused by both beginners and advanced scripters include the following: failure to return objects from functions, not creating reusable functions, spending too much duplicating capabilities of native PowerShell, using meaningless comments, omission of error handling, and an overreliance on Write-Host. In this session, I will address each of these areas of concern and show both good and bad examples from the games. A thorough discussion of each of these topics rounds out the presentation. This presentation uses live demos to illustrate the techniques that are discussed. Ed Wilson
Use PowerShell to manage the remote Windows 8 workstation
Presented by: Ed Wilson, Scripting Guy, Microsoft
There are three different ways to manage a remote Windows 8 workstation. The first is to use WMI remoting, the second is to use the computername cmdlets and the third is to use WinRm and Windows PowerShell native remoting. Each approach has advantages and disadvantages for the network administrator. In this session, I will examine each approach, and provide a checklist of criteria to aid the enterprise network administrator in choosing the appropriate technology for a variety of real world scenarios. This presentation combines live demos and interactive discussion to heighten learning.
Use PowerShell to troubleshoot the reliability issues
Presented by: Ed Wilson, Scripting Guy, Microsoft
Using the reliability provider on Windows 8 workstation or on a Windows Server 2012 machine provides a plethora of information about the health of your system. Unfortunately, the reliability provider is not enabled by default on Windows Server 2012, and attempts to enable it do not always work. In this session, I discuss the issues surrounding the reliability provider, illustrate the type of information available, and hint at how to incorporate its use into a normal monitoring program. Live demos using easily created Windows PowerShell scripts round out the discussion.
PoshMon: PowerShell does performance counters
Presented by: Ed Wilson, Scripting Guy, Microsoft
One of the cool features on Windows PowerShell 3.0 is easy consumption of WMI performance counters into Windows PowerShell. In the past, leveraging these performance counters meant writing long lines of cryptic code, calling refresher objects, and dealing with weird timestamp issues. But no more! Using a simple cmdlet, Windows PowerShell throws open the door to the treasure trove of performance counter information. But where does the oversubscribed IT pro begin? A question on my Windows NT 3.51 MCSE exam stated there are four areas for performance monitoring: disk, memory, network, and CPU. These four resources have not changed much, regardless of the application these basic areas of investigation still ring true. In this session, I talk about discovering performance counters, using performance counters, and storing information gathered from performance counters. The talk will be strengthened by live demos at each stage of the presentation.
Why IT Pros must learn Windows PowerShell Now
Presented by: Ed Wilson, Scripting Guy, Microsoft
"IT Pros don"™t script." I have heard this mantra for more than a decade – ever since I wrote my best selling Windows Scripting Self-Paced Learning Guide for Microsoft Press. But Windows PowerShell is more than just a new scripting language – in fact, some PowerShell MVPs have stated that Windows PowerShell is not a scripting language at all. Also, and more to the point, Windows PowerShell is not even all that new, with Windows 8, Windows PowerShell enters the 3rd version – it is therefore established technology. Simply put, Windows PowerShell is the future automation story in the Microsoft world, but it is also the present, and the IT Pro who learns how to use this tool will immediately become a more productive, and consequently more valuable employee. In this session I will discuss the extent to which Windows PowerShell permeates the Microsoft eco system, and offer real world scenarios that illustrate both the power, and the simplicity of this management tool.
CDXML
Presented by: Richard Siddaway
Windows 2012 brings 2500 cmdlets – over 60% of them are CDXML. That's a WMI class wrapped in XML and published as a module. In this session you will discover how this technology works and more importantly how to easily create your own cmdlets to simplify the use of WMI
New Active Directory PowerShell cmdlets
Presented by: Richard Siddaway
PowerShell for Active Directory gets a major boost in Windows 2012. The AD administrative center now exposes the PowerShell it uses and we get cmdlets for working the topology. In this session you'll learn about AD admin center and how to get the best out if the new AD cmdlets with a look at some tips and tricks for working with AD in general. You'll also discover that the AD provider does a lot more than you think it can.
CIM
Presented by: Richard Siddaway
WMI is dead! Long live CIM! PowerShell v3 introduces the CIM cmdlets. Are they a replacement for the WMI cmdlets? Are they easier to use? In this session we'll take them apart and see what makes them tick. A compare and contrast with the WMI cmdlets will show you when to use one or the other and how to get the best out of both.
Scheduled tasks
Presented by: Richard Siddaway
You've used the back ground jobs functionality in PowerShell v2. In PowerShell v3 you get the chance to work with the task scheduler. A set of cmdlets straight out of the PowerShell box for working with scheduled tasks. Automation rises to a new level when you can tell the job to run in the middle of the night and you don't need to be there. Learn how to do this and more in this session
Integrated reports
Presented by: Richard Siddaway
Managers always want reports. Can't be avoided but the task can be made easier. In this session we'll look at creating some reports based on real world examples: 1. Get the size of your Exchange databases and free disk space. Store the results in SQL Server. Create reports that show current situation and trends over time. 2. All administrators hate documenting their servers. Learn how to create a report that writes itself – literally. Keep your server documentation up to date with no effort on your part.
PowerShell events
Presented by: Richard Siddaway
The PowerShell event engine enables you to work with .NET; WMI and PowerShell engine events. What are these and how do they work? What can I do with them? Want to stop a process that shouldn't be running? Want to start a process that's stopped? That's what this session will show you with PowerShell events.
WSMAN cmdlets
Presented by: Richard Siddaway
PowerShell remoting uses the WS-Management protocols as transport between the local and remote machines. This is implemented as the WinRm service. We can utilise the WS-Management layer (WSMAN) directly to access WMI providers. This session opens up one of the least used areas of PowerShell v2. We will see how to use the WSMAN cmdlets:</code></pre></li><li><p>Connect-WSMan</p></li><li><p>Disconnect-WSMan</p></li><li><p>Get-WSManInstance</p></li><li><p>Invoke-WSManAction</p></li><li><p>New-WSManInstance</p></li><li><p>New-WSManSessionOption</p></li><li><p>Remove-WSManInstance</p></li><li><p>Set-WSManInstance</p></li><li><p>Test-WSMan</p><pre><code> With these we can access a remote machine in a similar manner to using the WMI cmdlets or PowerShell remoting. The advantage over WMI cmdlets is that we don"™t need DCOM. These cmdlets aren"™t straight forward to use but there is an untapped administration opportunity that potentially also enables us to administer remote machines that aren"™t Windows based. The session will be heavy on code and short on slides as this is a subject best demonstrated.
PowerShell jobs
Presented by: Richard Siddaway
PowerShell normally runs tasks in the fore ground. This ties up the PowerShell prompt and stops you doing other work. We could just open lots of PowerShell prompts but a better way is to use PowerShell jobs. PowerShell jobs run in the background. You can have multiple jobs running simultaneously and still work at the prompt. Better still the jobs? results are saved until you are ready to use them. PowerShell jobs are an under used item in the administrators tool box. This session will show what they can do and how we can make the most of them. Lots of code and minimal slides make the session very interactive.
PowerShell and SQL Server
Presented by: Richard Siddaway
Storing data in SQL server is not a new idea. Accessing SQL Server using PowerShell opens up this data store for us. This session will show how to use SQL Server to store your data; how you can read, update and if necessary delete the data. Simple PowerShell routines that open a lot of power.
DNS Apocalypse (Notes From The Field)
Presented by: Ashley McGlone, Microsoft PFE
Hear Microsoft PFE Ashley McGlone explain how he got out of this one. Global 24×7 mission-critical customer had a single text file DNS primary zone hosting all 10 Active Directory domain zones in the forest. Needed to switch to AD-integrated DNS, split out all zones into separate domains, and delegate DNS administration. Then they explained there are no change control maintenance windows, and it had to be done with zero down time. He did it. Come find out how PowerShell saved this customer.
AD Migration Nightmare (Notes From The Field)
Presented by: Ashley McGlone, Microsoft PFE
I got a panic call from the customer. Half way through the AD domain migration their third party migration tool database crashed and was unrecoverable. They lost all SID history conversion tracking. The vendor doing the migration was unsure how to proceed. Hear Microsoft PFE Ashley McGlone explain how PowerShell saved the customer. Do you know where your SID history is hiding?
Mass File Server ACL Migration (Notes From The Field)
Presented by: Ashley McGlone, Microsoft PFE
I had a customer who acquires 13 new companies each year. They have more than 35 domains in the forest and another 80 trusts. With over 170,000 instances of SID history in the forest they had no idea where to begin fixing SID history on file shares. They needed a way to migrate ACLs on their file servers, to report on the impact, and to manage it effectively in the future. Where would you begin? Hear Microsoft PFE Ashley McGlone explain how PowerShell saved the customer.
Automated Server Setup with Carbon
Presented by: Aaron Jensen
Aren't manual setup checklists the greatest? How about virtual machine images that have been cloned for so long nobody knows where they come from? Nobody likes spending hours doing the same things over and over again, or reverse engineering what configuration changes someone made to a server before walking out the door. Come learn about Carbon ([http://get-carbon.org](http://get-carbon.org/)), the DevOps module I created that enables us to spin up dozens of servers in just a few hours. I'll give an overview of all the functionality available in Carbon, then dive deep into some of the things I've learned and discovered during development.
Connecting ERP to AD with PowerShell – A Two-way Street
Presented by: Steve Moss
When we implemented Jenzabar CX as our college's ERP solution, it became our authoritative data source and the driver for things like Active Directory account creation and maintenance. Initially, we used a series of VBScripts to handle the integration with AD. When I was tasked with fixing and maintaining that code, two things because clear. First, The existing code was virtually unmaintainable. Second, PowerShell made it relatively easy to create a solution that was modular, flexible and easily maintained. I'll look at how we implemented the communication from CX to AD and from AD to CX using /nSoftware's PowerShell Server and ODBC. I'll also look at the way we decomposed the creation and maintenance various types of AD accounts into discrete tasks and used that to create a modular library of functions that allows us to use a building block approach to not only implementing the automated processes that we needed, but also create an interactive set of tools for our Service Desk people to view and modify AD accounts in a controlled way.
Deploy and manage certificates for your IIS servers using PS
Presented by: Jason Helmick
Need to deploy and manage certificates for your websites? When was the last time you checked to see if your website certificates were about to expire? In this session with renowned PowerShell and IIS expert Jason Helmick, you will deploy, manage, revoke and remove certificates to multiple remote IIS servers running Windows Server Core. Discover and alert when certificates are about to expire and handle creating and changing SSLBindings in IIS.
Automatically Provisioning an IIS 8 Web Farm
Presented by: Jason Helmick
Increase productivity while increasing time off using PowerShell! In this session with renowned PowerShell and IIS expert Jason Helmick, you will learn to provision a web farm of servers, sites and applications. Quickly adapt your web farm to the needs of the business with rapid scale load balancing. You will leave with the slides, demonstration steps and Jason"™s tips to rapidly provision IIS. Don"™t lose another weekend to web farm deployment and management!
Securely Manage your network anytime on any Device with PSWA
Presented by: Jason Helmick
Are you "on-call" and worried to leave the office? Not anymore! In this session with renowned PowerShell and IIS expert Jason Helmick, you will learn to implement and securely configure Windows Server 8 PowerShell Web Access. Take control with any device and cmdlets at your fingertips without the overhead of installing additional administration tools. You will leave with the slides, demonstration steps and Jason"™s tips to securely deploy and utilize PowerShell Web Access.
System Center 2012 Configuration Manager and PowerShell
Presented by: Greg Ramsey
ConfigMgr and PowerShell – we have finally arrived! ConfigMgr and WMI have been a match made in heaven for the since at least SMS 2.0, so we've always been able to use PowerShell with ConfigMgr. But finally, we have real cmdlets that will allow you to fully automate the administrative experience with ConfigMgr. Are you ready to take your Configuration Manager Admin experience to the next level? Greg shows you how to leverage PowerShell with Microsoft System Center 2012 Configuration Manager SP1. Manage Deployments, Collections, Applications, Packages, Programs, and even Software Updates!
Working with script blocks
Presented by: Rob Campbell
Creating script blocks for remote jobs and filters using local variables. Using script blocks to: create collections simplify code maintenance get user input pipeline output from foreach loops
Metaprogramming PowerShell
Presented by: Ian Davis
PowerShell can be a fun and crazy language to use, but we can take it a step further with metaprogramming. By taking advantage of PowerShell's flexible language features including dynamic scoping, modules, deferred evaluation, and ScriptBlocks, we can create simple and powerful applications applications leveraging metaprogramming idioms.
Chewie: PowerShell DSL for Managing NuGet Dependencies
Presented by: Ian Davis
Have you ever tried to figure out which dependencies your application has? Tired of messing with NuGet repository.config and packages.config files? Are you fed up with having to load Visual Studio and enabling package restore by hand? Ruby has had a solution for a long time with gems and bundler. By leveraging the features of PowerShell, .NET developers can have their own DSL for managing dependencies efficiently with Chewie.
Internal DSLs in PowerShell
Presented by: Ian Davis
To write a DSL or to not write a DSL, that is an important question. PowerShell gives us great power to create DSLs, but it doesn't mean that we should create one. This talk will cover when to create a DSL along with techniques specific to PowerShell for creating them (deferred evaluation, first class objects, dynamic scoping, semantic models, dependency graphs, etc). Some existing PowerShell DSLs will be analyzed including as psake, pester, and chewie.
PowerShell: Beyond Scripting
Presented by: Ian Davis
PowerShell is missing a few language features, but that doesn't mean we can pretend. By changing our perspective slightly, we can apply parasitic and prototypal inheritance, open classes, monkey patching, and more. PowerShell was designed for solving problems for system administrators, but it isn't limited to that domain.
Automated Builds With PowerShell
Presented by: Ian Davis
Automated builds are a critical part of application lifecycle management. PowerShell is very well suited for making this process easier. We have gone full circle with scripting builds and by leveraging PowerShell on the command line and building DSLs, our builds can be more robust and intuitive than ever.
Troubleshooting SQL Server with PowerShell
Presented by: Laerte Junior
It is normal for us to have to face poorly performing queries or even complete failure in our SQL server environments. This can happen for a variety of reasons including poor Database Designs, hardware failure, improperly-configured systems and OS Updates applied without testing. As Database Administrators, we need to take precaution to minimize the impact of these problems when they occur, and so we need the tools and methodology required to identify and solve issues quickly. In this Session we will use PowerShell to explore some common troubleshooting techniques used in our day-to-day work as DBA. This will include a variety of such activities including gathering Blocked SQL Server Process, Reading &amp; filtering the SQL Error Log even if the Instance is offline, Listing SQL Server and Database information and Register Temporary and Specific Events in the SQL Server WMI. The approach will be using PowerShell techniques that allow us to scale the code for multiple servers and run the data collection in asynchronous mode.
PowerShell in Windows 8/2012
Presented by: Richard Siddaway
PowerShell has 2500 cmdlets available in Windows 2012 This session will give you a quick overview of what's available and more importantly what you can do with it. There is so much functionality available that if you don't know its there you can miss it. A quick overview of what's available and lots of demos
PowerShell and WMI
Presented by: Richard Siddaway
With all the new WMI based functionality in PowerShell v3 its easy to forget the old WMI cmdlets. They are still there, still have their place and can teach us a few things about administering our systems. Some of the new PowerShell v3 functionality makes them easier to use – learn how Some of the WMI gotchas still remain – see what they are, how you overcome them and what effect they have on the new CIM cmdlets
Building Enterprise Modules
Presented by: Adam Driscoll
In this session we will look at how to author enterprise-level modules using a combination of both PowerShell and C#. We'll examine the common pitfalls and considerations that should be made when thinking about enterprise PowerShell support. We will look at how to build modules that are easy to test and maintain.
Tame Your Event Logs with Windows PowerShell and WinRM
Presented by: Aleksandar Nikolic
In this session you will learn how to manage your Event Logs with PowerShell cmdlets, leverage the power of Event Forwarding to centralize events to a central server and trigger execution of PowerShell scripts from a specific Windows event.
Automate Server Manager in Windows Server 2012
Presented by: Aleksandar Nikolic
Server Manager in Windows Server 2012 has evolved to include many new multi-server management features. It uses Windows PowerShell behind the scenes, but can we use Windows PowerShell to automate customization of Server Manager? Yes, we can. Join us for this session to learn how.
How to Delegate Administration and Customize PowerShell Session Configuration
Presented by: Aleksandar Nikolic
In this session you will learn how to customize PowerShell session configuration, and then use it to assign specific administrative tasks to the appropriate users and groups without changing the membership of local Administrators group. By using new Windows PowerShell and Windows Remote Management 3.0 capabilities we will enable dynamic creation of customized automation environments that users can access through the Windows PowerShell Web Access.
Configuring Your Windows PowerShell Workflow Environment
Presented by: Aleksandar Nikolic
In this session you will learn how to set up your environment to run Windows PowerShell workflows. We will discuss different workflow configurations, how to prepare computers to run workflows, what is workflow session configuration and how to customize it. At the end, you will learn how to properly run your Windows PowerShell workflows.
Build Your Demo Environment or a Test Lab with Windows PowerShell
Presented by: Aleksandar Nikolic
With Windows PowerShell 3.0 and the new Client Hyper-V available in Windows 8, it is so easy, and fun, to automate creation of your demo environment or a test lab infrastructure. You can easily convert ISO files to VHDs, deploy your VMs and configure networking and storage. Join us for this demo-heavy session to see all the steps.
Is Server Core without Windows PowerShell still remotely manageable?
Presented by: Aleksandar Nikolic
In this, some might say blasphemous, session you will learn that uninstallation of Windows PowerShell doesn't leave your Windows Server 2012 Server Core remotely unmanageable from the command line. We can still use Windows PowerShell on a client computer to access system CIM modules on a Server Core. Even better, we can increase its manageability by deploying our own CIM modules. Join us to see the power of CIM sessions and CIM modules.
Scripting for Scale in the Virtual Datacenter
Presented by: Josh Atwell and Jade Lester
The virtual datacenter is growing at a high rate. The increasing size and complexities can make scripting and reporting take too long to complete in a reasonable time period. Attendees will learn a variety of techniques and strategies you can use to speed up your scripting and reporting with PowerCLI and UCSPowerTool from two members of Cisco internal IT.
PowerCLI for the PowerShell Inclined
Presented by: Josh Atwell
In this session I highlight many of the built in functionalities of PowerCLI that are extremely powerful but often underutilized. These cmdlets will increase your flexibility with PowerCLI and help increase efficiency.
Managing your Cisco UCS with UCSPowerTool
Presented by: Josh Atwell and Jade Lester
Attendees will get a crash course in the unique and powerful cmdlets of the UCSPowerTool, PowerShell for the Cisco Unified Compute System.
Thank you for helping us create this great conference!
Kirk out.
Technorati Tags: [PowerShell](http://technorati.com/tags/PowerShell),[PoSh](http://technorati.com/tags/PoSh),[Poshoholic](http://technorati.com/tags/Poshoholic),[PowerShell Summit](http://technorati.com/tags/PowerShell+Summit),[PowerShell.org](http://technorati.com/tags/PowerShell.org)
[![](http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/820/)](http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/820/) ![](http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=820&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1)</code></pre></li></ul>
]]></content:encoded></item><item><title>Session Voting for the PowerShell Summit North America 2013</title><link>https://powershell.org/articles/2012-10-15-session-voting-for-the-powershell-summit-north-america-2013/</link><guid>https://powershell.org/articles/2012-10-15-session-voting-for-the-powershell-summit-north-america-2013/</guid><pubDate>Mon, 15 Oct 2012 16:09:43 +0000</pubDate><description>&lt;p&gt;Voting is open!&lt;br&gt;
As you know, the &lt;strong&gt;PowerShell Summit North America 2013&lt;/strong&gt; is coming in April 2013, and we&amp;rsquo;re relying on &lt;strong&gt;you&lt;/strong&gt; to tell us what sessions you&amp;rsquo;d like to see there. We&amp;rsquo;ve already accepted dozens of proposed sessions, and we&amp;rsquo;re ready for you to vote.&lt;br&gt;
&lt;a href="http://674004.polldaddy.com/s/powershell-summit-na-2013-session-voting"&gt;Go ahead and take the survey now.&lt;/a&gt; (opens in a new window/tab)&lt;br&gt;
While voting, you can technically choose as many sessions as you want - but remember that we can&amp;rsquo;t present them all, so try to pick no more than 20 sessions as your &amp;ldquo;favorites.&amp;rdquo; Also note that the Summit will include additional, to-be-announced sessions presented by Microsoft employees and PowerShell product team members.&lt;br&gt;
You can &lt;a href="https://powershell.org/discuss/viewforum.php?f=22"&gt;read the session proposals&amp;rsquo; descriptions in our forums&lt;/a&gt;; we suggest having that open in another window right next to the survey itself. That way, you can read through the abstracts, decide if you like a session, and vote on it in the survey. Sorry for having the information in two places - we&amp;rsquo;re gonna work on something cleaner for 2014 ;).&lt;br&gt;
**You have until midnight October 28th, 2012, to vote. **And if you&amp;rsquo;re asking, &amp;ldquo;midnight in what time zone,&amp;rdquo; then we suggest you stop procrastinating and vote already!!!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Voting is open!<br>
As you know, the <strong>PowerShell Summit North America 2013</strong> is coming in April 2013, and we&rsquo;re relying on <strong>you</strong> to tell us what sessions you&rsquo;d like to see there. We&rsquo;ve already accepted dozens of proposed sessions, and we&rsquo;re ready for you to vote.<br><a href="http://674004.polldaddy.com/s/powershell-summit-na-2013-session-voting">Go ahead and take the survey now.</a> (opens in a new window/tab)<br>
While voting, you can technically choose as many sessions as you want - but remember that we can&rsquo;t present them all, so try to pick no more than 20 sessions as your &ldquo;favorites.&rdquo; Also note that the Summit will include additional, to-be-announced sessions presented by Microsoft employees and PowerShell product team members.<br>
You can<a href="https://powershell.org/discuss/viewforum.php?f=22">read the session proposals&rsquo; descriptions in our forums</a>; we suggest having that open in another window right next to the survey itself. That way, you can read through the abstracts, decide if you like a session, and vote on it in the survey. Sorry for having the information in two places - we&rsquo;re gonna work on something cleaner for 2014 ;).<br>
**You have until midnight October 28th, 2012, to vote. **And if you&rsquo;re asking, &ldquo;midnight in what time zone,&rdquo; then we suggest you stop procrastinating and vote already!!!</p>
]]></content:encoded></item><item><title>PhillyPoSH 10/04/2012 meeting summary and presentation materials</title><link>https://powershell.org/articles/2012-10-10-10042012-meeting-summary-and-presentation-materials/</link><guid>https://powershell.org/articles/2012-10-10-10042012-meeting-summary-and-presentation-materials/</guid><pubDate>Wed, 10 Oct 2012 13:08:07 +0000</pubDate><description>&lt;p&gt;Our inaugural meeting was as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;10 minute demo from &lt;a href="http://www.jamsscheduler.com/"&gt;MVP Systems&lt;/a&gt; about how &lt;a href="http://www.jamsscheduler.com/PowerShell.aspx"&gt;JAMS Scheduler works with PowerShell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Presentation on what Remoting is and how it works
&lt;ol&gt;
&lt;li&gt;See the &lt;a href="https://powershell.org/wp-content/uploads/2012/10/PhillyPosh_2012-1004.zip"&gt;zip file&lt;/a&gt; in the post for the PowerPoint with speaking notes&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Pizza break!&lt;/li&gt;
&lt;li&gt;Live remoting demo
&lt;ol&gt;
&lt;li&gt;See the zip file in the post for a text file of the PowerShell demo&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;On the topic of deploying a GPO to set your script execution policy, &lt;a href="http://www.bhargavs.com/"&gt;Bhargav Shukla&lt;/a&gt; from the &lt;a href="http://www.ehlougphila.com/"&gt;Philadelphia Exchange User Group&lt;/a&gt; brought to our attention &lt;a href="http://support.microsoft.com/kb/2467565"&gt;KB2467565&lt;/a&gt; which address the following issue:   &amp;ldquo;You cannot install an update rollup for Exchange Server 2010 with a deployed GPO that defines a PowerShell execution policy for the server to be updated&amp;rdquo;. So if you do set the script execution policy through group policy don&amp;quot;™t apply it to your Exchange 2010 servers!&lt;br&gt;
Meeting materials zip file: &lt;a href="https://powershell.org/wp-content/uploads/2012/10/PhillyPosh_2012-1004.zip"&gt;PhillyPosh_2012-1004&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Our inaugural meeting was as follows:</p><ol><li>10 minute demo from<a href="http://www.jamsscheduler.com/">MVP Systems</a> about how<a href="http://www.jamsscheduler.com/PowerShell.aspx">JAMS Scheduler works with PowerShell</a></li><li>Presentation on what Remoting is and how it works<ol><li>See the<a href="https://powershell.org/wp-content/uploads/2012/10/PhillyPosh_2012-1004.zip">zip file</a> in the post for the PowerPoint with speaking notes</li></ol></li><li>Pizza break!</li><li>Live remoting demo<ol><li>See the zip file in the post for a text file of the PowerShell demo</li></ol></li></ol><p>On the topic of deploying a GPO to set your script execution policy,<a href="http://www.bhargavs.com/">Bhargav Shukla</a> from the<a href="http://www.ehlougphila.com/">Philadelphia Exchange User Group</a> brought to our attention<a href="http://support.microsoft.com/kb/2467565">KB2467565</a> which address the following issue:   &ldquo;You cannot install an update rollup for Exchange Server 2010 with a deployed GPO that defines a PowerShell execution policy for the server to be updated&rdquo;. So if you do set the script execution policy through group policy don"™t apply it to your Exchange 2010 servers!<br>
Meeting materials zip file:<a href="https://powershell.org/wp-content/uploads/2012/10/PhillyPosh_2012-1004.zip">PhillyPosh_2012-1004</a></p>
]]></content:encoded></item><item><title>PSCX 2.1 and 3.0 Release Candidates Posted</title><link>https://powershell.org/articles/2012-09-15-pscx-2-1-and-3-0-release-candidates-posted/</link><guid>https://powershell.org/articles/2012-09-15-pscx-2-1-and-3-0-release-candidates-posted/</guid><pubDate>Sun, 16 Sep 2012 02:45:47 +0000</pubDate><description>&lt;p&gt;Oisin and I have been busy prepping the PowerShell Community Extensions to support Windows PowerShell 3.0. With this release, we are providing two packages. There is a &lt;a href="http://pscx.codeplex.com/releases/view/93945"&gt;Pscx-2.1.0-RC.zip&lt;/a&gt; that is xcopy deployable just like PSCX 2.0. Just remember to unblock the ZIP before extracting it otherwise you&amp;quot;™ll get errors when you try to import the module. Pscx 2.1 can be used to target both Windows PowerShell 2.0 and 3.0. In order to do this, Pscx 2.1 is still compiled against .NET 2.0 and it can&amp;quot;™t take advantage of any Windows PowerShell 3.0 specific features.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Oisin and I have been busy prepping the PowerShell Community Extensions to support Windows PowerShell 3.0. With this release, we are providing two packages. There is a<a href="http://pscx.codeplex.com/releases/view/93945">Pscx-2.1.0-RC.zip</a> that is xcopy deployable just like PSCX 2.0. Just remember to unblock the ZIP before extracting it otherwise you"™ll get errors when you try to import the module. Pscx 2.1 can be used to target both Windows PowerShell 2.0 and 3.0. In order to do this, Pscx 2.1 is still compiled against .NET 2.0 and it can"™t take advantage of any Windows PowerShell 3.0 specific features.</p><p>The second package is<a href="http://pscx.codeplex.com/releases/view/94637">Pscx-3.0.0-RC.msi</a>. This is a traditional Windows installer package. The benefit of using an MSI is that the user doesn"™t have to worry about unblocking the file before installing it. The MSI file is also Authenticode signed with an extended validation code signing certificate so it should make it past Windows 8 SmartScreen. I"™d like to extend a big thanks to<a href="http://www.digicert.com/">DigiCert</a> for graciously donating the EV code signing certificate to us.</p><p>INSTALLATION NOTE: the WiX-based installer modifies the PSModulePath environment variable but the modification doesn"™t always seem to be in effect after installation. If Import-Module Pscx &ldquo;“RequiredVersion 3.0.0.0 fails to load PSCX, import the module by path (C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Pscx.psd1) until you get a chance to reboot. After that, you shouldn&rdquo;™t have to specify the path.</p><p>Another aspect of Pscx 3.0 is that it is compiled against .NET 4.0 and takes advantage of some features specific to Windows PowerShell 3.0. Over time, we will focus our new feature efforts on the Pscx 3.0 branch.</p><h3 id="pscx-21-and-30-side-by-side-support" class="ps-heading">PSCX 2.1 and 3.0 Side-by-Side Support<a class="ps-heading-anchor" href="#pscx-21-and-30-side-by-side-support" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>With this release, you can install Pscx 2.1 and 3.0 side-by-side. Note however that if you xcopy install Pscx 2.1 into your user"™s Modules directory, PowerShell will find that version of Pscx before the 3.0 version. In order to ensure you load a specific version of Pscx, use the &ldquo;“RequiredVersion parameter on Import-Module e.g.</p><p><code>Import-Module Pscx -RequiredVersion 3.0.0.0</code>### Support for AllSigned Execution Policy</p><p>Each of the two packages above (2.1 and 3.0) supported execution in an AllSigned environment. All of the script files (*.ps1, *.psm1 and *.ps1xml) have been signed. Of course, this means you can&rdquo;™t modify these scripts (i.e. to fix bugs) and still run them AllSigned.</p><h3 id="new-features" class="ps-heading">New Features<a class="ps-heading-anchor" href="#new-features" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>There are not a lot of new features in this release but there are a few handy additions including:</p><ul><li>Get-Parameter &ldquo;“ thanks to Jason Archer for contributing this great way to visual a command&rdquo;™s parameter information.</li><li>Import-VisualStudioVars &ldquo;“ for developers who like to spend their time in PowerShell instead of cmd.exe, this function takes care of importing the build environment for the specified version of Visual Studio. The 2008, 2010 and 2012 versions of Visual Studio are supported.</li><li>Start-PowerShell &ldquo;“ a wrapper for PowerShell.exe that utilizes the PowerShell parameter parsing engine to make invocation of various flavors of PowerShell (from PowerShell obviously) easier. While testing the AllSigned support I used this command a lot:<code>Start-PowerShell -NoProfile -ExecutionPolicy AllSigned -Version 2</code>* Get-ExecutionTime &ldquo;“ since PowerShell 2.0, the HistoryInfo object for a command has included both the StartExecutionTime and the EndExecutionTime. This command makes it easy to see the total execution time for any command e.g.:</li></ul><p>`C:\PS&gt; Get-ExecutionTime
Id ExecutionTime HistoryInfo</p><hr><p>1 00:00:02.9919258 Get-ChildItem C:\Windows\System32
2 00:00:00.2650339 Get-Process
3 00:00:00.2499424 Get-Service
`### Bug Fixes</p><p>Oisin spent a good deal of time fixing issues in the Read-Archive and Expand-Archive cmdlets. We updated the version of 7z that we are using (to 9.x) and modified the cmdlets to use<a href="http://sevenzipsharp.codeplex.com/">SevenZipSharp</a>. I also fixed a number of bugs in Invoke-Elevated (alias su), Set-Writable, Edit-File and type accelerators breaking on PowerShell 3.0.</p><p>As you use these release candidates please report any issues to the<a href="http://pscx.codeplex.com/workitem/list/basic">Pscx CodePlex project</a>. Thanks for supporting Pscx!</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/rkeithhill.wordpress.com/271/"><img src="http://feeds.wordpress.com/1.0/comments/rkeithhill.wordpress.com/271/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=rkeithhill.wordpress.com&amp;blog=18780344&amp;%23038;post=271&amp;%23038;subd=rkeithhill&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerShell Summit North America 2013 Call for Content</title><link>https://powershell.org/articles/2012-09-13-powershell-summit-north-america-2013-call-for-content/</link><guid>https://powershell.org/articles/2012-09-13-powershell-summit-north-america-2013-call-for-content/</guid><pubDate>Thu, 13 Sep 2012 18:04:53 +0000</pubDate><description>&lt;p&gt;In case you haven&amp;quot;™t heard already, there is a great opportunity to learn a lot more about PowerShell coming up next year.  It&amp;quot;™s the PowerShell Summit North America 2013 conference, and it is held on Microsoft campus in Redmond, WA from April 22 to 24, 2013.  This conference is run by the PowerShell.org community, and it will present a ton of deep technical content on anything to do with PowerShell.  What content will be covered, you ask?  Well, that&amp;quot;™s up to you.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In case you haven"™t heard already, there is a great opportunity to learn a lot more about PowerShell coming up next year.  It"™s the PowerShell Summit North America 2013 conference, and it is held on Microsoft campus in Redmond, WA from April 22 to 24, 2013.  This conference is run by the PowerShell.org community, and it will present a ton of deep technical content on anything to do with PowerShell.  What content will be covered, you ask?  Well, that"™s up to you.</p><p>We are now accepting content proposals from anyone who wants to present at this conference.  All you need to do to submit your session proposals is to add a new topic to the<a href="https://powershell.org/discuss/viewforum.php?f=22">Session Submissions forum on PowerShell.org</a> for each session you want to present.</p><h4 id="who-can-present" class="ps-heading">Who can present?<a class="ps-heading-anchor" href="#who-can-present" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Anyone who has something to share with other PowerShell experts and enthusiasts that will help them learn more about PowerShell can propose a topic they would like to present at this conference.  There will be a survey shared with the community that allows them to vote for the sessions they want to see, so ultimately the community will decide who can present at this conference.  Note that when reviewing the community results, the conference organizers reserve the right to make some modifications to the sessions that are selected to balance the topics that are discussed and to be able to better accommodate speakers who are offering to present multiple sessions.</p><h4 id="what-topics-will-be-discussed" class="ps-heading">What topics will be discussed?<a class="ps-heading-anchor" href="#what-topics-will-be-discussed" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>There will be around 100 PowerShell experts and enthusiasts at this conference, including some PowerShell MVPs, some non-PowerShell MVPs, and some members of the PowerShell team.</p><p>At a conference like this they will be looking for advanced sessions that show them deep technical content on various aspects of PowerShell as well as real-world practical applications of PowerShell.  They"™ll likely want to learn more about workflow, remoting, CIM, and many other technologies used by PowerShell.  They"™ll also likely want to learn about how PowerShell is used in practice with PowerShell extensions like PowerCLI to manage vSphere deployments at Scale, or how PowerShell is being used with multiple technologies (SharePoint, System Center Orchestrator, Exchange, NetApp, Active Directory, etc.) to deal with the real-world management challenges that exist in enterprise organizations.  These are just some examples of the topics that might be discussed in sessions at this conference.  It is important to note that no presentations will include any NDA information.  As mentioned, topics will be voted on by the community and then those results will be reviewed by conference organizers to come up with the final list of topics that will be presented at the conference.</p><p>Please keep in mind that there will be two tracks for this event: one will have the content with the deepest technical depth, and another will have real world and more intermediate to advanced level content.  With two tracks, you really shouldn"™t be shy about submitting sessions if you think you might have something to add.  Chances are, if you"™ve been using PowerShell for a while and if you continue to use it very regularly, you probably have knowledge and experience that you can share with others.  Don"™t worry about which track your session will ultimately fall in.  The conference organizers will figure those details out as part of their agenda planning.</p><h4 id="" class="ps-heading"><a class="ps-heading-anchor" href="#" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><h4 id="where-will-the-conference-be-held" class="ps-heading">Where will the conference be held?<a class="ps-heading-anchor" href="#where-will-the-conference-be-held" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>The conference will be held on Microsoft campus in Redmond in buildings 40 and 41 from April 22 to 24th, 2013. There may be additional activities surrounding the conference, but the core sessions will be April 22, 23 and 24.</p><h4 id="when-can-i-submit-a-proposal" class="ps-heading">When can I submit a proposal?<a class="ps-heading-anchor" href="#when-can-i-submit-a-proposal" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>You can submit a proposal now.  Simply post your proposal as a new topic on the<a href="https://powershell.org/discuss/viewforum.php?f=22">Session Submissions forum on PowerShell.org</a> for any sessions that you want to present.  Session proposals will be accepted on that forum until October 14, 2012 at midnight PST (take note of that date!).  Once that deadline is met, on October 15, 2012 we will publish a list of all proposals with a voting system that will allow community members to vote for their favorite sessions.  Votes will be accepted over a 2 week period, and the week of October 29th the conference organizers will review the votes and sessions and put together the list of accepted sessions, contact speakers for confirmation, etc.</p><p>We strongly encourage you to submit multiple session proposals so that you increase your chances of having a session accepted.  Note that you can submit a proposal even if a related session has already been proposed by someone else.  In fact, if you want to present multiple sessions, I would encourage you to submit the sessions that you want to present, without holding back if a similar session is already proposed.  There are advantages to presenting multiple sessions (see below), and the community will indicate what they want to see in the end anyway.</p><p>If you will be attending the conference whether you have a session proposal accepted or not, you should buy your conference ticket as soon as possible to take advantage of the early bird pricing.  If you can only attend this conference if you have enough proposals accepted to cover the bulk of your expenses (see below for details on the benefits of being a presenter), you should submit your sessions now regardless and once the session review process is completed, conference organizers will contact you to make sure you are able to commit to attending and presenting at the conference.  You can also fire me a note if you want to make me aware ahead of time that you can only attend if you have at least 3 sessions accepted, either using my<a href="http://poshoholic.com/contact-me/">contact me</a> form or via email (on gmail or hotmail, either works, using the nickname I use on this blog as the user id).</p><h4 id="why-should-i-submit-a-proposal" class="ps-heading">Why should I submit a proposal?<a class="ps-heading-anchor" href="#why-should-i-submit-a-proposal" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Personally speaking, I find presenting information that has been learned through hard work to be very rewarding.  I also find receiving information that others have learned through their hard work to be very rewarding as well.  It"™s all about the community participation and sharing of knowledge.  Aside from being proud of your work and sharing it with others, there are more tangible benefits for speakers with accepted sessions as well.</p><p>For every session proposal that is accepted (voted high enough by the community and accepted in the final review by the conference organizers), speakers will receive a $300 travel stipend as well as up to $200 to offset 1/3 of their registration cost.  That means someone presenting 3 sessions will receive $900 that they can use towards their travel expenses and a full refund of their registration fee.  This should make it much clearer why it is advantageous to submit multiple session proposals.</p><p>One last reason why you should submit a proposal: the value of the conversation that comes with an event like this is extremely high.  You"™ll be able to talk to others about your challenges and ideas, learn from their efforts, perhaps find people you want to work with on various community projects, etc.  It"™s the networking alone that drives me to attend events like this.</p><h4 id="how-do-i-write-a-proposal" class="ps-heading">How do I write a proposal?<a class="ps-heading-anchor" href="#how-do-i-write-a-proposal" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Each proposal you enter must include three pieces of information:</p><ul><li>a title for the session you are proposing,</li><li>your full name, and</li><li>a 1-2 paragraph description of what the session will contain.</li></ul><p>You must create one topic per proposal.  Don"™t put all of your sessions on one topic, and don"™t reply to current topics when creating proposals, please.</p><p>In general when planning your proposal, focus on content that will come with more demos, and less on slide-heavy content.  This is a conference for experts and enthusiasts who are looking for deep technical content on PowerShell-related topics in interactive sessions.  With this crowd, rich, demo-focused sessions will be preferred over slide-heavy sessions.</p><p>You should also review some of the proposals that are already submitted as examples.  Keep in mind that the sessions are 35 minutes long with 10 minutes of Q&amp;A at the end (although questions often come up during the sessions at an event like this).  35 minutes may seem like a lot of time, but it goes by quickly, especially when doing demos.</p><h4 id="summary" class="ps-heading">Summary<a class="ps-heading-anchor" href="#summary" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>That"™s a lot of information, so here is a summary of the essential points along with links to additional information.</p><pre><code> Conference Title
PowerShell Summit North America 2013
Conference Website
[http://powershellsummit.com](http://powershellsummit.com/)
Conference Dates
April 22-24, 2013*
Location
Microsoft Campus, Buildings 40 and 41, Redmond, WA
Session Proposal Forum
[https://powershell.org/discuss/viewforum.php?f=22](https://powershell.org/discuss/viewforum.php?f=22)
Session Proposal Deadline
October 14, 2012 at midnight PST
Session Voting Period
October 15, 2012 to October 28, 2012
Final Tally and Processing
The week of October 29, 2012
Sessions Announced
As soon as possible after October 29th, once the final tally and processing is done and accepted presenters have confirmed their sessions
Forum for Conference- and Session-Related Questions
[https://powershell.org/discuss/viewforum.php?f=20](https://powershell.org/discuss/viewforum.php?f=20)
Speakers Page
[https://powershell.org/summit/speak.php](https://powershell.org/summit/speak.php)
Conference FAQ
[https://powershell.org/summit/faq.php](https://powershell.org/summit/faq.php)
Best location to ask PowerShell questions and to help the community with answers
[https://powershell.org](https://powershell.org/)</code></pre><ul><li>With a high probability for a short, half-day event adjacent to this.</li></ul><p>I look forward to reading your session proposals!</p><p>Thanks,</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/PowerShell.org">PowerShell.org</a>,<a href="http://technorati.com/tags/PowerShell+Summit">PowerShell Summit</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/812/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/812/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=812&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerShell Summit: Best Conference Deal Ever!</title><link>https://powershell.org/articles/2012-09-11-powershell-summit-best-conference-deal-ever/</link><guid>https://powershell.org/articles/2012-09-11-powershell-summit-best-conference-deal-ever/</guid><pubDate>Tue, 11 Sep 2012 11:55:39 +0000</pubDate><description>&lt;p&gt;What&amp;rsquo;s the average tech conference cost these days? $1500? $2000? And that&amp;rsquo;s just to get in, to say nothing of hotel, air, food, and whatnot.&lt;br&gt;
The &lt;a href="http://powershellsummit.org"&gt;PowerShell Summit North America 2013&lt;/a&gt; has an idea. Lets do a community-owned event, with a goal of breaking even and supporting an annual event, but not worry about a profit.&lt;br&gt;
Lets say you live in the US. A ticket to Seattle in April will run you $500-700 after taxes. Maybe less if you can get on a discount carrier like Southwest - they fly to SEA. Hotel will run you under $450 for three nights. Say you decide to splurge on a car for four days, probably for under $200 (including all the ridiculous taxes on rental cars). Toss in another $250 for food? That takes you to under $1600. PowerShell Summit only costs $550 - less if you register during one of the Early Bird tiers; as low us $450, in fact. That&amp;rsquo;s $2100-2200 total, or just a bit over what some conferences charge for their registration fee alone!&lt;br&gt;
What about quality? Well, you&amp;rsquo;ll get the same food Microsoft employees get. So that can&amp;rsquo;t be all bad. You&amp;rsquo;ll attend sessions delivered by Microsoft product team members, along with independent experts. You&amp;rsquo;ll interact directly with PowerShell team managers, too, in a small-event format that lets you provide product feedback directly to them. Heck, with under 100 fellow attendees, you&amp;rsquo;ll get plenty of face time with everyone.&lt;br&gt;
It&amp;rsquo;s going to be a great event, and it will definitely be affordable. It&amp;rsquo;s being run by members of the community, not a conference company. This will hopefully become OUR event, an annual gathering of PowerShell enthusiasts, experts, and team members. A chance to network, to learn, to share, and to grow.&lt;br&gt;
I hope you&amp;rsquo;ll be able to join us!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>What&rsquo;s the average tech conference cost these days? $1500? $2000? And that&rsquo;s just to get in, to say nothing of hotel, air, food, and whatnot.<br>
The<a href="http://powershellsummit.org">PowerShell Summit North America 2013</a> has an idea. Lets do a community-owned event, with a goal of breaking even and supporting an annual event, but not worry about a profit.<br>
Lets say you live in the US. A ticket to Seattle in April will run you $500-700 after taxes. Maybe less if you can get on a discount carrier like Southwest - they fly to SEA. Hotel will run you under $450 for three nights. Say you decide to splurge on a car for four days, probably for under $200 (including all the ridiculous taxes on rental cars). Toss in another $250 for food? That takes you to under $1600. PowerShell Summit only costs $550 - less if you register during one of the Early Bird tiers; as low us $450, in fact. That&rsquo;s $2100-2200 total, or just a bit over what some conferences charge for their registration fee alone!<br>
What about quality? Well, you&rsquo;ll get the same food Microsoft employees get. So that can&rsquo;t be all bad. You&rsquo;ll attend sessions delivered by Microsoft product team members, along with independent experts. You&rsquo;ll interact directly with PowerShell team managers, too, in a small-event format that lets you provide product feedback directly to them. Heck, with under 100 fellow attendees, you&rsquo;ll get plenty of face time with everyone.<br>
It&rsquo;s going to be a great event, and it will definitely be affordable. It&rsquo;s being run by members of the community, not a conference company. This will hopefully become OUR event, an annual gathering of PowerShell enthusiasts, experts, and team members. A chance to network, to learn, to share, and to grow.<br>
I hope you&rsquo;ll be able to join us!</p>
]]></content:encoded></item><item><title>Own a Piece of the Community: Buy Shares in PowerShell.org, Inc.!</title><link>https://powershell.org/articles/2012-09-10-own-a-piece-of-the-community-buy-shares-in-powershell-org-inc/</link><guid>https://powershell.org/articles/2012-09-10-own-a-piece-of-the-community-buy-shares-in-powershell-org-inc/</guid><pubDate>Mon, 10 Sep 2012 17:35:16 +0000</pubDate><description>&lt;p&gt;When Kirk Munro and I set this site up, and started redirecting traffic from the old PowerShellCommunity.org, one of our main goals was to make this a truly &lt;em&gt;community-owned&lt;/em&gt; resource. We wanted it hosted independently (my company, Concentrated Tech, is being paid to host the site, so we get pretty good service and total control). We didn&amp;rsquo;t want to be beholden to anyone&amp;rsquo;s commercial interests or whims (companies do get distracted by their real jobs from time to time, after all).&lt;br&gt;
When we started talking to Microsoft about holding a &lt;a href="http://powershellsummit.org"&gt;PowerShell Summit&lt;/a&gt;, we wanted that to be community-owned too, and not tied to a commercial interest - in part so that we could keep the price low, but also so that Microsoft would be able to support us without getting into any possible conflicts of interest with any of its ISV partners.&lt;br&gt;
Today, our intention becomes legally realized. PowerShell.org., Inc., a Nevada corporation, is born - and we&amp;rsquo;re offering ownership shares to help raise capital. This capital will be used to pay for necessities like bookkeeping, and also to help bootstrap the Summit event. Shareholders are _legal owners of the corporation, _and will vote for its Board of Directors - who in turn appoint the Officers that make things happen. Our first Board will consist of &lt;a href="http://donjones.com"&gt;myself&lt;/a&gt;, &lt;a href="http://twitter.com/poshoholic"&gt;Kirk&lt;/a&gt;, &lt;a href="http://twitter.com/jeffhicks"&gt;Jeffery Hicks&lt;/a&gt;, &lt;a href="http://twitter.com/rsiddaway"&gt;Richard Siddaway&lt;/a&gt;, and &lt;a href="http://twitter.com/thejasonhelmick"&gt;Jason Helmick&lt;/a&gt;.&lt;br&gt;
**Want to become a community owner? **You&amp;rsquo;ll want to start with our &amp;ldquo;Shareholder Brochure,&amp;rdquo; which is available in &lt;a href="https://powershell.org/discuss/viewforum.php?f=26"&gt;the new &amp;ldquo;PowerShell.org, Inc.&amp;rdquo; forum&lt;/a&gt; on this site. That forum will also get you our Bylaws and Articles of Incorporation; the Brochure will outline the purpose of the corporation, and explain what it means to be a shareholder. The forum also contains the Share Purchase Order form, which you can use to purchase shares, and contains documents that outline our initial Board of Directors and Officer lineup and other important details.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>When Kirk Munro and I set this site up, and started redirecting traffic from the old PowerShellCommunity.org, one of our main goals was to make this a truly <em>community-owned</em> resource. We wanted it hosted independently (my company, Concentrated Tech, is being paid to host the site, so we get pretty good service and total control). We didn&rsquo;t want to be beholden to anyone&rsquo;s commercial interests or whims (companies do get distracted by their real jobs from time to time, after all).<br>
When we started talking to Microsoft about holding a<a href="http://powershellsummit.org">PowerShell Summit</a>, we wanted that to be community-owned too, and not tied to a commercial interest - in part so that we could keep the price low, but also so that Microsoft would be able to support us without getting into any possible conflicts of interest with any of its ISV partners.<br>
Today, our intention becomes legally realized. PowerShell.org., Inc., a Nevada corporation, is born - and we&rsquo;re offering ownership shares to help raise capital. This capital will be used to pay for necessities like bookkeeping, and also to help bootstrap the Summit event. Shareholders are _legal owners of the corporation, _and will vote for its Board of Directors - who in turn appoint the Officers that make things happen. Our first Board will consist of<a href="http://donjones.com">myself</a>,<a href="http://twitter.com/poshoholic">Kirk</a>,<a href="http://twitter.com/jeffhicks">Jeffery Hicks</a>,<a href="http://twitter.com/rsiddaway">Richard Siddaway</a>, and<a href="http://twitter.com/thejasonhelmick">Jason Helmick</a>.<br>
**Want to become a community owner? **You&rsquo;ll want to start with our &ldquo;Shareholder Brochure,&rdquo; which is available in<a href="https://powershell.org/discuss/viewforum.php?f=26">the new &ldquo;PowerShell.org, Inc.&rdquo; forum</a> on this site. That forum will also get you our Bylaws and Articles of Incorporation; the Brochure will outline the purpose of the corporation, and explain what it means to be a shareholder. The forum also contains the Share Purchase Order form, which you can use to purchase shares, and contains documents that outline our initial Board of Directors and Officer lineup and other important details.</p><blockquote><p><strong>Cool tip:</strong> Shareholders get access to a special forum on PowerShell.org to discuss company business, are eligible for an @powershell.org e-mail address, and may receive a discount to the<a href="http://powershellsummit.org">PowerShell Summit North America 2013</a>. In fact, if you&rsquo;re planning to attend, you can add $100 worth of stock to your event registration for just $75 (plus card fees), instantly giving you your $25 discount!</p></blockquote><p>We hope you&rsquo;ll give serious consideration to supporting this community effort, and to finally - about six years after PowerShell&rsquo;s introduction - help us realize our dream of creating a truly community-owned online resource, educational event, and more. We have created<a href="https://powershell.org/discuss/viewforum.php?f=25">a set of forums on PowerShell.org for discussion and Q&amp;A about this corporation</a>, so if you have any questions, we encourage you to turn there for your answers.<br>
Although the corporation will not be publicly-traded in the sense of appearing on a stock market, we do intend to make as much of its business as possible completely open and transparent. To that end, we&rsquo;ll use this blog to periodically announce the availability of public documents (as we create them), along with shareholder meetings and other important events. Just look for items in the &ldquo;Inc.&rdquo; category of the blog. We&rsquo;ll also use the<a href="https://powershell.org/discuss/viewforum.php?f=25">Forums</a> as a repository for various documents, so that you can always find them easily.<br><strong>What do you get by being an owner?</strong> Well, a vote (one per share owned) for the Board of Directors makeup. The aforementioned $25 discount to the PowerShell Summit. An @powershell.org e-mail address or forwarding alias, if you want one. And a chance to help us create a truly independent, group-driven entity that&rsquo;s owned not by any one person, but by all of us together.<br>
Thanks for joining.</p>
]]></content:encoded></item><item><title>PowerShell Summit: 'I'm Feeling Lucky' Tickets on Sale, $400 Each</title><link>https://powershell.org/articles/2012-09-09-powershell-summit-im-feeling-lucky-tickets-on-sale-400-each/</link><guid>https://powershell.org/articles/2012-09-09-powershell-summit-im-feeling-lucky-tickets-on-sale-400-each/</guid><pubDate>Sun, 09 Sep 2012 22:55:29 +0000</pubDate><description>&lt;p&gt;That&amp;rsquo;s right, for just $400 you can guarantee yourself a seat at the PowerShell Summit North America 2013, to be held at Microsoft&amp;rsquo;s campus in Redmond, WA. Just 10 tickets will be made available at this low-low-low price, which is $150 off the normal registration rate.&lt;br&gt;
Why so low? Why are they called &amp;ldquo;I&amp;rsquo;m Feeling Lucky&amp;rdquo; tickets? Because while we&amp;rsquo;re committed to an April 2013 date, we haven&amp;rsquo;t actually locked in dates with Microsoft, yet. So to purchase these, you&amp;rsquo;ve got to be feeling flexible&amp;hellip; or lucky!&lt;br&gt;
But it&amp;rsquo;s not a marriage. The tickets are completely refundable, up to 30 days prior to the event. So if we manage to lock in the three dates &lt;em&gt;you can&amp;rsquo;t attend,&lt;/em&gt; we&amp;rsquo;ll give you your money back. You can also transfer the ticket to someone else, at any time (although they&amp;rsquo;ll be paying you directly for the ticket, and we won&amp;rsquo;t get involved in that transaction).&lt;br&gt;
Once these sell out, or we lock in our dates, we&amp;rsquo;ll commence the Early Bird period, with a rate of $475 and just 30 tickets available. That rate will be good through the end of December, unless we sell out. Full rate of $550 kicks in after that, when we&amp;rsquo;ll sell the remaining tickets to fill our roughly 100-person venue.&lt;br&gt;
Thinking about presenting? Start &lt;a href="https://powershell.org/discuss/viewforum.php?f=21"&gt;submitting topics in the Forums&lt;/a&gt;! You can get all the other juicy details on the &lt;a href="http://powershellsummit.org"&gt;Summit&amp;rsquo;s dedicated site&lt;/a&gt;, and catch the &lt;a href="http://twitter.com/PSHSummit"&gt;Summit&amp;rsquo;s Twitter feed&lt;/a&gt; for ongoing announcements.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>That&rsquo;s right, for just $400 you can guarantee yourself a seat at the PowerShell Summit North America 2013, to be held at Microsoft&rsquo;s campus in Redmond, WA. Just 10 tickets will be made available at this low-low-low price, which is $150 off the normal registration rate.<br>
Why so low? Why are they called &ldquo;I&rsquo;m Feeling Lucky&rdquo; tickets? Because while we&rsquo;re committed to an April 2013 date, we haven&rsquo;t actually locked in dates with Microsoft, yet. So to purchase these, you&rsquo;ve got to be feeling flexible&hellip; or lucky!<br>
But it&rsquo;s not a marriage. The tickets are completely refundable, up to 30 days prior to the event. So if we manage to lock in the three dates<em>you can&rsquo;t attend,</em> we&rsquo;ll give you your money back. You can also transfer the ticket to someone else, at any time (although they&rsquo;ll be paying you directly for the ticket, and we won&rsquo;t get involved in that transaction).<br>
Once these sell out, or we lock in our dates, we&rsquo;ll commence the Early Bird period, with a rate of $475 and just 30 tickets available. That rate will be good through the end of December, unless we sell out. Full rate of $550 kicks in after that, when we&rsquo;ll sell the remaining tickets to fill our roughly 100-person venue.<br>
Thinking about presenting? Start<a href="https://powershell.org/discuss/viewforum.php?f=21">submitting topics in the Forums</a>! You can get all the other juicy details on the<a href="http://powershellsummit.org">Summit&rsquo;s dedicated site</a>, and catch the<a href="http://twitter.com/PSHSummit">Summit&rsquo;s Twitter feed</a> for ongoing announcements.</p>
]]></content:encoded></item><item><title>PowerShell Workflow: When Should You Use It?</title><link>https://powershell.org/articles/2012-08-30-powershell-workflow-when-should-you-use-it/</link><guid>https://powershell.org/articles/2012-08-30-powershell-workflow-when-should-you-use-it/</guid><pubDate>Thu, 30 Aug 2012 16:29:19 +0000</pubDate><description>&lt;p&gt;Microsoft recently posted the online help for PowerShell v3 Workflow (&lt;a href="http://technet.microsoft.com/en-us/library/jj134242)"&gt;http://technet.microsoft.com/en-us/library/jj134242)&lt;/a&gt;, and I wanted to take an opportunity to explore some of what the help says - and perhaps offer an outsider&amp;rsquo;s perspective.&lt;/p&gt;
&lt;h2 id="what-is-workflow" class="ps-heading"&gt;What is Workflow?&lt;a class="ps-heading-anchor" href="#what-is-workflow" 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;Workflow is a set of technologies included with PowerShell v3, and is available on any computer running v3 (which can include Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows 8, and Windows Server 2012). A workflow is a special kind of PowerShell script that looks a lot like a function. When run, however, PowerShell translates the workflow to Windows Workflow Foundation (WWF) code, and hands it off to WWF to execute. That means the contents of a workflow are a bit different than the contents of a script.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Microsoft recently posted the online help for PowerShell v3 Workflow (<a href="http://technet.microsoft.com/en-us/library/jj134242)">http://technet.microsoft.com/en-us/library/jj134242)</a>, and I wanted to take an opportunity to explore some of what the help says - and perhaps offer an outsider&rsquo;s perspective.</p><h2 id="what-is-workflow" class="ps-heading">What is Workflow?<a class="ps-heading-anchor" href="#what-is-workflow" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Workflow is a set of technologies included with PowerShell v3, and is available on any computer running v3 (which can include Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows 8, and Windows Server 2012). A workflow is a special kind of PowerShell script that looks a lot like a function. When run, however, PowerShell translates the workflow to Windows Workflow Foundation (WWF) code, and hands it off to WWF to execute. That means the contents of a workflow are a bit different than the contents of a script.</p><h2 id="when-might-you-use-workflow" class="ps-heading">When might you use workflow?<a class="ps-heading-anchor" href="#when-might-you-use-workflow" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>This is where I take issue with the help files, a bit. They state:</p><blockquote><p>In general, you should consider using a workflow instead of a cmdlet or script when you must meet any of the following requirements.</p><ul><li>You need to perform a long-running task that combines multiple steps in a sequence.</li><li>You need to perform a task that runs on multiple devices.</li><li>You need to perform a task that requires checkpointing or persistence.</li><li>You need to perform a long-running task that is asynchronous, restartable, parallelizable, or interruptible.</li><li>You need to run a task on a large scale, or in high availability environments, potentially requiring throttling and connection pooling.</li></ul></blockquote><p>I don&rsquo;t think that&rsquo;s an accurate list. I think it&rsquo;s incomplete, for one, and I think it includes some things it shouldn&rsquo;t. Understand that workflow is _complicated. _These things require some up-front planning. Not every PowerShell command can be used natively in a workflow (despite what the help files imply), because not every command has a WWF equivalent. For me, workflow is something you should use <em>when no other, simpler mechanism</em> will meet your specific needs. This list in the help file is supposed to help you identify situations where workflow is <em>the only way to go</em> - but I think it&rsquo;s a bit misleading.<br>
Let&rsquo;s look at why.</p><h3 id="you-need-to-perform-a-long-running-task-that-combines-multiple-steps-in-a-sequence" class="ps-heading">You need to perform a long-running task that combines multiple steps in a sequence.<a class="ps-heading-anchor" href="#you-need-to-perform-a-long-running-task-that-combines-multiple-steps-in-a-sequence" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>Well, that&rsquo;s what a script does. Any script. Just because you need to run multiple steps in a sequence doesn&rsquo;t mean you should be using workflow.</p><h3 id="you-need-to-perform-a-task-that-runs-on-multiple-devices" class="ps-heading">You need to perform a task that runs on multiple devices.<a class="ps-heading-anchor" href="#you-need-to-perform-a-task-that-runs-on-multiple-devices" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>OK, workflow <em>can</em> do this, but so can the much easier-to-use Invoke-Command. Give it a command, or even a script, and you can run multiple steps, in a sequence, on multiple devices. Understand that workflow _uses _remoting to talk to remote devices; if you&rsquo;re using workflow, you&rsquo;ve already enabled remoting - so why not use it when the need is simpler?</p><h3 id="you-need-to-perform-a-long-running-task-that-is-asynchronous-restartable-parallelizable-or-interruptible" class="ps-heading">You need to perform a long-running task that is asynchronous, restartable, parallelizable, or interruptible.<a class="ps-heading-anchor" href="#you-need-to-perform-a-long-running-task-that-is-asynchronous-restartable-parallelizable-or-interruptible" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>It&rsquo;s really the &ldquo;or&rdquo; I have a problem with here. PowerShell jobs will let you run tasks asynchronously, and in parallel; restartable and interruptible are legitimate workflow-only features. If you need those, you need workflow; if you <em>merely</em> need asynchronous, consider using a job.</p><h3 id="you-need-to-run-a-task-on-a-large-scale-or-in-high-availability-environments-potentially-requiring-throttling-and-connection-pooling" class="ps-heading">You need to run a task on a large scale, or in high availability environments, potentially requiring throttling and connection pooling.<a class="ps-heading-anchor" href="#you-need-to-run-a-task-on-a-large-scale-or-in-high-availability-environments-potentially-requiring-throttling-and-connection-pooling" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>I don&rsquo;t see why Invoke-Command, which supports throttling of connections, couldn&rsquo;t accomplish this criteria. I&rsquo;ll admit that this one&rsquo;s borderline for me; because workflows are executed by WWF and not by PowerShell per se, it&rsquo;s probably better at scale-out. But I wouldn&rsquo;t<em>immediately</em> head for workflow just because I needed to run some command on a few thousand machines. I might, after further evaluation of the situation, select workflow after all - but it&rsquo;s not an automatic for me.</p><h3 id="you-need-to-perform-a-task-that-requires-checkpointing-or-persistence" class="ps-heading">You need to perform a task that requires checkpointing or persistence.<a class="ps-heading-anchor" href="#you-need-to-perform-a-task-that-requires-checkpointing-or-persistence" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>Truth. This is unique to workflow. As WWF executes your workflow tasks, it &ldquo;checkpoints&rdquo; its status to disk. That way, if the entire environment crashes, WWF can resume where it left off when things are rebooted. If you need this, it&rsquo;s a legitimate reason to head straight for workflow. And for a very long-running task with multiple steps _that might well be interrupted, _this would drive me right to workflow every time.</p><h3 id="you-need-to-perform-a-task-that-combines-steps-which-can-be-run-in-parallel-with-those-which-must-be-run-sequentially" class="ps-heading">You need to perform a task that combines steps which can be run in parallel with those which must be run sequentially<a class="ps-heading-anchor" href="#you-need-to-perform-a-task-that-combines-steps-which-can-be-run-in-parallel-with-those-which-must-be-run-sequentially" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>This is really a unique workflow thing, and one that isn&rsquo;t listed in the help files. Workflow can designate specific chunks - <em>activities</em> is the term workflow uses - that contain commands which must be run in a strict sequence, and designate other chunks to be run in parallel, in any particular order. This can massively improve performance, and is one of the main advantages that would push me to use workflow over an ordinary script.</p><h2 id="features-vs-drivers" class="ps-heading">Features vs. Drivers<a class="ps-heading-anchor" href="#features-vs-drivers" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>For me, this discussion is about workflow <em>features</em> - things it can do - versus workflow <em>drivers</em> - reasons you&rsquo;d use workflow and workflow alone. My last two points - checkpointing and persistence, along with parallel/sequential mixing - are the main workflow <em>drivers</em> for me. The ability to target multiple machines is a _feature; _something I can do with workflow once I&rsquo;ve decided to use it.<br>
To be fair, I&rsquo;m simplifying things a bit. Workflow&rsquo;s ability to target multiple machines in parallel may be more robust that remoting&rsquo;s ability to do so; I haven&rsquo;t tested that. Under the hood, though, I know that workflow <em>relies on remoting</em> for communications, so I suspect the two would perform similarly.</p><h2 id="hey-i-think-workflow-is-cool" class="ps-heading">Hey, I Think Workflow is Cool!<a class="ps-heading-anchor" href="#hey-i-think-workflow-is-cool" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Don&rsquo;t get me wrong. As I&rsquo;ve outlined above, there are definitely reasons I&rsquo;d choose to use workflow. But those aren&rsquo;t necessarily the reasons given by the help file. While I appreciate the time and effort Microsoft has put into workflow, I think they&rsquo;re a wee bit over-enthusiastic when suggesting that &ldquo;you should use a workflow when you have a task that combines multiple steps in a sequence.&rdquo; Workflow is a challenging technology, with a fairly steep learning curve. As yet, troubleshooting and debugging tools are scant. I&rsquo;ll stick with simpler mechanisms when they meet my needs - and aim for workflow when I need some of the amazing things that it alone can do for me.<br>
My concern with the help files is that they could drive relative newcomers to workflow by giving them the impression that it was the only way to achieve some of those things, or was the preferred way of achieving them. Those newcomers could easily be intimidated by workflow (heck, I still am), and just walk away from PowerShell entirely, not realizing that there were other, simpler ways of &ldquo;performing a task that runs on multiple devices.&rdquo; Help files like this should provide direction and guidance&hellip; and I just think in this case that the guidance oversells workflow a teeny bit.<br>
I&rsquo;ve sent a longer, more detailed version of this feedback to Microsoft as well. Perhaps the help files can evolve over time (hey, that&rsquo;s why PowerShell v3 has updatable help!) to provide better, more accurate guidance on when you <em>should</em> use workflow over some other approach.</p>
]]></content:encoded></item><item><title>eBook: Secrets of PowerShell Remoting</title><link>https://powershell.org/articles/2012-08-06-ebook-secrets-of-powershell-remoting/</link><guid>https://powershell.org/articles/2012-08-06-ebook-secrets-of-powershell-remoting/</guid><pubDate>Mon, 06 Aug 2012 19:22:35 +0000</pubDate><description>&lt;p&gt;This is a free e-book that covers PowerShell Remoting. There&amp;rsquo;s a brief overview and tutorial of actually using Remoting, but that part isn&amp;rsquo;t in-depth. What this e-book provides, that you won&amp;rsquo;t find elsewhere, is step-by-step, screenshot-based instructions for configuring Remoting for any imaginable scenario. You&amp;rsquo;ll also find troubleshooting tutorials and examples, and even information on how to explain Remoting to your corporate IT security team. It&amp;rsquo;s all the stuff that isn&amp;rsquo;t documented in PowerShell&amp;rsquo;s own help - and it&amp;rsquo;s completely free. You don&amp;rsquo;t even need to register to download the file!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>This is a free e-book that covers PowerShell Remoting. There&rsquo;s a brief overview and tutorial of actually using Remoting, but that part isn&rsquo;t in-depth. What this e-book provides, that you won&rsquo;t find elsewhere, is step-by-step, screenshot-based instructions for configuring Remoting for any imaginable scenario. You&rsquo;ll also find troubleshooting tutorials and examples, and even information on how to explain Remoting to your corporate IT security team. It&rsquo;s all the stuff that isn&rsquo;t documented in PowerShell&rsquo;s own help - and it&rsquo;s completely free. You don&rsquo;t even need to register to download the file!</p><p>Current version: August 2012.</p><p>The ZIP file contains a PDF. We&rsquo;re not currently offering MOBI or EPUB versions of the file, as the conversion from DOCX using the tools we have available to us takes a zillion steps and is less than perfect. Please<a href="http://concentratedtech.com/contact/">contact Don directly through his Web site</a> if you&rsquo;re interesting in volunteering to help with format conversions.<br><a href="https://powershell.org/ebooks">Download Secrets of PowerShell Remoting</a></p>]]></content:encoded></item><item><title>Want to Contribute?</title><link>https://powershell.org/articles/2012-07-29-want-to-contribute/</link><guid>https://powershell.org/articles/2012-07-29-want-to-contribute/</guid><pubDate>Sun, 29 Jul 2012 19:51:59 +0000</pubDate><description>&lt;p&gt;We&amp;rsquo;re looking for a few good PowerShell contributors! You don&amp;rsquo;t need to be a PowerShell expert in order to make a valuable contribution to this community - there are a number of ways in which you can help.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We&rsquo;re looking for a few good PowerShell contributors! You don&rsquo;t need to be a PowerShell expert in order to make a valuable contribution to this community - there are a number of ways in which you can help.</p><p>If you <em>are</em> an expert, consider answer questions in our<a href="/forums/">forums</a>. If you have a specific topical area that interests you - Active Directory, SQL Server, whatever - then we can give you your own topic-specific &ldquo;Ask the Experts&rdquo; forum. That&rsquo;s a huge help to the many administrators out there who are trying hard to do their jobs.<br>
We&rsquo;d also love to have someone moderate different sets of recommendations. We&rsquo;re always asked about book reviews, training reviews, and more - so if that interests you, let us know by dropping a comment in the Suggestion Box (in the forums). We can connect you with publishers so that you can get copies of books, read through them, and then post reviews to benefit the community. Or whatever&hellip; you could review tools, training videos, or whatever you like. It&rsquo;s all helpful!<br>
Just let us know how you&rsquo;d like to contribute, and we&rsquo;ll try and make it happen!</p>]]></content:encoded></item><item><title>The New PowerShell Community</title><link>https://powershell.org/articles/2012-07-29-the-new-community/</link><guid>https://powershell.org/articles/2012-07-29-the-new-community/</guid><pubDate>Sun, 29 Jul 2012 16:54:44 +0000</pubDate><description>&lt;p&gt;Welcome to the new community!&lt;br&gt;
This site represents an evolution of the old PowerShellCommunity.org (also accessible at PoshComm.org). We&amp;rsquo;ve moved the site off of the old DotNetNuke software, and are now using a combination of WordPress (for community-hosted blogs) and Vanilla 2 (for the forums and for blog comments).&lt;br&gt;
Why the new site? A couple of reasons. For one, we desperately wanted to get out of the DotNetNuke software, which has proven somewhat difficult to work with since none of us are experts with it. We also needed to get the site out of it&amp;rsquo;s home in a Quest datacenter. Quest was awesome for providing that hosting, but they&amp;rsquo;re moving on to bigger and better things, and we wanted to get a bit more control over the site. We also wanted to trim the site down a bit, to focus mainly on providing a blogging platform and aggregation point, and the all-important Q&amp;amp;A forums that folks rely on.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Welcome to the new community!<br>
This site represents an evolution of the old PowerShellCommunity.org (also accessible at PoshComm.org). We&rsquo;ve moved the site off of the old DotNetNuke software, and are now using a combination of WordPress (for community-hosted blogs) and Vanilla 2 (for the forums and for blog comments).<br>
Why the new site? A couple of reasons. For one, we desperately wanted to get out of the DotNetNuke software, which has proven somewhat difficult to work with since none of us are experts with it. We also needed to get the site out of it&rsquo;s home in a Quest datacenter. Quest was awesome for providing that hosting, but they&rsquo;re moving on to bigger and better things, and we wanted to get a bit more control over the site. We also wanted to trim the site down a bit, to focus mainly on providing a blogging platform and aggregation point, and the all-important Q&amp;A forums that folks rely on.</p><h2 id="logging-on" class="ps-heading">Logging On<a class="ps-heading-anchor" href="#logging-on" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Right now, we&rsquo;re starting fresh. You&rsquo;ll need to create a new forums account - but you can do so using Twitter, Facebook, OpenID, or Google - there&rsquo;s no need to make up a new password!</p><h2 id="forums" class="ps-heading">Forums<a class="ps-heading-anchor" href="#forums" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Our forums are empty at present, but we&rsquo;ll be extracting the old forums content and posting it in a static archive for long-term reference. In the meantime, feel free to jump in and start populating the new forums! You&rsquo;ll see that you can ask questions (which you can then mark as answered), or post discussions. We&rsquo;ve tried to flatten the forums structure to make it a bit easier to navigate.<br>
We&rsquo;re presently looking for topic-specific experts to host &ldquo;Ask the Experts&rdquo; forums. Drop a note in the &ldquo;Suggestion Box&rdquo; forum if you&rsquo;re interested. You&rsquo;d be agreeing to be the primary moderator and responder for a specific topic, as it relates to PowerShell.</p><h2 id="blogging" class="ps-heading">Blogging<a class="ps-heading-anchor" href="#blogging" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>If you&rsquo;re looking for a place to host a PowerShell-focused blog, we&rsquo;d be pleased to provide that to you. Just drop a note in the &ldquo;Suggestion Box&rdquo; (in the forums) and we&rsquo;ll get right back to you. Or, contact<a href="http://concentratedtech.com/contact">Don Jones</a> directly. If you already have a high-quality, frequently updated, PowerShell-focused blog, we&rsquo;d also be happy to include it in our aggregation - again, just let us know in the Suggestion Box.</p><h2 id="management" class="ps-heading">Management<a class="ps-heading-anchor" href="#management" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>The community is currently being managed by PowerShell MVPs Don Jones and Kirk Munro. We&rsquo;re not currently putting together a &ldquo;board&rdquo; to run the site, since&hellip; well, it&rsquo;s just a Web site. What we <em>are</em> looking for - as noted above - are people who want to take ownership of a particular topical &ldquo;Ask the Experts&rdquo; forum. By taking a personal stake in this community, those folks will also help manage it by helping us make critical management decisions going forward.</p><h2 id="affiliation" class="ps-heading">Affiliation<a class="ps-heading-anchor" href="#affiliation" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>The site is not affiliated with any corporation or organization at present, and we have no plans to create such an affiliation. Don&rsquo;s company, Concentrated Technology, is providing the hosting, in exchange for running the occasional banner ad for Don&rsquo;s PowerShell books, videos, and other resources. We may accept additional advertising over time to help offset operational expenses, but the plan is to run this site as a labor of love.</p>]]></content:encoded></item><item><title>PSCX 3.0 Beta Released</title><link>https://powershell.org/articles/2012-07-26-pscx-3-0-beta-released/</link><guid>https://powershell.org/articles/2012-07-26-pscx-3-0-beta-released/</guid><pubDate>Fri, 27 Jul 2012 04:12:31 +0000</pubDate><description>&lt;p&gt;We&amp;quot;™ve just released a &lt;a href="http://pscx.codeplex.com/releases/view/91403"&gt;beta of the PowerShell Community Extensions 3.0&lt;/a&gt; which targets PowerShell 3.0 specifically. This new version uses a WiX based installer. We may look at providing an xcopy deployable ZIP file but we had so many users get burned by not unblocking the ZIP file that the move back to MSI seemed warranted. The MSI really doesn&amp;quot;™t do much other than copy files into the Program Files dir and add a path to the PSModulePath environment variable.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We"™ve just released a<a href="http://pscx.codeplex.com/releases/view/91403">beta of the PowerShell Community Extensions 3.0</a> which targets PowerShell 3.0 specifically. This new version uses a WiX based installer. We may look at providing an xcopy deployable ZIP file but we had so many users get burned by not unblocking the ZIP file that the move back to MSI seemed warranted. The MSI really doesn"™t do much other than copy files into the Program Files dir and add a path to the PSModulePath environment variable.</p><p>Be sure to read the installation notes on the download page. If you"™re having problems importing the PSCX module, you might need to reboot. Yeah I know that sucks but either WiX 3.6 just isn"™t handling environment variable updates quite right or I"™m not using WiX right.</p><p>If you"™re using PSCX and Windows PowerShell 3.0, please take this version for a spin. You can use it side-by-side with your current version of PSCX 2.x. When you import PSCX specify the RequiredVersion parameter as shown below e.g.:</p><p>Import-Module pscx &ldquo;“RequiredVersion 3.0.0.0</p><p>And please,<a href="http://pscx.codeplex.com/workitem/list/basic">report problems back to the CodePlex site</a>. I haven&rdquo;™t always been able to reply quickly to issues but we do monitor them. Thanks!</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/rkeithhill.wordpress.com/268/"><img src="http://feeds.wordpress.com/1.0/comments/rkeithhill.wordpress.com/268/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=rkeithhill.wordpress.com&amp;blog=18780344&amp;%23038;post=268&amp;%23038;subd=rkeithhill&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Join Jeff and I for a live PowerShell video chat cast!</title><link>https://powershell.org/articles/2012-07-24-join-jeff-and-i-for-a-live-powershell-video-chat-cast/</link><guid>https://powershell.org/articles/2012-07-24-join-jeff-and-i-for-a-live-powershell-video-chat-cast/</guid><pubDate>Wed, 25 Jul 2012 00:19:00 +0000</pubDate><description>&lt;p&gt;Jeff and I are going to be hosting a LiveMeeting-based &amp;ldquo;hangout.&amp;rdquo; We&amp;rsquo;ll start with a discussion on PowerShell v3 Workflows just to get things moving, but we&amp;rsquo;re relying on you to bring your questions! We&amp;rsquo;ll have PowerShell v3 available for demos&amp;hellip; hope you can attend!&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the LiveMeeting details. Note that **only VoIP audio will be provided - there will be no dial-up number. **&lt;/p&gt;
&lt;p&gt;When: Thursday, Aug 2, 2012 10:00 AM (PDT)&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Jeff and I are going to be hosting a LiveMeeting-based &ldquo;hangout.&rdquo; We&rsquo;ll start with a discussion on PowerShell v3 Workflows just to get things moving, but we&rsquo;re relying on you to bring your questions! We&rsquo;ll have PowerShell v3 available for demos&hellip; hope you can attend!</p><p>Here&rsquo;s the LiveMeeting details. Note that **only VoIP audio will be provided - there will be no dial-up number. **</p><p>When: Thursday, Aug 2, 2012 10:00 AM (PDT)</p><p>Scheduled to Occur: Once</p><p>Duration: 1:00</p><p>Don Jones has invited you to attend an online meeting using</p><p>Microsoft Office Live Meeting.</p><p><a href="https://www.livemeeting.com/cc/mvp/join?id=8Z5Z2N&amp;role=attend">https://www.livemeeting.com/cc/mvp/join?id=8Z5Z2N&amp;role=attend</a></p><p>Meeting time: Aug 2, 2012 10:00 AM (PDT)</p><p>Add to my Outlook Calendar:</p><p><a href="https://www.livemeeting.com/cc/mvp/meetingICS?id=8Z5Z2N&amp;role=attend&amp;i=i.ics">https://www.livemeeting.com/cc/mvp/meetingICS?id=8Z5Z2N&amp;role=attend&amp;i=i.ics</a></p><p>AUDIO INFORMATION</p><p>-Computer Audio(Recommended)</p><p>To use computer audio, you need speakers and microphone, or a</p><p>headset.</p><p>FIRST-TIME USERS</p><p>To save time before the meeting, check your system to make sure it is</p><p>ready to use Microsoft Office Live Meeting.</p><p><a href="http://go.microsoft.com/fwlink/?LinkId=90703">http://go.microsoft.com/fwlink/?LinkId=90703</a></p><p>TROUBLESHOOTING</p><p>Unable to join the meeting? Follow these steps:</p><ol><li><p>Copy this address and paste it into your web browser:</p><p><a href="https://www.livemeeting.com/cc/mvp/join">https://www.livemeeting.com/cc/mvp/join</a></p></li><li><p>Copy and paste the required information:</p><p>Meeting ID: 8Z5Z2N</p><p>Location:<a href="https://www.livemeeting.com/cc/mvp">https://www.livemeeting.com/cc/mvp</a></p></li></ol><p>If you still cannot enter the meeting, contact support:</p><p><a href="http://r.office.microsoft.com/r/rlidLiveMeeting?p1=12&amp;p2=en_US&amp;p3=LMInfo&amp;p4=support">http://r.office.microsoft.com/r/rlidLiveMeeting?p1=12&amp;p2=en_US&amp;p3=LMInfo&amp;p4=support</a></p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17927" alt=""/>
]]></content:encoded></item><item><title>Comparing "Lunches:" v2 to v3</title><link>https://powershell.org/articles/2012-07-24-comparing-lunches-v2-to-v3/</link><guid>https://powershell.org/articles/2012-07-24-comparing-lunches-v2-to-v3/</guid><pubDate>Tue, 24 Jul 2012 16:24:00 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;ve been getting a few questions like this in my inbox:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I love &amp;quot;PowerShell in a Month of Lunches&amp;quot; and I'm wondering how much of
the 3.0 book that is coming out soon will overlap with the one I have
now? In other words, how much of the new book is catching us up to speed
on what's new in 3.0?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;First of all - thanks for the love! Now, here&amp;rsquo;s the lowdown:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;ve been getting a few questions like this in my inbox:</p><pre><code>I love "PowerShell in a Month of Lunches" and I'm wondering how much of
the 3.0 book that is coming out soon will overlap with the one I have
now? In other words, how much of the new book is catching us up to speed
on what's new in 3.0?</code></pre><p>First of all - thanks for the love! Now, here&rsquo;s the lowdown:</p><p><em><a href="http://bit.ly/PSHv3Lunch">Learn Windows PowerShell v3 in a Month of Lunches, 2nd Edition</a>,</em> probably overlaps with the original book by about 70%. Every chapter, however, has been updated with new information for v3. The assumption is that you&rsquo;re learning PowerShell from scratch with either book, so there&rsquo;s no specific callout of &ldquo;new stuff&rdquo; for you. There are also entirely new chapters intended to provide better education - including one chapter where my new co-author and I focus on techniques for stealing repurposing other people&rsquo;s scripts, since we know that&rsquo;s a common task. There&rsquo;s also a whole new chapter on regular expressions, a new chapter on combining what you&rsquo;ve learned to complete a practical task, and so on. But this isn&rsquo;t a &ldquo;just the differences between v2 and v3&rdquo; book; I tried writing a &ldquo;Delta Guide&rdquo; like that once, and met with mixed success.</p><p>You will, however, notice that the new<em>Lunches</em> book actually<strong>omits</strong> some information. Gone are the chapters on error-handling, debugging, and building advanced functions; the new book shows you how to build a parameterized script (not a function) and stops. That&rsquo;s because there&rsquo;s an all-new, full-sized<em>Learn PowerShell Toolmaking in a Month of Lunches</em> coming (watch<a href="http://powershellbooks.com">http://PowerShellBooks.com</a> for links). That takes you through those scripting topics - error handling, debugging, modules, advanced functions, and much more - in a much more thorough way, using a much better build-as-you-go narrative. Think of it as the &ldquo;sequel&rdquo; to the original<em>Lunches</em> book.</p><p>Hope that helps you figure out which of these two books (or both!) best fit your needs. And don&rsquo;t forget there&rsquo;ll be a<a href="http://store.concentratedtech.com/lunchesbundle.php">pre-order for both of them</a>, starting August 1st, which will only be available until the books are finally published.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17923" alt=""/>
]]></content:encoded></item><item><title>Measure PowerShell Performance</title><link>https://powershell.org/articles/2012-07-19-measure-powershell-performance/</link><guid>https://powershell.org/articles/2012-07-19-measure-powershell-performance/</guid><pubDate>Thu, 19 Jul 2012 14:10:00 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;m often asked by folks if there&amp;rsquo;s a &amp;ldquo;better way&amp;rdquo; to do something in a script. Often times, they&amp;rsquo;re looking for a better procedural approach - following best practices like object-based output, for example. But sometimes, they&amp;rsquo;re looking for better performance from a script or command. Well, the good news is that PowerShell itself can help with that.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s consider two short scripts that produce almost identical output. Here&amp;rsquo;s the first:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;m often asked by folks if there&rsquo;s a &ldquo;better way&rdquo; to do something in a script. Often times, they&rsquo;re looking for a better procedural approach - following best practices like object-based output, for example. But sometimes, they&rsquo;re looking for better performance from a script or command. Well, the good news is that PowerShell itself can help with that.</p><p>Let&rsquo;s consider two short scripts that produce almost identical output. Here&rsquo;s the first:</p><p>Get-Process</p><p>|</p><pre><code>Select-Object</code></pre><p>Name</p><p>,</p><p>ID</p><p>,</p><pre><code> @{n</code></pre><p>=</p><h1 id="e" class="ps-heading">&lsquo;PM(KB)&rsquo;
;e<a class="ps-heading-anchor" href="#e" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>{
$_</p><p>.
pm
/</p><p>1kb</p><p>-as</p><p>[</p><p>int</p><p>]
}}
,</p><pre><code> @{n</code></pre><p>=</p><h1 id="e-1" class="ps-heading">&lsquo;VM(KB)&rsquo;
;e<a class="ps-heading-anchor" href="#e-1" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>{
$_</p><p>.
vm
/</p><p>1kb</p><p>-as</p><p>[</p><p>int</p><p>]
}}
|</p><p>Where
{
$_</p><p>.
Name
-like</p><p>&rsquo;s*'
}
|</p><pre><code>Format-Table</code></pre><p>-AutoSize</p><p>Which outputs the following:</p><p>Name Id PM(KB) VM(KB)</p><pre><code>---- -- ------ ------
SearchIndexer 2400 16332 511936
services 532 3700 34296
smss 292 272 4276
spoolsv 1060 3688 55996
svchost 264 12980 93388
svchost 644 2132 38588
svchost 684 2428 31988
svchost 756 10192 1414100
svchost 768 15724 104180
svchost 896 23096 589812
svchost 976 5064 87876
svchost 1100 12528 348288
svchost 2172 5056 94256
System 4 120 4196</code></pre><p>Now consider this second version:</p><p>Get-Process</p><p>-Name</p><p>s*</p><p>|</p><pre><code>Format-Table</code></pre><p>Name</p><p>,</p><p>ID</p><p>,</p><pre><code> @{n</code></pre><p>=</p><h1 id="e-2" class="ps-heading">&lsquo;PM(KB)&rsquo;
;e<a class="ps-heading-anchor" href="#e-2" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>{
$_</p><h1 id="pmformatstring" class="ps-heading">.
pm};formatstring<a class="ps-heading-anchor" href="#pmformatstring" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>&ldquo;N2&rdquo;
}
,</p><pre><code> @{n</code></pre><p>=</p><h1 id="e-3" class="ps-heading">&lsquo;VM(KB)&rsquo;
;e<a class="ps-heading-anchor" href="#e-3" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>{
$_</p><h1 id="vmformatstring" class="ps-heading">.
vm};formatstring<a class="ps-heading-anchor" href="#vmformatstring" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>&ldquo;N2&rdquo;
}
-AutoSize</p><p>And its output:</p><p>Name Id PM(KB) VM(KB)</p><pre><code>---- -- ------ ------
SearchIndexer 2400 16,723,968.00 524,222,464.00
services 532 3,788,800.00 35,119,104.00
smss 292 278,528.00 4,378,624.00
spoolsv 1060 3,776,512.00 57,339,904.00
svchost 264 13,295,616.00 95,629,312.00
svchost 644 2,183,168.00 39,514,112.00
svchost 684 2,539,520.00 33,288,192.00
svchost 756 10,436,608.00 1,448,038,400.00
svchost 768 16,326,656.00 108,277,760.00
svchost 896 15,773,696.00 449,454,080.00
svchost 976 5,132,288.00 89,452,544.00
svchost 1100 12,881,920.00 357,179,392.00
svchost 2172 4,464,640.00 94,494,720.00
System 4 122,880.00 4,296,704.00</code></pre><p>Again, same data, just a different way of getting it. The second one is a bit prettier, too. So is there a performance difference? PowerShell&rsquo;s<strong>Measure-Command</strong> approach can tell us. I&rsquo;ve saved these in script files named First.ps1 and Second.ps1, mainly for convenience; it&rsquo;s completely legitimate to ask Measure-Command to measure a command, rather than a script file, but when the commands get complex I find them easier to read in a script.</p><pre><code>PS C:\&gt; measure-command -Expression { C:\first.ps1 }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 82
Ticks : 825043
TotalDays : 9.5491087962963E-07
TotalHours : 2.29178611111111E-05
TotalMinutes : 0.00137507166666667
TotalSeconds : 0.0825043
TotalMilliseconds : 82.5043
PS C:\&gt; measure-command -Expression { C:\second.ps1 }
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 87
Ticks : 871232
TotalDays : 1.00837037037037E-06
TotalHours : 2.42008888888889E-05
TotalMinutes : 0.00145205333333333
TotalSeconds : 0.0871232
TotalMilliseconds : 87.1232</code></pre><p>Holy smokes.<em>The first one was faster.</em> OK, only by 5 milliseconds, but it was faster! And the first one doesn&rsquo;t exactly use what I&rsquo;d call &ldquo;best practices.&rdquo; It&rsquo;s filtering out processes whose names don&rsquo;t start with &ldquo;S&rdquo; way late in the game - after doing all that Select-ing. It&rsquo;s possible that the second script&rsquo;s Format-Table, with all that FormatString fanciness, is what&rsquo;s making the second script run longer. Fortunately, we can now go in and start tweaking things around, re-testing, and even testing individual commands to get the script running as fast as possible. I&rsquo;ll leave that to you, for these two examples - how fast can you get one to run while producing substantially the same output?</p><p>Measure-Command is a useful tool, but always remember that<em>it&rsquo;s really running your script.</em> This isn&rsquo;t some kind of testing mode (and if you run commands with -WhatIf, you won&rsquo;t get the same performance results). So you&rsquo;ll often want to test this in a virtual environment, getting your command fine-tuned and read for production.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17813" alt=""/>
]]></content:encoded></item><item><title>Kirk Munro, Product Manager, Architect, and PowerShell MVP for hire</title><link>https://powershell.org/articles/2012-07-18-kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/</link><guid>https://powershell.org/articles/2012-07-18-kirk-munro-product-manager-architect-and-powershell-mvp-for-hire/</guid><pubDate>Wed, 18 Jul 2012 23:01:34 +0000</pubDate><description>&lt;p&gt;While I have loved working at Devfarm Software for the past 11 months, circumstances have unfortunately forced us to part ways and as a result I am a free agent now and looking for a new place to hang my hat.  Working with Ben Vierck and Brian Butler at Devfarm has been a fantastic experience, and if it wasn&amp;quot;™t for the small yet annoying detail that there isn&amp;quot;™t enough money in the company to continue to pay my salary and keep the business going full steam ahead, I&amp;quot;™d still be working with them today.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>While I have loved working at Devfarm Software for the past 11 months, circumstances have unfortunately forced us to part ways and as a result I am a free agent now and looking for a new place to hang my hat.  Working with Ben Vierck and Brian Butler at Devfarm has been a fantastic experience, and if it wasn"™t for the small yet annoying detail that there isn"™t enough money in the company to continue to pay my salary and keep the business going full steam ahead, I"™d still be working with them today.</p><p>I officially stopped working for Devfarm on July 6, but I had a few items for<a href="http://powerwf.com/products/powerwf.aspx">PowerWF</a> 3.0 that I wasn"™t quite finished with yet so I spent a good part of last week wrapping up development of those items.  When I wasn"™t doing that, I was hard at work on getting the public beta of<a href="http://wmix.codeplex.com/">wmix</a> out the door (something that I"™ll talk more about later).  With wmix published and my tasks at Devfarm now complete, it"™s time to focus on finding what"™s next.</p><p>If you or someone you know are looking for a talented Product Manager with:</p><ul><li>a very strong technical background with 15 years of experience in software development and infrastructure management;</li><li>recognized deep technical expertise as a 5-time recipient of the Microsoft MVP award for Windows PowerShell, including almost 6 years of dedicated Windows PowerShell experience;</li><li>experience establishing a brand, building awareness, and leveraging social media in marketing;</li><li>strong presentation skills and experience presenting at large conferences such as TechEd; and</li><li>an entrepreneurial spirit</li></ul><p>then please<a href="http://poshoholic.com/contact-me/">drop me a line</a> and lets talk about it.</p><p>Thanks,</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/Product+Manager">Product Manager</a>,<a href="http://technorati.com/tags/Architect">Architect</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/791/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/791/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=791&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Note: PowerShell Book Limited Edition Preorders ONLY AVAILABLE as Preorders!</title><link>https://powershell.org/articles/2012-07-17-note-powershell-book-limited-edition-preorders-only-available-as-preorders/</link><guid>https://powershell.org/articles/2012-07-17-note-powershell-book-limited-edition-preorders-only-available-as-preorders/</guid><pubDate>Tue, 17 Jul 2012 14:28:00 +0000</pubDate><description>&lt;p&gt;Jeffery Hicks, Richard Siddaway, and I wanted to offer a quick clarification on our book preorders. First, the &lt;em&gt;PowerShell In Depth&lt;/em&gt; preorder is &lt;a href="http://store.concentratedtech.com/indepth.php"&gt;currently available&lt;/a&gt;, and there are up to 200 units offered through this preorder. You get a signed-by-all-three-of-us book and an exclusive video companion disc. The &lt;em&gt;Month of Lunches&lt;/em&gt; bundle preorder &lt;a href="http://store.concentratedtech.com/lunchesbundle.php"&gt;will go on sale August 1st&lt;/a&gt;, and will be limited to 100 units. It gets you two autographed books, resources disc, and a fun lunch bag.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Jeffery Hicks, Richard Siddaway, and I wanted to offer a quick clarification on our book preorders. First, the<em>PowerShell In Depth</em> preorder is<a href="http://store.concentratedtech.com/indepth.php">currently available</a>, and there are up to 200 units offered through this preorder. You get a signed-by-all-three-of-us book and an exclusive video companion disc. The<em>Month of Lunches</em> bundle preorder<a href="http://store.concentratedtech.com/lunchesbundle.php">will go on sale August 1st</a>, and will be limited to 100 units. It gets you two autographed books, resources disc, and a fun lunch bag.</p><p><strong>These offers will only be valid until the books are actually released</strong>. At that time, we&rsquo;ll fulfill all of the preorders and<strong>stop further sales.</strong> If we only sell 50 units, for example, then that&rsquo;s all that will be sold for that particular title or titles - we won&rsquo;t be offering this on an ongoing basis.</p><p>So, if you&rsquo;re thinking you want one of these signed, hand-numbered, limited editions&hellip; get on the stick and place your order ASAP. We&rsquo;re working very hard to wrap up production on these books and get them published, especially now that we know Windows 8 / 2012 will RTM in August, so the preorders won&rsquo;t last long.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17746" alt=""/>
]]></content:encoded></item><item><title>Release Dates for PowerShell 3 announced!</title><link>https://powershell.org/articles/2012-07-09-release-dates-for-powershell-3-announced/</link><guid>https://powershell.org/articles/2012-07-09-release-dates-for-powershell-3-announced/</guid><pubDate>Mon, 09 Jul 2012 16:25:00 +0000</pubDate><description>&lt;p&gt;Microsoft has just announced, at its Worldwide Partner Conference, that Windows 8 and Windows Server 2012 are on track to hit &amp;ldquo;Release to Manufacturing&amp;rdquo; the first week of August, with general product availability in October. That means PowerShell v3 will start becoming available in August-September; we can expect v3 to be available as a Web download for older versions of Windows probably by December (based on past performance; it could actually be sooner or a bit later). That&amp;rsquo;ll include Windows 7, Windows Server 2008, and Windows Server 2008 R2, but notably will &lt;em&gt;not&lt;/em&gt; include Windows Vista (does anyone mind?). v3 will not ship for Windows XP or Windows Server 2003; those ships have sailed and it&amp;rsquo;s time to move on!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Microsoft has just announced, at its Worldwide Partner Conference, that Windows 8 and Windows Server 2012 are on track to hit &ldquo;Release to Manufacturing&rdquo; the first week of August, with general product availability in October. That means PowerShell v3 will start becoming available in August-September; we can expect v3 to be available as a Web download for older versions of Windows probably by December (based on past performance; it could actually be sooner or a bit later). That&rsquo;ll include Windows 7, Windows Server 2008, and Windows Server 2008 R2, but notably will<em>not</em> include Windows Vista (does anyone mind?). v3 will not ship for Windows XP or Windows Server 2003; those ships have sailed and it&rsquo;s time to move on!</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17573" alt=""/>
]]></content:encoded></item><item><title>[JULY 25 UPDATE] "PowerShell In Depth" Limited Edition Pre-Orders… as they stand…</title><link>https://powershell.org/articles/2012-07-08-july-25-update-powershell-in-depth-limited-edition-pre-orders-as-they-stand/</link><guid>https://powershell.org/articles/2012-07-08-july-25-update-powershell-in-depth-limited-edition-pre-orders-as-they-stand/</guid><pubDate>Mon, 09 Jul 2012 00:24:00 +0000</pubDate><description>&lt;p&gt;As most of you know, co-authors Jeffery Hicks, Richard Siddaway, and myself are offering a limited edition pre-order of our new &lt;em&gt;PowerShell in Depth&lt;/em&gt; book. You can &lt;a href="http://store.concentratedtech.com/indepth.php"&gt;order from my company&amp;rsquo;s online store&lt;/a&gt;; you&amp;rsquo;re pre-ordering a book autographed by the three of us and bundled with a disc chock full of demo videos timed by us. This isn&amp;rsquo;t the same as the publisher&amp;rsquo;s MEAP preview - you won&amp;rsquo;t get the book ahead of time. The disc is exclusive to this 200-unit edition, and each book is part of a 400-unit edition and is hand-numbered.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As most of you know, co-authors Jeffery Hicks, Richard Siddaway, and myself are offering a limited edition pre-order of our new<em>PowerShell in Depth</em> book. You can<a href="http://store.concentratedtech.com/indepth.php">order from my company&rsquo;s online store</a>; you&rsquo;re pre-ordering a book autographed by the three of us and bundled with a disc chock full of demo videos timed by us. This isn&rsquo;t the same as the publisher&rsquo;s MEAP preview - you won&rsquo;t get the book ahead of time. The disc is exclusive to this 200-unit edition, and each book is part of a 400-unit edition and is hand-numbered.</p><p>I&rsquo;ll be updating this post every couple of weeks as orders are received, but here&rsquo;s the rundown so far. Names are listed as shown on your PayPal invoice.</p><p>(apologies for any typos in names - I&rsquo;m retyping these manually from the order list)</p><ol><li>Annette Ciotola (congratulations - you got #1!)</li><li>James Berkenbile</li><li>Niels Grove-Rasmussen</li><li>Lester Bolton</li><li>Lester Bolton</li><li>Dennis Olidis</li><li>Bruce Langworthy</li><li>Luc Dekens</li><li>Reinhard Teischl</li><li>Kyle Beckman</li><li>Brian Pini</li><li>HPM Smits</li><li>Marlene Poltronieri</li><li>Mark Hourshad</li><li>David Grams</li><li>Brian Foley</li><li>David Dov3</li><li>Gregory Holl</li><li>Steve Gold</li><li>Robert Simmers</li><li>Charles Palmer</li><li>Firoze Bhorat</li><li>Bill Bailey</li><li>Magnus Andersen</li><li>Dennis Yeadon</li><li>Imtiazali Hasham</li><li>Simon Anderson</li><li>Cheryl Fant</li><li>Vivek Shinde</li><li>Tom Collins</li><li>Strategic Technology Consulting</li><li>Y M Wong</li><li>Joakim Westin</li><li>Frederick Alexander</li><li>Tong Young</li><li>Alan Florance</li><li>Jan Engil Ring</li><li>Doug Rohm</li><li>Adam Uffalussy</li><li>Rick Rodriquez</li><li>Thomas Mayeda</li><li>Ryan Weaver</li><li>Chris Carmichael</li><li>Allan Miller</li><li>Peter Cook</li></ol><p>So just about 105 units left. If you don&rsquo;t see your name in the above, then we didn&rsquo;t receive your order via PayPal - and won&rsquo;t have any information for you beyond that. Try placing your order again, and I suggest creating an account with PayPal (which isn&rsquo;t normally mandatory) so that you can track your order.</p><p>We don&rsquo;t have a shipping date on these books yet, but once we do we&rsquo;ll start notifying everyone. You&rsquo;ll receive tracking information in the mail from the USPS once we ship - review your spam folders around that time, if necessary.</p><p><img src="http://powershell.com/cs/aggbug.aspx?PostID=17546" alt=""/>
]]></content:encoded></item><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><item><title>PowerShell V3 "“ ObsoleteAttribute</title><link>https://powershell.org/articles/2012-04-29-powershell-v3-obsoleteattribute/</link><guid>https://powershell.org/articles/2012-04-29-powershell-v3-obsoleteattribute/</guid><pubDate>Mon, 30 Apr 2012 04:39:06 +0000</pubDate><description>&lt;p&gt;PowerShell V3 now supports the ObsoleteAttribute for compiled cmdlets but unfortunately not advanced functions. This is handy to let your users know that a binary cmdlet will be going away in a future release of your binary module.&lt;/p&gt;
&lt;p&gt;As we work on PSCX 3.0 there are a few binary cmdlets that we will mark with this attribute to let you know to switch over to PowerShell&amp;quot;™s built-in equivalent before we eliminate the cmdlet completely in the next release. Here&amp;quot;™s a snippet that shows how to apply the ObsoleteAttribute in your source code:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>PowerShell V3 now supports the ObsoleteAttribute for compiled cmdlets but unfortunately not advanced functions. This is handy to let your users know that a binary cmdlet will be going away in a future release of your binary module.</p><p>As we work on PSCX 3.0 there are a few binary cmdlets that we will mark with this attribute to let you know to switch over to PowerShell"™s built-in equivalent before we eliminate the cmdlet completely in the next release. Here"™s a snippet that shows how to apply the ObsoleteAttribute in your source code:</p><p>`1</p><p>[OutputType(</p><p>typeof</p><p>(MailMessage))]</p><p>2</p><p>[Cmdlet(VerbsCommunications.Send, PscxNouns.SmtpMail,</p><p>3</p><pre><code> DefaultParameterSetName</code></pre><p>=</p><p>"</p><p>Authenticated</p><p>"</p><p>,</p><p>4</p><pre><code> SupportsShouldProcess</code></pre><p>=</p><p>true</p><p>)]</p><p>5</p><p>[Obsolete(</p><p>@"</p><p>The PSCX\SendSmtpMail cmdlet is obsolete</p><p>"</p><ul><li/></ul><p>6</p><p>"</p><p>and will removed in the next version of</p><p>"</p><ul><li/></ul><p>7</p><p>"</p><p>PSCX. Use the built-in Send-MailMessage.</p><p>"</p><p>)]</p><p>8</p><p>public</p><p>class</p><p>SendSmtpMailCommand : PscxCmdlet</p><p>9</p><p>{</p><p>`</p><pre><code>The resulting of executing this cmdlet with PSCX v3 loaded is:</code></pre><p>`C:\PS&gt; Send-SmtpMail</p><p>WARNING: The PSCX\SendSmtpMail cmdlet is obsolete and will removed in the next version of
PSCX. Use the built-in Send-MailMessage.</p><p>`There is an ObsoleteAttribute constructor overload that takes a boolean that converts the warning to an error. I"™m not sure how useful that is but PowerShell does honor that setting and will generate a terminating error in this case:</p><p>`C:\PS&gt; Send-SmtpMail</p><p>The PSCX\SendSmtpMail cmdlet is obsolete and will removed in the next version of PSCX. Use
the built-in Send-MailMessage.
At line:1 char:1</p><ul><li>Send-SmtpMail</li><li><pre tabindex="0"><code> + CategoryInfo : InvalidOperation: (Send-SmtpMail:String) [], RuntimeException
+ FullyQualifiedErrorId : UseOfDeprecatedCmdlet</code></pre></li></ul><p>`It"™s nice to see PowerShell honoring more of the .NET attributes &ldquo;“ where it makes sense that is.</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/rkeithhill.wordpress.com/256/"><img src="http://feeds.wordpress.com/1.0/comments/rkeithhill.wordpress.com/256/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=rkeithhill.wordpress.com&amp;blog=18780344&amp;%23038;post=256&amp;%23038;subd=rkeithhill&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>This April is "Learn More About PowerShell" Month with the 2012 Scripting Games, the 2012 Microsoft Management Summit, and the 2012 North American PowerShell Deep Dive!</title><link>https://powershell.org/articles/2012-03-29-this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/</link><guid>https://powershell.org/articles/2012-03-29-this-april-is-learn-more-about-powershell-month-with-the-2012-scripting-games-the-2012-microsoft-management-summit-and-the-2012-north-american-powershell-deep-dive/</guid><pubDate>Thu, 29 Mar 2012 13:00:00 +0000</pubDate><description>&lt;p&gt;It&amp;quot;™s hard to believe that April is almost here already.  Last week we had record high temperatures reaching 31°C (that&amp;quot;™s 87.8°F for those of you living south of the border), and the night before last it was -16°C (or 3.2°F).  What wonderful consistency.  Maybe that&amp;quot;™s why I like PowerShell so much, because it provides great consistency that just isn&amp;quot;™t apparent in so many other places in life (that&amp;quot;™s a swell tagline: &amp;ldquo;Use PowerShell, because it&amp;rdquo;™s more consistent than the weather&amp;quot;&lt;img src="http://kirkmunro.files.wordpress.com/2012/03/wlemoticon-smile.png?w=595" alt="Smile"&gt; ).  Anyway, I digress&amp;quot;¦back to the topic at hand.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>It"™s hard to believe that April is almost here already.  Last week we had record high temperatures reaching 31°C (that"™s 87.8°F for those of you living south of the border), and the night before last it was -16°C (or 3.2°F).  What wonderful consistency.  Maybe that"™s why I like PowerShell so much, because it provides great consistency that just isn"™t apparent in so many other places in life (that"™s a swell tagline: &ldquo;Use PowerShell, because it&rdquo;™s more consistent than the weather"<img src="http://kirkmunro.files.wordpress.com/2012/03/wlemoticon-smile.png?w=595" alt="Smile"> ).  Anyway, I digress"¦back to the topic at hand.</p><p>This April is<strong>&ldquo;Learn More About PowerShell&rdquo; month</strong>!  Ok, so it"™s not official (it"™s not like I"™m a mayor or anything), but with all of the opportunities to learn about Windows PowerShell in April, it seems like a fitting title, so I"™m declaring it that anyway.  Now, where to begin.</p><h4 id="2012-scripting-games" class="ps-heading">2012 Scripting Games<a class="ps-heading-anchor" href="#2012-scripting-games" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>The first Monday in April (that"™s April 2, Monday next week) marks the official opening of the<a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx">2012 Scripting Games</a>!  The Scripting Games are a great event, because they provide opportunities for beginner and advanced scripters alike to learn more about Windows PowerShell.  There are beginner and advanced divisions, with 10 events in each division.  You participate by visiting the<a href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/02/04/the-2012-windows-powershell-scripting-games-all-links-on-one-page.aspx">official 2012 Scripting Games page</a> starting on Monday April 2 to see the events that are published so far, and you have one week to submit a solution by publishing a script to the<a href="http://2012sg.poshcode.org/">2012 Scripting Games page on PoshCode</a> for each event that you want to enter.  Note that at the time of this writing, the 2012 Scripting Games page on PoshCode shows information related to the 2011 Scripting Games, so for now just put a reminder in your calendar to check these two links out on April 2.</p><p>Once you submit a solution, you can move on to the next event if it is available.  All solutions will be judged by a great panel of expert judges, and once the events close there will be expert commentaries published so that you can learn how different community experts solve these problems with PowerShell scripts.  Watch for my expert commentary to Beginner Event 3 once that event has closed for submissions.</p><p>The 2012 Scripting Games will run until April 13, 2012, although you"™ll have 7 days from the day that each event is posted, so there will still be some time to compete and get your entries in.  There are many prizes to be won, including grand prizes of full conference passes for<a href="http://northamerica.msteched.com/">TechEd North America 2012</a> (another great opportunity to learn more about PowerShell), software licenses for products like<a href="http://powerwf.com/products/powerwf.aspx">PowerWF</a>, and more!  Also, don"™t delay in getting your entries in, because you"™ll barely have time once you"™re done to pack your bags for the<a href="http://www.mms-2012.com/">2012 Microsoft Management Summit</a> in Las Vegas if you"™re going to that conference!</p><h4 id="2012-microsoft-management-summit" class="ps-heading">2012 Microsoft Management Summit<a class="ps-heading-anchor" href="#2012-microsoft-management-summit" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>In just 2½ weeks from now, the<a href="http://www.mms-2012.com/">2012 Microsoft Management Summit</a> (MMS) will start, and it"™s going to be an amazing conference this year.  With the upcoming<a href="http://www.microsoft.com/systemcenter/">Microsoft System Center 2012</a> release, and with<a href="http://windows.microsoft.com/en-US/windows-8/consumer-preview">Windows 8 currently available as a Consumer Preview</a> in the client and the server varieties (both of which include the pre-release version of PowerShell version 3), there are plenty of new opportunities to scale up your PowerShell prowess and scale out your scripting capabilities while learning how to get the most of these new products and platforms by leveraging PowerShell automation.</p><p>At the MMS 2012 conference, there are a total of 13 breakout sessions, 3 instructor led labs, and 5 self-paced labs where you can learn more about Windows PowerShell.  There is also a PowerShell booth that will be staffed by members of the Windows PowerShell team and a few PowerShell MVPs.  I"™ll be working the PowerShell booth as will<a href="http://powershellers.blogspot.ca/">Aleksandar Nikolic</a>, so please come see us and ask questions if you have any.  There will also be other booths for products like the<a href="http://www.microsoft.com/systemcenter/">Microsoft System Center 2012</a> release, which comes with even more PowerShell capabilities than before.  Additionally, there are many companies in the Expo hall that leverage PowerShell in their products and/or provide cmdlets to facilitate automation in their environments, such as NetApp, Veeam, Splunk and<a href="http://www.devfarm.com/">Devfarm Software</a> (the company that I work for) to name but a few.  I"™ll be working the Devfarm booth when I"™m not in the PowerShell booth, so if you look around a little you"™ll have a good chance of finding me.</p><p>If you"™re going to MMS 2012, and you want to learn more about PowerShell, make sure you take advantage of these resources while you"™re there.  The knowledge passed on to you through one breakout session, lab, or discussion with someone in the learning center or expo hall takes many, many hours to put together, and getting that knowledge first hand can be a huge timesaver for you in the long run!</p><h4 id="powershell-related-content-at-mms-2012" class="ps-heading">PowerShell-related Content at MMS 2012<a class="ps-heading-anchor" href="#powershell-related-content-at-mms-2012" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>The following list identifies all of the PowerShell-related sessions and resources that have been announced so far for the MMS 2012 conference for your convenience.  To get the most value out of your conference, make sure you add the sessions, labs, and other items of interest to your schedule so that you don"™t miss out on these great learning opportunities.  I have highlighted the sessions most interesting to me in bold in the list below.</p><pre><code> **Type and Level**
**Title**
**Speaker(s)**
**Coordinates**
**Instructor-led Lab</code></pre><p>300/Advanced**</p><pre><code> [SV-IL306 Introduction to Windows PowerShell Fundamentals](http://www.mms-2012.com/topic/details/SV-IL306)
[**Dan Reger**](http://www.mms-2012.com/Speaker/Details/Dan_Reger)
**Monday, April 16,</code></pre><p>12:00 PM to 1:15 PM
Venetian Ballroom A**</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [SV-B317 Top 10 Things Every Systems Admin Needs to Know about Windows Server 2008 R2 SP1](http://www.mms-2012.com/topic/details/SV-B317)
[Dan Stolts](http://www.mms-2012.com/Speaker/Details/Dan_Stolts)
Monday, April 16,</code></pre><p>3:00 PM to 4:15 PM
Venetian Ballroom G</p><pre><code> **Instructor-led Lab</code></pre><p>300/Advanced**</p><pre><code> [**SV-IL307 What"™s New in Windows PowerShell 3.0**](http://www.mms-2012.com/topic/details/SV-IL307)
[**Lucio Silveira**](http://www.mms-2012.com/Speaker/Details/Lucio_Silveira)
**Monday, April 16,</code></pre><p>4:30 PM to 5:45 PM
Venetian Ballroom A**</p><pre><code> **Breakout Session</code></pre><p>300/Advanced**</p><pre><code> [**CD-B334 Understanding Console Extension for Configuration Manager 2007 and 2012**](http://www.mms-2012.com/topic/details/CD-B334)
[**Matthew Hudson**](http://www.mms-2012.com/Speaker/Details/Matthew%20_Hudson)
**Tuesday, April 17,</code></pre><p>10:15 AM to 11:30 AM
Venetian Ballroom G**</p><pre><code> **Breakout Session</code></pre><p>400/Expert**</p><pre><code> [**CD-B406 Configuration Manager 2012 and PowerShell: Better Together**](http://www.mms-2012.com/topic/details/CD-B406)
[**Greg Ramsey**](http://www.mms-2012.com/Speaker/Details/Greg_Ramsey)
**Tuesday, April 17,</code></pre><p>11:45 AM to 1:00 PM
Venetian Ballroom G**</p><pre><code> Instructor-led Lab</code></pre><p>300/Advanced</p><pre><code> [SV-IL304 Managing Windows Server "8" with Server Manager and PowerShell 3.0](http://www.mms-2012.com/topic/details/SV-IL304)
[Michael Leworthy](http://www.mms-2012.com/Speaker/Details/Michael_Leworthy)
Tuesday, April 17,</code></pre><p>11:45 AM to 1:00 PM
Venetian Ballroom A</p><pre><code> Instructor-led Lab</code></pre><p>300/Advanced</p><pre><code> [SV-IL307 What"™s New in Windows PowerShell 3.0](http://www.mms-2012.com/topic/details/SV-IL307)
[Lucio Silveira](http://www.mms-2012.com/Speaker/Details/Lucio_Silveira)
Tuesday, April 17,</code></pre><p>2:15PM to 3:30PM
Venetian Ballroom A</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [SV-B319 Windows PowerShell for Beginners](http://www.mms-2012.com/topic/details/SV-B319)
[Jeffrey Snover](http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover),</code></pre><p><a href="http://www.mms-2012.com/Speaker/Details/Travis_Jones">Travis Jones</a></p><pre><code> Tuesday, April 17,</code></pre><p>4:00 PM to 5:15 PM
Murano 3301</p><pre><code> **Breakout Session</code></pre><p>200/Intermediate**</p><pre><code> [**SV-B205 Overview of Server Management Technologies in Windows Server "8"**](http://www.mms-2012.com/topic/details/SV-B205)
[**Erin Chapple**](http://www.mms-2012.com/Speaker/Details/Erin_Chapple)**,</code></pre><p>**<a href="http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover"><strong>Jeffrey Snover</strong></a></p><pre><code> **Wednesday, April 18,</code></pre><p>10:15 AM to 11:30 AM
Murano 3301**</p><pre><code> Breakout Session</code></pre><p>200/Intermediate</p><pre><code> [SV-B291 Manage Cisco UCS with System Center 2012 and PowerShell](http://www.mms-2012.com/topic/details/SV-B291)
[Chakri Avala](http://www.mms-2012.com/Speaker/Details/Chakri_Avala)
Wednesday, April 18,</code></pre><p>2:15 PM to 3:30 PM
Titian 2203</p><pre><code> Instructor-led Lab</code></pre><p>300/Advanced</p><pre><code> [SV-IL306 Introduction to Windows PowerShell Fundamentals](http://www.mms-2012.com/topic/details/SV-IL306)
[Dan Reger](http://www.mms-2012.com/Speaker/Details/Dan_Reger)
Wednesday, April 18,</code></pre><p>2:15 PM to 3:30 PM
Venetian Ballroom A</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [SV-B313 Windows Server 2008 R2 Hyper-V FAQs, Tips, and Tricks](http://www.mms-2012.com/topic/details/SV-B313)
[Janssen Jones](http://www.mms-2012.com/Speaker/Details/Janssen_Jones)
Wednesday, April 18,</code></pre><p>4:00 PM to 5:15 PM
Murano 3301</p><pre><code> **Instructor-led Lab</code></pre><p>300/Advanced**</p><pre><code> [**SV-IL304 Managing Windows Server "8" with Server Manager and PowerShell 3.0**](http://www.mms-2012.com/topic/details/SV-IL304)
[**Michael Leworthy**](http://www.mms-2012.com/Speaker/Details/Michael_Leworthy)
**Thursday, April 19,</code></pre><p>8:30 AM to 9:45 AM
Venetian Ballroom A**</p><pre><code> **Breakout Session</code></pre><p>400/Expert**</p><pre><code> [**SV-B405 Advanced Automation Using Windows PowerShell 2.0**](http://www.mms-2012.com/topic/details/SV-B405)
[**Jeffrey Snover**](http://www.mms-2012.com/Speaker/Details/Jeffrey_Snover)**,</code></pre><p>**<a href="http://www.mms-2012.com/Speaker/Details/Travis_Jones"><strong>Travis Jones</strong></a></p><pre><code> **Thursday, April 19,</code></pre><p>10:15 AM to 11:30 AM
Veronese 2401**</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [AM-B315 SharePoint as a Workload in a Private Cloud](http://www.mms-2012.com/topic/details/AM-B315)
[Adam Hall](http://www.mms-2012.com/speaker/details/Adam_Hall),</code></pre><p><a href="http://www.mms-2012.com/speaker/details/Michael_Frank">Michael Frank</a></p><pre><code> Thursday, April 19,</code></pre><p>10:15 AM to 11:30 AM
Titian 2206</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [SV-B312 Don Jones"™ Windows PowerShell Crash Course](http://www.mms-2012.com/topic/details/SV-B312)
[Don Jones](http://www.mms-2012.com/Speaker/Details/Don_Jones)
Thursday, April 19,</code></pre><p>11:45 AM to 1:00 PM
Venetian Ballroom G</p><pre><code> Breakout Session</code></pre><p>300/Advanced</p><pre><code> [SV-B315 Managing Group Policy Using PowerShell](http://www.mms-2012.com/topic/details/SV-B315)
[Darren Mar-Elia](http://www.mms-2012.com/Speaker/Details/Darren_Mar-Elia)
Thursday, April 19,</code></pre><p>11:45 AM to 1:00 PM
Murano 3301</p><pre><code> **Breakout Session</code></pre><p>300/Advanced**</p><pre><code> [**FI-B322 Virtual Machine Manager 2012: PowerShell is your Friend, and Here"™s Why**](http://www.mms-2012.com/topic/details/FI-B322)
[**Hector Linares**](http://www.mms-2012.com/Speaker/Details/Hector_Linares)**,</code></pre><p>**<a href="http://www.mms-2012.com/Speaker/Details/Susan_Hill"><strong>Susan Hill</strong></a></p><pre><code> **Thursday, April 19,</code></pre><p>11:45 AM to 1:00 PM
Titian 2206**</p><pre><code> Breakout Session</code></pre><p>400/Expert</p><pre><code> [SV-B406 PowerShell Remoting in Depth](http://www.mms-2012.com/topic/details/SV-B406)
[Don Jones](http://www.mms-2012.com/Speaker/Details/Don_Jones)
Friday, April 20,</code></pre><p>8:30 AM to 9:45 AM
Bellini 2001</p><pre><code> Hands-on lab</code></pre><p>300/Advanced</p><pre><code> [SV-L302 Active Directory Deployment and Management Enhancements](http://www.mms-2012.com/topic/details/SV-L302)
N/A
Hands-on lab, available in the HOL area
**Hands-on lab</code></pre><p>300/Advanced**</p><pre><code> [**SV-L304 Managing Windows Server "8" with Server Manager and Windows PowerShell 3.0**](http://www.mms-2012.com/topic/details/SV-L304)
**N/A**
**Hands-on lab, available in the HOL area**
Hands-on lab</code></pre><p>300/Advanced</p><pre><code> [SV-L305 Managing Network Infrastructure with Windows Server "8"](http://www.mms-2012.com/topic/details/SV-L305)
N/A
Hands-on lab, available in the HOL area
Hands-on lab</code></pre><p>300/Advanced</p><pre><code> [SV-L306 Introduction to Windows PowerShell Fundamentals](http://www.mms-2012.com/topic/details/SV-L306)
N/A
Hands-on lab, available in the HOL area
Hands-on lab</code></pre><p>300/Advanced</p><pre><code> [SV-L307 What"™s New in Windows PowerShell 3.0](http://www.mms-2012.com/topic/details/SV-L307)
N/A
Hands-on lab, available in the HOL area</code></pre><h4 id="2012-north-america-powershell-deep-dive" class="ps-heading">2012 North America PowerShell Deep Dive<a class="ps-heading-anchor" href="#2012-north-america-powershell-deep-dive" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>As if all of these PowerShell learning opportunities weren"™t already enough, there"™s even more you can do in<strong>&ldquo;Learn More About PowerShell&rdquo; month</strong>.  At the end of April, a week after MMS is finished, the 2nd annual North American<a href="http://www.theexpertsconference.com/us/2012/powershell-deep-dive/">2012 PowerShell Deep Dive</a> conference will start.  This conference is second to none when it comes to learning more about PowerShell.  The sessions are fantastic, and the conversations perhaps even more so.  What makes this conference unique is the focus on shorter, 35-minute sessions that quickly drill into a specific topic and give you a ton of information on that topic.  There are also short, 5-minute lightning rounds which give speakers an opportunity to quickly show off one of their favorite aspects of PowerShell.  The 35-minute format, 5-minute lightning rounds, and the depth of the content in these sessions are unique to this conference, and you won"™t get the same value for PowerShell content anywhere else.  Add to that the evening script club-style events and it"™s really an experience that is second to none.  I highly recommend you consider attending if you"™re already using PowerShell and want to take your skills to new heights.  You can still register for this great event on the<a href="https://www.ustechsregister.com/TEC2012/RegistrationSelect.aspx">registration page for The Experts Conference (TEC)</a>.</p><p>This conference takes place in sunny San Diego from April 29th until May 2nd, and it gives you 3 days of 100% PowerShell content.  I"™m fortunate enough to be attending this conference as well, and I"™ll be giving sessions about proxy functions and about WMI and PowerShell.  If you do attend, please make a point to say hello and introduce yourself if I haven"™t met you already.</p><p>Here"™s a quick look at the content that is being presented at the PowerShell Deep Dive this year:</p><pre><code> **Title**
**Speaker(s)**
**Date**
FIM PowerShell Workshop
Craig Martin
Sunday, April 29, 2012
Keynote
Jeffrey Snover
Monday, April 30, 2012</code></pre><p>8:00 AM to 10:00 AM</p><pre><code> When old API"™s save the day (pinvoke and native windows dlls)
Tome Tanasovski
Monday, April 30, 2012</code></pre><p>10:30 AM to 11:05 AM</p><pre><code> Get Your Game On! Leveraging Proxy Functions in Windows PowerShell
Kirk "Poshoholic" Munro
Monday, April 30, 2012</code></pre><p>11:10 AM to 11:45 AM</p><pre><code> Using Splunk Reskit with PowerShell to revolutionize your script process
Brandon Shell
Monday, April 30, 2012</code></pre><p>1:00 PM to 2:15 PM</p><pre><code> Lightning Round
Determined at event
Monday, April 30, 2012</code></pre><p>2:20 PM to 3:05 PM</p><pre><code> Remoting Improvement in Windows PowerShell V3
Krishna Vutukuri
Monday, April 30, 2012</code></pre><p>3:10 PM to 3:45 PM</p><pre><code> New Hyper-V PowerShell Module in Windows Server 8
Adam Driscoll
Monday, April 30, 2012</code></pre><p>4:15 PM to 5:30 PM</p><pre><code> Formatting in Windows PowerShell
Jim Truher
Tuesday, May 1, 2012</code></pre><p>8:00 AM to 8:35 AM</p><pre><code> PowerShell and WMI: A Love Story
Kirk "Poshoholic" Munro
Tuesday, May 1, 2012</code></pre><p>8:40 AM to 9:15 AM</p><pre><code> PowerShell as a Web Language
James Brundage
Tuesday, May 1, 2012</code></pre><p>9:45 AM to 11:00 AM</p><pre><code> PowerShell V3 in Production
Steve Murawski
Tuesday, May 1, 2012</code></pre><p>11:15 AM to 11:50 AM</p><pre><code> Lightning Round
Determined at event
Tuesday, May 1, 2012</code></pre><p>11:55 AM to 12:30 AM</p><pre><code> How Microsoft Uses PowerShell for Testing Automation and Deployment of FIM
Kinnon McDonell
Tuesday, May 1, 2012</code></pre><p>1:45 PM to 3:00 PM</p><pre><code> Job Types in Windows PowerShell 3.0
Travis Jones
Tuesday, May 1, 2012</code></pre><p>3:15 PM to 3:50 PM</p><pre><code> Creating a Corporate PowerShell Module
Tome Tanasovski
Tuesday, May 1, 2012</code></pre><p>3:55 PM to 4:30 PM</p><pre><code> Cmdlets over Objects (CDXML)
Richard Siddaway
Wednesday, May 2, 2012</code></pre><p>8:00 AM to 8:35 AM</p><pre><code> Build your own remoting endpoint with PowerShell V3
Aleksandar Nikolic
Wednesday, May 2, 2012</code></pre><p>8:40 AM to 9:15 AM</p><pre><code> PowerShell Workflows and the Windows Workflow Foundation for the IT Pro
Steve Murawski
Wednesday, May 2, 2012</code></pre><p>9:45 AM to 11:00 AM</p><pre><code> Incorporating Microsoft Office into Windows PowerShell
Jeffery Hicks
Wednesday, May 2, 2012</code></pre><p>11:15 AM to 11:50 AM</p><pre><code> TBD
Bruce Payette
Wednesday, May 2, 2012</code></pre><p>11:55 AM to 12:30 PM</p><p>Wow, that"™s a lot of PowerShell!  With all of these opportunities, whether you"™re trying to learn PowerShell without incurring a huge expense, or travelling to conferences to learn more about technologies there, there"™s definitely something for everyone in what looks to be an awesome<strong>&ldquo;Learn More About PowerShell&rdquo; month</strong>.</p><p>Good luck, wherever your learning adventures take you!</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/Scripting+Games">Scripting Games</a>,<a href="http://technorati.com/tags/MMS">MMS</a>,<a href="http://technorati.com/tags/PowerShell+Deep+Dive">PowerShell Deep Dive</a>,<a href="http://technorati.com/tags/System+Center+2012">System Center 2012</a>,<a href="http://technorati.com/tags/Devfarm">Devfarm</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/765/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/765/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=765&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Windows 8"¦reimagined?</title><link>https://powershell.org/articles/2012-03-06-windows-8reimagined/</link><guid>https://powershell.org/articles/2012-03-06-windows-8reimagined/</guid><pubDate>Wed, 07 Mar 2012 03:30:38 +0000</pubDate><description>&lt;p&gt;The series of releases of client versions of Microsoft Windows seems to suffer all too much the same fate as Star Trek movies have in the past.  This concept has already been discussed before, and there are even blog posts about it, such as &lt;a href="http://www.ewanspence.com/blog/2009/01/08/why-windows-7-reminds-me-of-the-star-trek-movies/"&gt;Ewan Spence&amp;quot;™s comparison of Windows releases between versions 3.0 and Windows 7 to the Star Trek movies from &amp;ldquo;The Motion Picture&amp;rdquo; to &amp;ldquo;First Contact&amp;rdquo;&lt;/a&gt;.  Windows 7 did indeed end up being a very impressive version of Windows, much like First Contact was a very impressive movie in the Star Trek franchise, and now we&amp;quot;™re watching with anticipation since Windows 8 Consumer Preview is now available and Microsoft is marching steadfast towards its release.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>The series of releases of client versions of Microsoft Windows seems to suffer all too much the same fate as Star Trek movies have in the past.  This concept has already been discussed before, and there are even blog posts about it, such as<a href="http://www.ewanspence.com/blog/2009/01/08/why-windows-7-reminds-me-of-the-star-trek-movies/">Ewan Spence"™s comparison of Windows releases between versions 3.0 and Windows 7 to the Star Trek movies from &ldquo;The Motion Picture&rdquo; to &ldquo;First Contact&rdquo;</a>.  Windows 7 did indeed end up being a very impressive version of Windows, much like First Contact was a very impressive movie in the Star Trek franchise, and now we"™re watching with anticipation since Windows 8 Consumer Preview is now available and Microsoft is marching steadfast towards its release.</p><p>Following the analogy that Windows releases are like Star Trek movie releases then, and that the success of Windows 7 was analogous to that of Star Trek: First Contact, it would seem that next two releases of Windows should be pretty much flops.  Star Trek: Insurrection and Star Trek: Nemesis were both pretty forgettable films, offering very little to get excited about.  Maybe Microsoft has picked up on these intertwined fates, inspiring them to try to skip over these failures by fast forwarding to the very successful &ldquo;reboot&rdquo; of the Star Trek movie franchise by picking coming out with what they call a &ldquo;reimagined&rdquo; Windows.  Did they succeed in making this jump?  Is Windows 8 a truly inspiring, innovative, reimagining of the Windows OS?</p><p>Only time will tell what the outcome will be.  First impressions really count though.  Today, based on experiences with the Windows 8 Consumer Preview, Windows 8 appears as if it will show off very well on a tablet device, where the new UI makes more sense.  For business users like me though that rely heavily on their keyboard and mouse to get work done, I"™m really afraid that they"™ve gone and hidden all of the great features it includes behind a completely different UI paradigm that just doesn"™t jive with the needs of a business worker.  It may work well for casual computing at home, but so far it looks to me like businesses might want to consider skipping this one for their non-touch devices like laptops and desktops, at least until they can reconfigure it more like Windows 7 by removing the whimsical metro UI elements such as tiles, charms and &ldquo;magic&rdquo; corners.</p><p>What do you think?  Is the reimagined Windows living up to your expectations?  Do you think the new metro UI has a place in business computing?  Or do you wish you had your start menu back?</p><p>I"™m curious if I"™m alone in my perspective or not.  My gut tells me I"™m not going to be alone in this perspective.  Sound off in the comments and let me know what you think.</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/Windows+8">Windows 8</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/761/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/761/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=761&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerShell V3 Beta"“Better NTFS Alternate Data Stream Handling</title><link>https://powershell.org/articles/2012-03-04-powershell-v3-beta-better-ntfs-alternate-data-stream-handling/</link><guid>https://powershell.org/articles/2012-03-04-powershell-v3-beta-better-ntfs-alternate-data-stream-handling/</guid><pubDate>Mon, 05 Mar 2012 04:37:08 +0000</pubDate><description>&lt;p&gt;One of the many new features in Windows PowerShell V3 is better support for alternate data streams (ADS) in NTFS files.  ADS allows an NTFS file to contain additional data that is not part of the &amp;ldquo;main&amp;rdquo; stream i.e. the file&amp;quot;™s primary content.  Tools like Windows Explorer or even PowerShell&amp;quot;™s &lt;strong&gt;Get-ChildItem&lt;/strong&gt; cmdlet don&amp;quot;™t show these extra data streams.  In fact the file size reported by both of these tools does not take into account the data stored in the alternate streams.  For more information on ADS check out the &lt;a href="http://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29"&gt;NTFS topic on Wikipedia&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>One of the many new features in Windows PowerShell V3 is better support for alternate data streams (ADS) in NTFS files.  ADS allows an NTFS file to contain additional data that is not part of the &ldquo;main&rdquo; stream i.e. the file"™s primary content.  Tools like Windows Explorer or even PowerShell"™s<strong>Get-ChildItem</strong> cmdlet don"™t show these extra data streams.  In fact the file size reported by both of these tools does not take into account the data stored in the alternate streams.  For more information on ADS check out the<a href="http://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29">NTFS topic on Wikipedia</a>.</p><p>A common use of ADS is to indicate that a file downloaded by Internet Explorer came from the Internet Zone.  Files coming from the internet could be potentially dangerous.  Various applications check for this stream and if it is present and contains information indicating the &ldquo;Internet&rdquo; zone, they might block access or in the case of PowerShell"™s<em>RemoteSigned</em> execution policy, only execute the file if it is signed.</p><p>Previous to PowerShell V3, you could use the<a href="http://technet.microsoft.com/en-us/sysinternals/bb897440">SysInternals streams.exe tool</a> to list and remove alternate data streams.  A common application of this tool was to delete all streams in a file.  That was a rather crude but effective way to &ldquo;unblock&rdquo; a file downloaded from the internet.</p><p>This is also one area where CMD.EXE was one up on PowerShell.  From a CMD prompt, you can use &ldquo;dir /r&rdquo; to list files and their alternate data streams.  You can also create/overwrite streams with CMD.exe like so "
echo.&gt;test.exe:Zone.Identifier
" which would &ldquo;unblock&rdquo; an internet zone file.  You can also unblock such files by selecting the file"™s Properties in Windows Explorer and pressing the &ldquo;Unblock&rdquo; button at the bottom right of the general tab.  However this is not convenient if you need to do this to dozens or hundreds of files.  With the<a href="http://pscx.codeplex.com/">PowerShell Community Extensions</a> 2.0, we introduced an<strong>Unblock-File</strong> cmdlet that would delete only the stream named Zone.Identifier.  That is the stream that Internet Explorer creates when you download a file.  Fortunately with PowerShell V3, we can obsolete that cmdlet because V3 offers several ways to manage alternate data streams.</p><p>First up is PowerShell"™s own<strong>Unblock-File</strong> cmdlet which, like the PSCX equivalent, is quite easy to use:</p><p>`C:\PS&gt; Get-Command Unblock-File -All
Capability Name   ModuleName</p><hr><p>Cmdlet Unblock-File Pscx
Cmdlet Unblock-File Microsoft.PowerShell.Utility
C:\PS&gt; Get-ChildItem *.ps1 | Microsoft.PowerShell.Utility\Unblock-File
`Note that you wouldn"™t normally need to prefix<strong>Unblock-File</strong> with<em>Microsoft.PowerShell.Utility</em>.  In this case, I wanted to make sure I was using the PowerShell<strong>Unblock-File</strong> and not the one from PSCX.</p><p>In addition to using the big gun of<strong>Unblock-File</strong> you can also manipulate streams with the following cmdlets:</p><p>`C:\PS&gt; Get-Command -ParameterName Stream | Where ModuleName -match &lsquo;Microsoft.*?Manag&rsquo;
Capability Name ModuleName</p><hr><p>Cmdlet Add-Content Microsoft.PowerShell.Management
Cmdlet Clear-Content Microsoft.PowerShell.Management
Cmdlet Get-Content Microsoft.PowerShell.Management
Cmdlet Get-Item Microsoft.PowerShell.Management
Cmdlet Remove-Item Microsoft.PowerShell.Management
Cmdlet Set-Content Microsoft.PowerShell.Management
`Here is how you can list all the alternate data streams in a file and the contents of any particular data stream:</p><p>`C:\PS&gt; Get-Item .\Pscx-2.0.0.1.zip -Stream *
FileName: C:\Users\Keith\Downloads\Pscx-2.0.0.1.zip
Stream Length</p><hr><p>:$DATA 1799345
Zone.Identifier 26
C:\PS&gt; Get-Content .\Pscx-2.0.0.1.zip -Stream Zone.Identifier
[ZoneTransfer]
ZoneId=3
`Note that<strong>:$DATA</strong> is the main stream i.e. the file"™s primary contents.</p><p>If you need to clear the contents of a data stream without removing the stream completely, you can use<strong>Clear-Content"™s &ldquo;“Stream</strong> parameter e.g.:</p><p>`C:\PS&gt; Clear-Content .\Pscx-2.0.0.1.zip -Stream Zone.Identifier
C:\PS&gt; Get-Content .\Pscx-2.0.0.1.zip -Stream Zone.Identifier
C:\PS&gt; Get-Item .\Pscx-2.0.0.1.zip -Stream *
FileName: C:\Users\Keith\Downloads\Pscx-2.0.0.1.zip
Stream Length</p><hr><p>:$DATA 1799345
Zone.Identifier 0
`To completely remove the stream, use<strong>Remove-Item&rdquo;™s &ldquo;“Stream</strong> parameter e.g.:</p><p>`C:\PS&gt; Remove-Item .\Pscx-2.0.0.1.zip -Stream Zone.Identifier
C:\PS&gt; Get-Item .\Pscx-2.0.0.1.zip -Stream *
FileName: C:\Users\Keith\Downloads\Pscx-2.0.0.1.zip
Stream Length</p><hr><p>:$DATA 1799345
`And if you need to create an alternate stream, you can do so using<strong>Add-Content&rdquo;™s &ldquo;“Stream</strong> parameter e.g.:</p><p><code>C:\PS&gt; Add-Content Pscx-2.0.0.1.zip -Str Zone.Identifier "[ZoneTransfer]</code>r`nZoneId=3&rdquo;
C:\PS&gt; Get-Item Pscx-2.0.0.1.zip -Stream *
FileName: C:\Users\Keith\Downloads\Pscx-2.0.0.1.zip
Stream Length</p><hr><p>:$DATA 1799345
Zone.Identifier 26
C:\PS&gt; Get-Content .\Pscx-2.0.0.1.zip -Stream Zone.Identifier
[ZoneTransfer]
ZoneId=3
`Finally,<strong>Set-Content &ldquo;“Stream</strong> can be used to modify the content of an existing stream.</p><p>The new <strong>Unblock-File</strong> cmdlet as well as the upgrades to the *<strong>-Content</strong> and<strong>Get/Remove-Item</strong>  cmdlets are a very welcome enhancement to PowerShell&rdquo;™s file handling capabilities.</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/rkeithhill.wordpress.com/248/"><img src="http://feeds.wordpress.com/1.0/comments/rkeithhill.wordpress.com/248/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=rkeithhill.wordpress.com&amp;blog=18780344&amp;%23038;post=248&amp;%23038;subd=rkeithhill&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerSE 2.7 KB: PowerShell profile does not load on startup</title><link>https://powershell.org/articles/2012-01-25-powerse-2-7-kb-powershell-profile-does-not-load-on-startup/</link><guid>https://powershell.org/articles/2012-01-25-powerse-2-7-kb-powershell-profile-does-not-load-on-startup/</guid><pubDate>Wed, 25 Jan 2012 19:01:59 +0000</pubDate><description>&lt;p&gt;Note: This blog post refers to an issue identified in PowerSE 2.7.0. It has been corrected in PowerSE 2.7.1, which is now available.&lt;/p&gt;
&lt;p&gt;With the release we published yesterday, both &lt;a href="http://powerwf.com/products/powerse.aspx"&gt;PowerSE&lt;/a&gt; and &lt;a href="http://powerwf.com/products/powerwf.aspx"&gt;PowerWF&lt;/a&gt; received a new feature: product-specific profiles.  This feature allows you to have profile scripts that you only want run in PowerSE or PowerWF run there so that you don&amp;quot;™t have to use if statements to check the host name in your profile scripts.  With this feature we also created the initial PowerSE and PowerWF profile scripts such that they dot-source the native PowerShell profile script by default so that what runs in PowerShell also runs in PowerSE.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Note: This blog post refers to an issue identified in PowerSE 2.7.0. It has been corrected in PowerSE 2.7.1, which is now available.</p><p>With the release we published yesterday, both<a href="http://powerwf.com/products/powerse.aspx">PowerSE</a> and<a href="http://powerwf.com/products/powerwf.aspx">PowerWF</a> received a new feature: product-specific profiles.  This feature allows you to have profile scripts that you only want run in PowerSE or PowerWF run there so that you don"™t have to use if statements to check the host name in your profile scripts.  With this feature we also created the initial PowerSE and PowerWF profile scripts such that they dot-source the native PowerShell profile script by default so that what runs in PowerShell also runs in PowerSE.</p><p>Unfortunately there is one small detail that was left out of the PowerSE installer for this feature: the installation of the initial PowerSE-specific profile. As a result, if you download PowerSE 2.7, your PowerShell profile won"™t run right away.  Fortunately the fix is simple.  All you need to do is invoke this script from inside PowerSE 2.7:</p><blockquote><p>if (-not (Test-Path -LiteralPath $profile)) {<br>
    Set-Content -Path $profile -Value @&rsquo;<br>
if (Test-Path -LiteralPath $profile.CurrentUserPowerShellHost) {<br>
    . $profile.CurrentUserPowerShellHost<br>
}<br>
&lsquo;@<br>
}</p></blockquote><p>Once you have run that script, your PowerSE profile will exist and it will be defined to load your PowerShell profile.  Restart PowerSE 2.7 and you"™ll have your PowerShell profile loaded by default again.</p><p>Note that this does not apply to PowerWF users, the profile scripts were added correctly to the installer for that release.</p><p>My apologies for the inconvenience.  We hope to have this resolved in the product itself very soon.  In the meantime this short script should work around the issue for you.</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/PowerSE">PowerSE</a>,<a href="http://technorati.com/tags/KB">KB</a>,<a href="http://technorati.com/tags/profile">profile</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/750/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/750/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=750&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerWF and PowerSE 2.7 are now available</title><link>https://powershell.org/articles/2012-01-24-powerwf-and-powerse-2-7-are-now-available/</link><guid>https://powershell.org/articles/2012-01-24-powerwf-and-powerse-2-7-are-now-available/</guid><pubDate>Tue, 24 Jan 2012 17:44:30 +0000</pubDate><description>&lt;p&gt;This morning &lt;a href="http://powerwf.com/products/powerwf.aspx"&gt;PowerWF&lt;/a&gt; and &lt;a href="http://powerwf.com/products/powerse.aspx"&gt;PowerSE&lt;/a&gt; 2.7 were released to the web and they can now be downloaded from &lt;a href="http://www.powerwf.com/"&gt;http://www.powerwf.com&lt;/a&gt;.  These releases offer a lot of new value to PowerWF and PowerSE users, as follows:&lt;/p&gt;
&lt;h4 id="powerwf-27-highlights" class="ps-heading"&gt;PowerWF 2.7 Highlights&lt;a class="ps-heading-anchor" href="#powerwf-27-highlights" 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;/h4&gt;
&lt;p&gt;&lt;strong&gt;New Start Page with New Workflows&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The start page in PowerWF has been completely redesigned to provide immediate value out of the box for PowerWF customers.  The new design highlights the Workflow Library that is included with PowerWF, allowing customers to play workflows in the library without opening a workflow or script document.  Users can also customize the workflows on the start page and add their own groups of workflows for easier runbook automation.  This immediate out of the box value is included for PowerWF customers to allow them to leverage the power of Workflows and PowerShell in their environments without requiring any knowledge of PowerShell or Workflows.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>This morning<a href="http://powerwf.com/products/powerwf.aspx">PowerWF</a> and<a href="http://powerwf.com/products/powerse.aspx">PowerSE</a> 2.7 were released to the web and they can now be downloaded from<a href="http://www.powerwf.com/">http://www.powerwf.com</a>.  These releases offer a lot of new value to PowerWF and PowerSE users, as follows:</p><h4 id="powerwf-27-highlights" class="ps-heading">PowerWF 2.7 Highlights<a class="ps-heading-anchor" href="#powerwf-27-highlights" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p><strong>New Start Page with New Workflows</strong></p><p>The start page in PowerWF has been completely redesigned to provide immediate value out of the box for PowerWF customers.  The new design highlights the Workflow Library that is included with PowerWF, allowing customers to play workflows in the library without opening a workflow or script document.  Users can also customize the workflows on the start page and add their own groups of workflows for easier runbook automation.  This immediate out of the box value is included for PowerWF customers to allow them to leverage the power of Workflows and PowerShell in their environments without requiring any knowledge of PowerShell or Workflows.</p><p><strong>New Management Packs for System Center Service Manager (SCSM)</strong></p><p>PowerWF for Service Manager has always included several useful management packs for SCSM in the product.  In this release, even more management packs for SCSM have been added.  Now, with a click of a button you can deploy management packs that automatically close resolved incidents, expire inactive problem announcements, cancel pending activities for closed change requests, identify problems from incident trends, notify incident authors about unresolved incidents, and get SCSM statistics.  These management packs are only available for licensed users of PowerWF for Service Manager.</p><p><strong>Improved Toolbox Search</strong></p><p>The search engine in the Activity toolbox just got better!  Now you can search using command names or keywords and PowerWF will return the best matches based on the terms you provided.  This includes searching with keywords that are only referenced in activity documentation and not in the command name itself.  For example, if you"™re a VMware administrator, simply entering &ldquo;vMotion&rdquo; into the search box will reveal the MoveVM activity that is necessary to perform vMotion tasks.</p><p><strong>Product-Specific Profile Support</strong></p><p>PowerWF now uses its own product-specific profile support, and it updates the $profile variable to include the paths to each of the relevant profiles that you use. By default the PowerWF profile dot-sources the native PowerShell console profile, however you can change this behaviour as required by simply modifying the profile yourself in PowerSE.</p><h4 id="powerse-27-highlights" class="ps-heading">PowerSE 2.7 Highlights<a class="ps-heading-anchor" href="#powerse-27-highlights" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p><strong>Easier Breakpoint Management</strong></p><p>Breakpoint management in PowerSE just got a lot easier.  PowerSE now includes a Breakpoints pane to allow you to see all breakpoints you have set in your scripting environment, and you can now manage breakpoints using the breakpoint cmdlets and see the breakpoints you have created in the Breakpoints pane.  This gives you easy creation of line breakpoints using the Toggle Breakpoint feature or command and variable breakpoints using the Set-PSBreakpoint cmdlet (or sbp alias for short).</p><p><strong>Breakpoints Preserved Across Sessions</strong></p><p>Breakpoints are now automatically preserved across sessions, allowing you to continue debugging your scripts from one session to the next.  They are also preserved when you close a file, so you won"™t have to reset breakpoints each time you return to a script you were working on.  You can still remove breakpoints of course, using the Toggle Breakpoint feature or the Remove-PSBreakpoint cmdlet.</p><p><strong>Improved Help Search</strong></p><p>PowerShell help topic files are now included in the help search pane, allowing you to search for help for integral keywords like if or foreach, or for topics like &ldquo;Advanced functions&rdquo;, or you can learn more about remoting by searching for &ldquo;Remote&rdquo;.  Also, if no results are found when you search, PowerSE will now include a keyword search in command descriptions to allow for users to discover commands using related terms, such as &ldquo;vMotion&rdquo;.</p><p><strong>Product-Specific Profile Support</strong></p><p>PowerSE now uses its own product-specific profile support, and it updates the $profile variable to include the paths to each of the relevant profiles that you use.  By default the PowerSE profile dot-sources the native PowerShell console profile, however you can change this behaviour as required by simply modifying the profile yourself in PowerSE.</p><h4 id="and-thats-not-all" class="ps-heading">And that"™s not all!<a class="ps-heading-anchor" href="#and-thats-not-all" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>This shows you a few of the highlights of this release, but of course there were plenty of bug fixes, some performance improvements, and a few other minor enhancements that were included as well.  Whether you"™re a current PowerWF or PowerSE customer, or someone who is looking for great tools for working with PowerShell, Workflow, and Management Packs, I strongly encourage you to give this release a try and let us know what you think.</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/PowerWF">PowerWF</a>,<a href="http://technorati.com/tags/PowerSE">PowerSE</a>,<a href="http://technorati.com/tags/SCSM">SCSM</a>,<a href="http://technorati.com/tags/management+pack">management pack</a>,<a href="http://technorati.com/tags/workflow">workflow</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/747/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/747/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=747&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>Essential PowerShell: To alias, or not to alias, that is the question</title><link>https://powershell.org/articles/2012-01-05-essential-powershell-to-alias-or-not-to-alias-that-is-the-question/</link><guid>https://powershell.org/articles/2012-01-05-essential-powershell-to-alias-or-not-to-alias-that-is-the-question/</guid><pubDate>Thu, 05 Jan 2012 14:30:00 +0000</pubDate><description>&lt;p&gt;Recently there was a discussion between community experts and a product team about a module they are working on.  The topic being discussed was cmdlet aliases: whether or not they should provide aliases for their cmdlets out of the box and if so, how they should be provided.  Aliases are great for ad-hoc PowerShell work, which is what most PowerShell users do at this point, and incredibly useful when you&amp;quot;™re trying to put out a fire and managing your infrastructure using PowerShell.  However, there are many important things that module authors need to consider when planning aliases for their cmdlets, as follows:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Recently there was a discussion between community experts and a product team about a module they are working on.  The topic being discussed was cmdlet aliases: whether or not they should provide aliases for their cmdlets out of the box and if so, how they should be provided.  Aliases are great for ad-hoc PowerShell work, which is what most PowerShell users do at this point, and incredibly useful when you"™re trying to put out a fire and managing your infrastructure using PowerShell.  However, there are many important things that module authors need to consider when planning aliases for their cmdlets, as follows:</p><ol><li><p>There are many cmdlets out now, and more and more every month.  Coming up with a vsa (very short alias) that is<em>unique</em> is a challenge at best, and the more time goes by the more tla&rsquo;s (three-letter aliases) will get used up.  The likelihood of an alias conflict is already high, and increasing all the time given the number of commands that are available both from Microsoft and from third party vendors.</p></li><li><p>The land grab with alias names is worse than it is with functions or cmdlets.  With functions or cmdlets, you can have multiple modules loaded with conflicting names and access either command using the fully qualified command name.  With aliases though you are not provided this same capability &ldquo;“ there can be only one.  Aliases are simply commands set to a single value and they cannot be qualified using a module name qualifier to disambiguate if a name conflict arises.</p></li><li><p>Depending on how careful (or not) that developers are, it is very easy for a module author to completely take over (overwrite) an existing alias with no warning or message indicating that this has happened, resulting in potential command hijacking between module teams.  A simple call to Set-Alias does this without warning.  On the flipside, if developers don&rdquo;™t hijack aliases, then some of the aliases they would otherwise create may simply not be defined.</p></li><li><p>When aliases are hijacked, unloading a module doesn&rsquo;t correct the problem because an alias that was overwritten by a module alias will simply become completely unavailable when the alias is removed as the module is unloaded.</p></li></ol><p>As far as I am aware, this situation does not improve with the next version of PowerShell either, so it&rsquo;s years away from getting better.</p><p>Believe it or not, even with these things in mind, I&rsquo;m actually still pro aliases.  I just think that some extra care/thought needs to be put into their definition.  There is no real standard here that both satisfactorily addresses the issues identified above and that allows for consistency across companies/teams at this time.  Given that is the current state of affairs, if you are considering aliases for your module I recommend one of the following approaches:</p><ol><li><p>[SAFEST] Rather than trying to come up with something that can be shipped despite these issues, at this time I think aliases would be best addressed in a &ldquo;tips and tricks&rdquo; type of blog post, proposing a short script that defines some useful aliases for the module/snapin in question in order to allow admins to be able to deal with fires quickly using ad-hoc PowerShell commands via some aliases.  Such a script should generate warnings whenever a name conflict is discovered so that users are aware when an alias either cannot be created or is overwritten.</p></li><li><p>[EXPERIMENTAL] Ship aliases with your module, but try to make sure they really are unique.  For example, if you"™re a vendor whose company name starts with Q, you could prefix all of your aliases with &ldquo;q&rdquo;.  This is attractive because there are no verbs that start with &ldquo;q&rdquo;, so right from the start you&rsquo;ve dramatically reduced the chance that you&rsquo;ll have a conflict, setting yourselves up better to have aliases that belong to you.  Then you would only have to coordinate within your company to make sure the aliases used across teams are unique.  This isn"™t foolproof though because there may be multiple products/vendors that adopt the same standard, and if the name of your company or product starts with G, the likelihood of a conflict would be much higher (the alias prefix used for &ldquo;get-*&rdquo; cmdlets is &ldquo;g&rdquo;) so you may want to choose a pair of letters instead.  Regardless, you&rsquo;ve likely reduced the risk, and you could generate a warning whenever you run into a conflict that prevents an alias from being created.</p></li><li><p>[RECOMMENDED] Lots of 1 and a little bit of 2: use unique alias names that work for your product team/company, but don&rsquo;t ship them with the module.  Instead, push them out as a value add on a blog post, and see how the community responds.  At the same time work with MVPs and Microsoft to get these issues addressed such that a shorthand system for command names does work.  Some MVPs, already proposed a few things to the Microsoft PowerShell team that could help here (aliases for module names for one — think PS\gsv for a core PowerShell version of Get-Service or EX\gu for the Get-User cmdlet that comes with the Microsoft Exchange module or AD\gu for the Get-User cmdlet that comes with the Microsoft Active Directory module, and so on), but more discussions need to happen and this will take more time.</p></li></ol><p>I recommend the third option because given the current issues with alias hijacking and with no support for disambiguation, it seems to be the best solution for now (from my perspective at least).  If you have come up with other alternatives that resolve these issues, please share them with the community so that this improves going forward.</p><p>Hope this helps,</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/Essential+PowerShell">Essential PowerShell</a>,<a href="http://technorati.com/tags/alias">alias</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/738/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/738/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=738&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerShell MVP for 2012</title><link>https://powershell.org/articles/2012-01-04-powershell-mvp-for-2012/</link><guid>https://powershell.org/articles/2012-01-04-powershell-mvp-for-2012/</guid><pubDate>Wed, 04 Jan 2012 17:51:39 +0000</pubDate><description>&lt;p&gt;Every year around Christmas I anxiously await the New Year to see if I receive the Microsoft MVP award again that year.  Well that email came on January 1, 2012, and I&amp;quot;™m quite thrilled about this one because it&amp;quot;™s a milestone this time (year 5 as a PowerShell MVP).  Thanks to the community for being so great to work with, and thanks to Microsoft both for recognizing individual efforts with the MVP program and for creating such great products like Windows PowerShell!  Work has never been so much fun!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Every year around Christmas I anxiously await the New Year to see if I receive the Microsoft MVP award again that year.  Well that email came on January 1, 2012, and I"™m quite thrilled about this one because it"™s a milestone this time (year 5 as a PowerShell MVP).  Thanks to the community for being so great to work with, and thanks to Microsoft both for recognizing individual efforts with the MVP program and for creating such great products like Windows PowerShell!  Work has never been so much fun!</p><p>Kirk out.</p><p>Technorati Tags:<a href="http://technorati.com/tags/PowerShell">PowerShell</a>,<a href="http://technorati.com/tags/PoSh">PoSh</a>,<a href="http://technorati.com/tags/Poshoholic">Poshoholic</a>,<a href="http://technorati.com/tags/Microsoft+MVP">Microsoft MVP</a></p><p><a href="http://feeds.wordpress.com/1.0/gocomments/kirkmunro.wordpress.com/740/"><img src="http://feeds.wordpress.com/1.0/comments/kirkmunro.wordpress.com/740/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=poshoholic.com&amp;blog=1436967&amp;%23038;post=740&amp;%23038;subd=kirkmunro&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item><item><title>PowerShell V3 CTP2 Provides Better Argument Passing to EXEs</title><link>https://powershell.org/articles/2012-01-02-powershell-v3-ctp2-provides-better-argument-passing-to-exes/</link><guid>https://powershell.org/articles/2012-01-02-powershell-v3-ctp2-provides-better-argument-passing-to-exes/</guid><pubDate>Mon, 02 Jan 2012 19:56:23 +0000</pubDate><description>&lt;p&gt;Within PowerShell it has always been easy to pass &amp;ldquo;simple&amp;rdquo; arguments to an EXE e.g.:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;C:\PS&amp;gt; ipconfig -all &lt;/code&gt;However passing arguments to certain exes can become surprising difficult when their command line parameter syntax is complex i.e. they require quotes and use special PowerShell characters such as @ $ ;.  A lot of these problems can be solved by placing single or double quotes in the right places or by escaping PowerShell&amp;quot;™s special characters e.g.:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Within PowerShell it has always been easy to pass &ldquo;simple&rdquo; arguments to an EXE e.g.:</p><p><code>C:\PS&gt; ipconfig -all</code>However passing arguments to certain exes can become surprising difficult when their command line parameter syntax is complex i.e. they require quotes and use special PowerShell characters such as @ $ ;.  A lot of these problems can be solved by placing single or double quotes in the right places or by escaping PowerShell"™s special characters e.g.:</p><p>`C:\PS&gt; tf.exe status . /workspace:HILLR1;hillr /r
There are no pending changes.
The term &lsquo;hillr&rsquo; is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:35</p><ul><li>tf.exe status . /workspace:HILLR1;hillr /r</li><li><pre><code> ~~~~~</code></pre><ul><li>CategoryInfo : ObjectNotFound: (hillr:String) [], CommandNotFoundException</li><li>FullyQualifiedErrorId : CommandNotFoundException
`Note that in the command line above the &ldquo;/workspace&rdquo; parameter value is specified using a special syntax that TF.exe recognizes i.e. ;.  Unfortunately the semicolon is a statement separator in PowerShell which means that TF.exe only sees the parameters before the semicolon.  We can use the ECHOARGS.exe utility from the<a href="http://pscx.codeplex.com/">PowerShell Community Extensions</a> to verify this:</li></ul></li></ul><p><code>C:\PS&gt; echoargs.exe status . /workspace:HILLR1;hillr /r Arg 0 is Arg 1 is &lt;.&gt; Arg 2 is</code>In this case, the solution is simple &ldquo;“ just escape the semicolon e.g.:</p><p><code>C:\PS&gt; tf.exe status . /r /workspace:HILLR1</code>;hillr
File name Change Local path</p><hr><p>$/Foo/Trunk/Tools/Bin
TfsTools.psm1 edit C:\Tfs\Foo\Trunk\Tools\Bin\TfsTools.psm1
1 change(s)
`This works up to the point where you get quite frustrated figuring out which characters to escape and which parameter/argument pairs need to be quoted and whether you should use single quotes or double quotes.  Fortunately, it looks like we will get a way to tell the PowerShell argument parser to stop doing so much work for us and just pass the args through &ldquo;as-is&rdquo;.  In other words, you can tell PowerShell to become a &ldquo;dumber&rdquo; command line parser.  This mode is invoked using the character sequence: &ldquo;“% and it works from the point it appears on the command line to the end of that line.  Note that the character sequence may change or the feature could be completely removed before V3 ships.</p><p>Given this new feature, here&rdquo;™s how you use it.  Take this example of a problematic set of command line parameters:</p><p>`C:\PS&gt; sqlcmd -S .\SQLEXPRESS -v lname=&ldquo;Gates&rdquo; -Q &ldquo;SELECT FirstName,LastName FROM
AdventureWorks.Person.Contact WHERE LastName = &lsquo;$(lname)&rsquo;&rdquo;
The term &rsquo;lname&rsquo; is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:126</p><ul><li>&hellip; LastName = &lsquo;$(lname)&rsquo;&rdquo;</li><li><pre><code> ~~~~~</code></pre><ul><li>CategoryInfo : ObjectNotFound: (lname:String) [], CommandNotFou
ndException</li><li>FullyQualifiedErrorId : CommandNotFoundException<code>In this case the V2 solution is to escape the $ character in the last part of the command line e.g.: '</code>$(lname)&rsquo; but if you don"™t want to spend the time to figure this out you can easily use –% like so:</li></ul></li></ul><p>`C:\PS&gt; sqlcmd &ndash;% -S .\SQLEXPRESS -v lname=&ldquo;Gates&rdquo; -Q &ldquo;SELECT FirstName,LastName F
ROM AdventureWorks.Person.Contact WHERE LastName = &lsquo;$(lname)&rsquo;&rdquo;
FirstName LastName</p><hr><p>Janet Gates
(1 rows affected)
`You can put the –% later in the parameter list if you want.  You might want to do this if you need to use PowerShell variable expansion in some of the arguments.  Just note that once you specify –% the rest of the command line will be parsed &ldquo;dumbly&rdquo;.  You will get no PowerShell variable expansion or grouping expressions and you won"™t be able to escape newlines.  One thing you can do in this special parsing mode is expand environment variables using the batch syntax of %ENV_VAR% e.g.:</p><p>`C:\PS&gt; $env:colname = &ldquo;LastName&rdquo;
C:\PS&gt; sqlcmd -S .\SQLEXPRESS -v lname=&ldquo;Gates&rdquo; &ndash;% -Q &ldquo;SELECT FirstName,LastName F
ROM AdventureWorks.Person.Contact WHERE %colname% = &lsquo;$(lname)&rsquo;&rdquo;
FirstName LastName</p><hr><p>Janet Gates
(1 rows affected)
`I believe this new command line parsing feature will greatly simplify interacting with exes that have a complex command line parameter syntax.  Thanks to the PowerShell team for listening to the<a href="https://connect.microsoft.com/PowerShell/feedback/details/376207/executing-commands-which-require-quotes-and-variables-is-practically-impossible">community feedback on this issue</a> and providing a solution.</p><p><a href="http://feeds.wordpress.com/1.0/gocomments/rkeithhill.wordpress.com/241/"><img src="http://feeds.wordpress.com/1.0/comments/rkeithhill.wordpress.com/241/" alt=""/><img src="http://stats.wordpress.com/b.gif?host=rkeithhill.wordpress.com&amp;blog=18780344&amp;%23038;post=241&amp;%23038;subd=rkeithhill&amp;%23038;ref=&amp;%23038;feed=1" alt=""/>
]]></content:encoded></item></channel></rss>