&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 September 2015 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2015/09/</link><description>Recent content in Articles from September 2015 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2015/09/index.xml" rel="self" type="application/rss+xml"/><item><title>Convert ISO and WIM to VHD with a module</title><link>https://powershell.org/articles/2015-09-28-convert-iso-and-wim-to-vhd-with-a-module/</link><guid>https://powershell.org/articles/2015-09-28-convert-iso-and-wim-to-vhd-with-a-module/</guid><pubDate>Tue, 29 Sep 2015 04:24:03 +0000</pubDate><description>&lt;p&gt;Convert-WindowsImage.ps1 is a very popular method to create VHD&amp;rsquo;s with. However it&amp;rsquo;s not a module, and in it&amp;rsquo;s current form cant be added to one.&lt;/p&gt;
&lt;p&gt;So I have started a new project on GitHub called WindowsImageTools and posted the results to the &lt;a href="https://www.powershellgallery.com/packages/WindowsImageTools/"&gt;PowerShell Gallery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It has a few functions so far. Convert-Wim2Vhd, to do the work,  and New-UnattendXml because it hate having to edit XML to make minor changes. The resulting XML is universal in that it works on both 32 and 64 bit and will do a silent install (currently on Volume Media only). Then it auto-logs on the Admin and run a PowerShell script to kick off what ever you need bootstrapped (like DSC)&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Convert-WindowsImage.ps1 is a very popular method to create VHD&rsquo;s with. However it&rsquo;s not a module, and in it&rsquo;s current form cant be added to one.</p><p>So I have started a new project on GitHub called WindowsImageTools and posted the results to the<a href="https://www.powershellgallery.com/packages/WindowsImageTools/">PowerShell Gallery</a>.</p><p>It has a few functions so far. Convert-Wim2Vhd, to do the work,  and New-UnattendXml because it hate having to edit XML to make minor changes. The resulting XML is universal in that it works on both 32 and 64 bit and will do a silent install (currently on Volume Media only). Then it auto-logs on the Admin and run a PowerShell script to kick off what ever you need bootstrapped (like DSC)</p><p>To find out more. take look at the details over on<a href="https://bladefirelight.wordpress.com/2015/09/29/shaving-the-yak-leads-me-to-create-new-module-windowsimagetools/">my blog about WindowImageTools</a> (and Yaks) or the<a href="https://github.com/BladeFireLight/WindowsImageTools">GitHub repo</a></p>
]]></content:encoded></item><item><title>How to handle oAuth from PowerShell</title><link>https://powershell.org/articles/2015-09-25-how-to-handle-oauth-from-powershell/</link><guid>https://powershell.org/articles/2015-09-25-how-to-handle-oauth-from-powershell/</guid><pubDate>Fri, 25 Sep 2015 15:35:24 +0000</pubDate><description>&lt;p&gt;One of the coolest features of PowerShell is the many tools we have available to work with services on the web, be they SOAP, REST, RPC or even WSDL services.  It&amp;rsquo;s no question, PowerShell makes it very easy to pull down data from any of these places.&lt;/p&gt;
&lt;p&gt;Unfortunately, getting data from a service isn&amp;rsquo;t always as easy as embedding your credentials in a URL. In fact, some services require us to authenticate and ask the user for permission before giving up the goods.  For these, oAuth is the de-facto standard for delegated access.  &lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>One of the coolest features of PowerShell is the many tools we have available to work with services on the web, be they SOAP, REST, RPC or even WSDL services.  It&rsquo;s no question, PowerShell makes it very easy to pull down data from any of these places.</p><p>Unfortunately, getting data from a service isn&rsquo;t always as easy as embedding your credentials in a URL. In fact, some services require us to authenticate and ask the user for permission before giving up the goods.  For these, oAuth is the de-facto standard for delegated access.  </p><p>In this blog post today on FoxDeploy.com, we cover an easy method to present a user with an oAuth window to ask for permission, and offer a guide of how to handle the somewhat complicated flow of credentials and URLs needed to delegate permissions, using WordPress as an example.  </p><p><a href="http://foxdeploy.com/2015/09/25/using-powershell-and-oauth/">Using PowerShell and oAuth</a></p><h4 id="special-thanks" class="ps-heading">Special Thanks<a class="ps-heading-anchor" href="#special-thanks" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>This post couldn&rsquo;t have happened without contributions by Lee Holmes,<a href="http://www.adamtheautomator.com/">Adam Bertram</a>,<a href="https://rkeithhill.wordpress.com/">Keith Hill</a>,<a href="https://twitter.com/ps4it">Chris Wu</a>, and<a href="https://twitter.com/ryanyates1990">Ryan Yates</a> for helping me to understand how to safely store credentials, and for other questions.  Extra thanks go to Adam and Ryan for helping me fact-check the post, and to Chris Wu for his excellent write-up on the &lsquo;<a href="http://blogs.technet.com/b/heyscriptingguy/archive/2013/07/01/use-powershell-3-0-to-get-more-out-of-windows-live.aspx">Hey, Scripting Guy</a>&rsquo; blog.  </p><p>-Stephen</p>
]]></content:encoded></item><item><title>Automate enabling and disabling Lync / Skype for Business users</title><link>https://powershell.org/articles/2015-09-23-automate-enabling-and-disabling-lync-skype-for-business-users/</link><guid>https://powershell.org/articles/2015-09-23-automate-enabling-and-disabling-lync-skype-for-business-users/</guid><pubDate>Wed, 23 Sep 2015 21:30:58 +0000</pubDate><description>&lt;p&gt;Hello PowerShell.org community,&lt;/p&gt;
&lt;p&gt;This is my first post here at PowerShell.org, and I have a goal of posting tips, tricks, articles, and solutions once a week. My first exposure to scripting was on my x486 computer. I would always create .bat files to launch my DOS based games from the root folder. I learned complex scripting through the use of VB Script, automating the roll out and updating of Windows 2000 desktops and servers. I quickly transitioned to PowerShell as my preferred scripting language upon its release. I use PowerShell on a daily basis to administer Windows Server, SQL Server, Exchange, Lync / Skype for Business, Citrix XenApp / XenDesktop, Office 365, and Dell Active Roles Server. I have very much enjoyed watching the progression and adoption of PowerShell as the default scripting language. I hope my posts will be useful to other administrators around the world.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hello PowerShell.org community,</p><p>This is my first post here at PowerShell.org, and I have a goal of posting tips, tricks, articles, and solutions once a week. My first exposure to scripting was on my x486 computer. I would always create .bat files to launch my DOS based games from the root folder. I learned complex scripting through the use of VB Script, automating the roll out and updating of Windows 2000 desktops and servers. I quickly transitioned to PowerShell as my preferred scripting language upon its release. I use PowerShell on a daily basis to administer Windows Server, SQL Server, Exchange, Lync / Skype for Business, Citrix XenApp / XenDesktop, Office 365, and Dell Active Roles Server. I have very much enjoyed watching the progression and adoption of PowerShell as the default scripting language. I hope my posts will be useful to other administrators around the world.</p><p>Today&rsquo;s post deals with automatically enabling and disabling users for Lync / Skype for Business. I kept the script examples simple so that they are easy to understand. If you would like a complex scenario tackled, simply comment on the blog and I will post the solution.</p><p>Head on over to<a href="http://powershellblogger.com/?p=111">PowerShellBlogger.com</a> for a full breakdown of enabling and disabling Lync / Skype for Business users locally or remotely.</p><p>Best Regards,<br>
Steve Parankewich<br>
Twitter:<a href="http://twitter.com/powershellblog">powershellblog</a></p>
]]></content:encoded></item><item><title>PowerShell Scheduled Jobs and Tableau analytics</title><link>https://powershell.org/articles/2015-09-21-powershell-scheduled-jobs-and-tableau-analytics/</link><guid>https://powershell.org/articles/2015-09-21-powershell-scheduled-jobs-and-tableau-analytics/</guid><pubDate>Mon, 21 Sep 2015 18:43:21 +0000</pubDate><description>&lt;p&gt;Here’s a brief rundown of how we leverage a few Cmdlets from the PSScheduledJob module to manage our Analytics stack. For those of us on the Analytics team at
&lt;a href="http://www.pluralsight.com/"&gt;
Pluralsight
&lt;/a&gt;
, PowerShell is the lynch-pin which binds our two worlds together. To manage the gaps inherent in all platforms (since one tool would be hard-pressed to cover all areas), we use PowerShell to link the worlds of Data and Analytics (and back). We do this because of its depth and the ease with which we can automate just about anything.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Here’s a brief rundown of how we leverage a few Cmdlets from the PSScheduledJob module to manage our Analytics stack. For those of us on the Analytics team at<a href="http://www.pluralsight.com/">
Pluralsight</a>
, PowerShell is the lynch-pin which binds our two worlds together. To manage the gaps inherent in all platforms (since one tool would be hard-pressed to cover all areas), we use PowerShell to link the worlds of Data and Analytics (and back). We do this because of its depth and the ease with which we can automate just about anything.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/data_stack.png"><img src="https://powershell.org/wp-content/uploads/2015/09/data_stack.png" alt="data_stack"/></p><p>All that said, we leverage two Cmdlets extensively:
_
Register-ScheduledJob
_
and
_
New-JobTrigger.
_
In all, there are:</p><ul><li/></ul><p>90+ jobs</p><ul><li/></ul><p>30+ enabled and scheduled</p><ul><li/></ul><p>2 jobs to manage the metadata</p><ul><li/></ul><p>1 Tableau workbook that surfaces this data to our team</p><p>**The ‘How does the job perform’ part: **</p><p>So, you’ve registered a job which soon becomes about 50 jobs. How do you know if each of them succeeded, how long they took, and whether or not they had errors? What about knowing if one takes 10x longer on one particular day? This is certainly worth investigating and analyzing so that you can react quickly to potential hiccups. The below script will let you do that and is meant to be&hellip;wait for it&hellip;scheduled.</p><p><code>$jobs = Get-ScheduledJob foreach ($job in $jobs) { Get-Job -Name $job.Name -Newest 1 | select -Property @{n='Env';e={"$env:computername"}},@{n='Name';e={$job.name}}, @{n='State';e={$_.State}},@{n='DurationInSec';e={($_.PSEndTime - $_.PSBeginTime).Total Seconds}},@{n='TimeStart';e={$_.PSBeginTime}},@{n='TimeEnd';e={$_.PSEndTime}},@{n='ErrCnt';e={($_.Error).count}},@{n='Date';e={(Get-Date).ToString('yyyy-MM-dd')}} | Export-Csv -Path 'your path' -Delimiter ";" -NoTypeInformation -Append }</code><strong>The ‘When do these jobs happen’ part:</strong></p><p>While we didn’t use all the properties in the<em>Get-ScheduledJob</em> cmdlet, we did pull out a few. Mostly, we want duration, error count and start/end times.</p><p>It’s one thing to have a few scheduled jobs running, but it becomes a different animal altogether when there are over 90 happening throughout the day (and on multiple machines). In order to both tame the chaos and control the inevitable job failures, it is necessary to know about (1) when they happened and (2) what happens
_
when
_
they, well, run.</p><p>Again, the basic assumption is that one has some scripts and/or files with code in them. The scheduled jobs, then, make this easier. Here’s a basic example of the ‘when’ regarding the scheduled jobs. We’re exporting a csv so that we can then consume it in<a href="http://www.tableau.com/">
Tableau</a>
for analysis and alerting:</p><p><code>$t = New-JobTrigger -Daily -At "8:00PM" -RandomDelay 00:00:30 Register-ScheduledJob -Name 'Cool Name Here' -ScriptBlock { $TsJobs = Get-ScheduledJob | select -expand Name foreach($job in $TsJobs) { Get-JobTrigger -Name $job | select @{n='Env';e={"$env:computername"}},@{n='Date';e={(Get-Date).ToString('yyyy-MM-dd')}},@{n='JobName';e={$job}},Frequency,@{n='Time';e={([datetime]($_.At)).ToShortTime String()}},@{n='DaysOfWeek';e={$_.DaysOfWeek}},Enabled,RepetitionInterval | export-csv 'your path' -delimiter ";" -NoTypeInformation -Append } } -Trigger $t</code>For this part, much like above, we use a few properties from the
_
Get-JobTrigger
_
cmdlet for the analysis and trending of our jobs (see image below).</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/schd_job_triggers.png"><img src="https://powershell.org/wp-content/uploads/2015/09/schd_job_triggers.png" alt="schd_job_triggers"/></p><p><strong>Summary</strong></p><p>I have added a ‘Date’ field to both sections so that we can do some historical analysis with the jobs. What’s also important is whenever we have to update software/change things on the servers, we can use this to identify when, during the day, we might have a window to do this, not to mention what jobs would be affected by it.</p><p>With two simple bits, we’re able to get a deeper look into the performance and potential avenues for tuning of our analytics pipeline and the jobs. This type of analysis on the ScheduledJob cmdlets can also be correlated with system performance (eg: logs) and our Analytics infrastructure’s performance and logs. While it’s a unique look at a use case for PowerShell, we find it’s been invaluable at providing the data that might not fit into the domains listed above. In short, it’s a perfect ‘glue’ for each pillar we interact with.</p><p>In the image below, we’ve put it all together for the ‘Job Performance’ overview. This allows us to narrow in on the job/jobs that might not be performing up to par (or as they have historically).</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/data_control_dashboard.png"><img src="https://powershell.org/wp-content/uploads/2015/09/data_control_dashboard.png" alt="data_control_dashboard"/></p>
]]></content:encoded></item><item><title>Take home from PowerShell Summit Europe</title><link>https://powershell.org/articles/2015-09-17-take-home-from-powershell-summit-europe/</link><guid>https://powershell.org/articles/2015-09-17-take-home-from-powershell-summit-europe/</guid><pubDate>Thu, 17 Sep 2015 12:25:55 +0000</pubDate><description>&lt;p&gt;WOOHA it&amp;rsquo;s been a great week.&lt;/p&gt;
&lt;p&gt;I sat down last night my brain all fried and tried to compile a list of things to remember from the past week.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.powershellmagazine.com/2011/09/23/powershell-wallpapers/"&gt;&lt;img src="https://powershell.org/wp-content/uploads/2015/09/KeepCalmAndLearnPowerShell_1024x768.jpg" alt="PowerShellMagazine - (wallpaper) - KEEP CALM.cdr"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is  much focus on &amp;ldquo;changing the mindset&amp;rdquo; of the community. Get into the DevOps mindset and become a toolmakers. This is my take-home from the conference. There&amp;rsquo;s no way to summarize all of the conference other than to say: Look forward to the videos on YouTube.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>WOOHA it&rsquo;s been a great week.</p><p>I sat down last night my brain all fried and tried to compile a list of things to remember from the past week.</p><p><a href="http://www.powershellmagazine.com/2011/09/23/powershell-wallpapers/"><img src="https://powershell.org/wp-content/uploads/2015/09/KeepCalmAndLearnPowerShell_1024x768.jpg" alt="PowerShellMagazine - (wallpaper) - KEEP CALM.cdr"/></p><p>There is  much focus on &ldquo;changing the mindset&rdquo; of the community. Get into the DevOps mindset and become a toolmakers. This is my take-home from the conference. There&rsquo;s no way to summarize all of the conference other than to say: Look forward to the videos on YouTube.</p><h4 id="stuff-to-read" class="ps-heading">Stuff to read:<a class="ps-heading-anchor" href="#stuff-to-read" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><ul><li>A great short read about &ldquo;<a href="http://www.itskeptic.org/content/important-devops-word-toolmakers">Toolmaking</a>&rdquo;</li><li><a href="https://twitter.com/StevenMurawski">Steven</a> did a<a href="http://stevenmurawski.com/devops-reading-list/index.html">DevOps Reading list</a>.</li></ul><h3 id="concepts" class="ps-heading">Concepts:<a class="ps-heading-anchor" href="#concepts" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><ul><li><strong><a href="https://twitter.com/iainbrighton">Iain Brighton</a>&rsquo;s talk &ldquo;Man vs Testlab&rdquo;</strong>. I&rsquo;m definitely going home and testing his<a href="https://github.com/iainbrighton/PSHSummit-Man-vs-Testlab">script</a> He created a script that will do everything from downloading .iso&rsquo;s from Microsoft, Configure Hyper-V, create instances and spawns servers for you. To stand up a entire Testlab following the<a href="http://social.technet.microsoft.com/wiki/contents/articles/7807.windows-server-2012-test-lab-guides.aspx">Microsoft Lab guides standard</a>. (DC, Server, Non-domain joined server and a client) You can of cause easily change the setup.</li><li><strong>GitHub</strong> I was amazed by <a href="https://twitter.com/HemantMahawar">Hemant Mahawar</a> and<a href="https://github.com/KrishnaV-MSFT">Krishna C Vutukuri</a>&rsquo;s talk on the way the PowerShell team uses GitHub and how easy it is to contribute to the code today. (Go
get a GitHub account today
! and start learning if you haven&rsquo;t already, and<a href="https://github.com/powershell/">go here</a> to contribute)</li><li><strong>PowerShell Gallery</strong> There were multiple talks on the<a href="http://www.PowerShellGallery.com">Gallery</a> and I personally love this. It&rsquo;s nice to hear that the PowerShell Team feels the same way. (See earlier<a href="https://powershell.org/2015/09/11/working-with-powershellgallery/">post</a>)</li><li><strong>Pester tests</strong> Unfortunately I didn&rsquo;t attend any pester specific talks this time. But it&rsquo;s clear from the general theme that pester is a big part of the DevOps&rsquo; mindset and the way tools are being developed in the future.<ul><li> Quote<a href="https://twitter.com/juneb_get_help">June Blender</a>:<em>Free! #PowerShell Community Build Server. Runs Pester tests on v2-v5 automatically. Best thing since the pipeline.<a href="http://t.co/1SFKWez7O2">http://t.co/1SFKWez7O2</a></em></li></ul></li><li><strong>DSC</strong> This is a crucial platform for the future. The ability to use the &ldquo;Make it so&rdquo; mindset. To configure and services and prevent drift, this is the documentation of the future.<a href="https://www.microsoftvirtualacademy.com/en-US/training-courses/getting-started-with-powershell-desired-state-configuration-dsc--8672">Getting started</a></li></ul><p><a href="https://powershell.org/wp-content/uploads/2015/09/makeitso.png"><img src="https://powershell.org/wp-content/uploads/2015/09/makeitso.png" alt="makeitso"/></p><p>There were tons of other things going on. On a personal note after my trip to<a href="http://www.psug.dk/?p=649">PSUG.dk</a> a few weeks ago where we had a session on<a href="https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/">ARM</a> and spend a day creating JSON files by hand by following the schema&rsquo;s on GitHub and had a horrible experience.  <a href="https://twitter.com/JeffWouters">Jeff</a> blew my mind when he demoed roughly the same and noted, off cause we just do: ConvertFrom-Json play with the PowerShell object and ConvertTo-Json back to JSON. He had some really nice examples on how not to do JSON templates, and better ways to generate them.</p><p>And I got really excited when during <a href="https://twitter.com/SimonWahlin">Simon</a>&rsquo;s talk on GitHub, I asked for ISE integration and<a href="https://twitter.com/TobiasPSP">Tobias</a> replied from somewhere behind me.</p><p>-<em>Working on that</em>.</p><p>Meaning<a href="http://www.powertheshell.com/isesteroids/">ISESteroids</a> will have that soon. Happy times 😀</p><p>When all the above is done, I only need to figure out how to get to the next Summit 🙂</p><h4 id="contact-me" class="ps-heading">Contact me<a class="ps-heading-anchor" href="#contact-me" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Twitter<a href="https://twitter.com/mrhvid">@mrhvid</a></p><p>Web<a href="http://Jonas.SommerNielsen.dk">Jonas.SommerNielsen.dk</a></p>
]]></content:encoded></item><item><title>Speaking at PowerShell Summit 2016: Topic Ideas for Aspiring Speakers</title><link>https://powershell.org/articles/2015-09-16-speaking-at-powershell-summit-2016-topic-ideas-for-aspiring-speakers/</link><guid>https://powershell.org/articles/2015-09-16-speaking-at-powershell-summit-2016-topic-ideas-for-aspiring-speakers/</guid><pubDate>Wed, 16 Sep 2015 08:26:25 +0000</pubDate><description>&lt;p&gt;Our call for topics for &lt;strong&gt;PowerShell and DevOps Global Summit 2016&lt;/strong&gt; is open until November 1st, and I thought I&amp;rsquo;d share some ideas for the kind of 400-level content we&amp;rsquo;re looking for.&lt;/p&gt;
&lt;p&gt;First, to submit abstracts, &lt;a href="https://eventloom.com/event/register/PSNA16/Speaker?preregister=1"&gt;pre-register as a speaker candidate&lt;/a&gt;. Be sure to fill in the brief demographic information presented, and then add any information for the Attendee Directory that you&amp;rsquo;d like. When you&amp;rsquo;re done with that, select &lt;strong&gt;Abstracts&lt;/strong&gt; from the menu at the tippy-top of the page, and enter your session information. Be sure to include, as the first characters in the abstract, either &amp;ldquo;[45m]&amp;rdquo;, &amp;ldquo;[90m]&amp;rdquo;, or &amp;ldquo;[120m]&amp;rdquo; as an indication on your desired timeslot - 45, 90, or 120 minutes. Also set your session to &amp;ldquo;Ready for Review&amp;rdquo; when you&amp;rsquo;re done.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Our call for topics for <strong>PowerShell and DevOps Global Summit 2016</strong> is open until November 1st, and I thought I&rsquo;d share some ideas for the kind of 400-level content we&rsquo;re looking for.</p><p>First, to submit abstracts,<a href="https://eventloom.com/event/register/PSNA16/Speaker?preregister=1">pre-register as a speaker candidate</a>. Be sure to fill in the brief demographic information presented, and then add any information for the Attendee Directory that you&rsquo;d like. When you&rsquo;re done with that, select <strong>Abstracts</strong> from the menu at the tippy-top of the page, and enter your session information. Be sure to include, as the first characters in the abstract, either &ldquo;[45m]&rdquo;, &ldquo;[90m]&rdquo;, or &ldquo;[120m]&rdquo; as an indication on your desired timeslot - 45, 90, or 120 minutes. Also set your session to &ldquo;Ready for Review&rdquo; when you&rsquo;re done.</p><p>Now&hellip; for some ideas! Feel free to riff on these and twist them in any direction you think people would find useful. Keep in mind that we&rsquo;re after 400+ level content - deep, deep dives.</p><ul><li>PowerShell Remoting. Tackle something difficult, like multi-hop authentication, certificate authentication, etc.</li><li>DevOps. Case studies and detailed information into how you&rsquo;ve seen DevOps succeed or fail, along with lessons learned.</li><li>Tooling. Bring deep education on tools that can help enable a DevOps way of life. More than just feature overviews - dig deep into exactly how you improved your organization&rsquo;s operations, and what you learned along the way.</li><li>Deeper coding. Using .NET, digging into the depths of CIM, creating scripted classes, diving into workflow - there&rsquo;s a huge universe of advanced, core PowerShell topics that attendees would benefit from.</li><li>Domain-specific topics. Using PowerShell with Azure, O365, System Center, and more - these are all in-demand topics. Keep the coverage deep - beginner content belongs at another event.</li><li>Hacking the shell. Extending the ISE, writing your own tab completion/expansion routines, and more - dig deep into the shell&rsquo;s guts and show people what can be done.</li><li>Practical shell. Help attendees build reporting infrastructure, inventorying systems, and other complete solutions using a PowerShell, DIY approach.</li></ul><p>As you can see, it&rsquo;s a real greenfield. Speakers will be offered 3 nights&rsquo; hotel accommodations at the Summit, and anyone presenting for more than 45 minutes will be offered an additional honorarium to further offset travel expenses. <strong>Everyone</strong> who has been using the shell for a while has something to offer - so step in and offer!</p>
]]></content:encoded></item><item><title>Store Secured Password in PowerShell Script</title><link>https://powershell.org/articles/2015-09-15-store-secured-password-in-powershell-script/</link><guid>https://powershell.org/articles/2015-09-15-store-secured-password-in-powershell-script/</guid><pubDate>Wed, 16 Sep 2015 00:52:27 +0000</pubDate><description>&lt;p&gt;Automation is awesome, but what if you need to run a script with elevated privileges?   If you are following security best practices then the account you login with most likely doesn&amp;rsquo;t have the required elevated privileges.  Storing your password in plain text in your scripts is no good either.  So what do we do?  There are several options and each has there place, but I&amp;rsquo;ll show you my favorite below.  Check out the full article by clicking on the link below.  While you are there check out some of my other posts, the &lt;a href="http://powershellmasters.com/scripts/"&gt;script repository&lt;/a&gt; and the &lt;a href="http://powershellmasters.com/resources/"&gt;resource page&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Automation is awesome, but what if you need to run a script with elevated privileges?   If you are following security best practices then the account you login with most likely doesn&rsquo;t have the required elevated privileges.  Storing your password in plain text in your scripts is no good either.  So what do we do?  There are several options and each has there place, but I&rsquo;ll show you my favorite below.  Check out the full article by clicking on the link below.  While you are there check out some of my other posts, the<a href="http://powershellmasters.com/scripts/">script repository</a> and the<a href="http://powershellmasters.com/resources/">resource page</a>.</p><p><strong><a href="http://powershellmasters.com/2015/08/store-secured-password-in-powershell-script">Store Secured Password in PowerShell Script</a></strong></p><p>As always make sure once you&rsquo;ve checked us out over at<a href="http://powershellmasters.com">PowerShellMasters.com</a> to head back here to read more awesome PowerShell posts on<a href="https://powershell.org">PowerShell.org</a>.</p><p>If you have some comments, questions or advice I&rsquo;m happy to hear it.  Thanks for reading and I hope everyone likes the article.</p><p>Thanks</p><p>Matt</p>
]]></content:encoded></item><item><title>Call for Topics Extended: PowerShell and DevOps Global Summit 2016</title><link>https://powershell.org/articles/2015-09-13-call-for-topics-extended-powershell-and-devops-global-summit-2016/</link><guid>https://powershell.org/articles/2015-09-13-call-for-topics-extended-powershell-and-devops-global-summit-2016/</guid><pubDate>Mon, 14 Sep 2015 06:56:16 +0000</pubDate><description>&lt;p&gt;In light of our recent &lt;a href="https://powershell.org/2015/09/13/future-of-powershell-summit-in-europe-and-north-america/"&gt;announcement regarding the future of PowerShell Summit&lt;/a&gt;, we are extending the call for topics to the end of October, 2015.&lt;/p&gt;
&lt;p&gt;We invite speakers to re-visit their existing proposals and indicate the desired length of their session. For example, simply add &amp;ldquo;[45min]&amp;rdquo; to the session abstract if you feel your session is suitable for our traditional 45-minute time slot. Or, indicate an alternative of [90min] or [120min]. &lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In light of our recent<a href="https://powershell.org/2015/09/13/future-of-powershell-summit-in-europe-and-north-america/">announcement regarding the future of PowerShell Summit</a>, we are extending the call for topics to the end of October, 2015.</p><p>We invite speakers to re-visit their existing proposals and indicate the desired length of their session. For example, simply add &ldquo;[45min]&rdquo; to the session abstract if you feel your session is suitable for our traditional 45-minute time slot. Or, indicate an alternative of [90min] or [120min]. </p><p>We also are broadening the scope of the event to include a variety of DevOps-focused topics. We welcome sessions on DevOps practices, tooling, and technologies.</p><p>Topics on any technology centered on the PowerShell Language Specification are also welcome, including cross-platform DSC, PowerShell on operating systems other than Windows, and so on.</p><p>With our expanded focus and renewed commitment to deep-dive, DevOps-flavored information, we hope that you&rsquo;ll take the time to propose a session for this wonderful new event! Please<a href="https://powershell.org/2015/08/03/powershell-summit-north-america-2016-call-for-topics/">follow the instructions on the original call for topics</a>, with the new deadline and topical focus in mind.</p>
]]></content:encoded></item><item><title>Future of PowerShell Summit in Europe and North America</title><link>https://powershell.org/articles/2015-09-13-future-of-powershell-summit-in-europe-and-north-america/</link><guid>https://powershell.org/articles/2015-09-13-future-of-powershell-summit-in-europe-and-north-america/</guid><pubDate>Mon, 14 Sep 2015 06:49:02 +0000</pubDate><description>&lt;p&gt;As we kick off PowerShell Summit Europe 2015, I wanted to share some decisions we&amp;rsquo;ve made regarding the future of the event.&lt;/p&gt;
&lt;p&gt;When we first launched PowerShell Summit in 2013, our goal was to be the spiritual successor of the former “PowerShell Deep Dive” events held as part of Quest’s The Experts Conference (TEC) event. Dell’s acquisition of Quest eliminated TEC, and PowerShell.org worked with the PowerShell product team to create the Summit.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As we kick off PowerShell Summit Europe 2015, I wanted to share some decisions we&rsquo;ve made regarding the future of the event.</p><p>When we first launched PowerShell Summit in 2013, our goal was to be the spiritual successor of the former “PowerShell Deep Dive” events held as part of Quest’s The Experts Conference (TEC) event. Dell’s acquisition of Quest eliminated TEC, and PowerShell.org worked with the PowerShell product team to create the Summit.</p><p>It’s important to understand that Microsoft has never financially supported PowerShell Summit, except for sending team members to participate and present. Microsoft wanted to ensure the Summit would continue even if Microsoft itself got distracted in one year – something which does happen – and establishing the event as independent and financially secure was a critical part of the vision. For the first two years, that meant Summit’s expenses were charged to the organizers’ personal credit cards, and then paid back once registration fees came in. With a budget of around $75,000 per year, it was a significant commitment.</p><p>Our expansion to Europe in 2014 was an attempt to make the content more readily accessible to a larger audience. Europe 2014 was also the first event where we recorded and posted all of the session content, using equipment funded entirely by members of the community. Although smaller, due to exchange rates, higher taxes, and higher overall expenses, Europe still runs a budget close to that of its US counterpart.</p><p>The format of the Summit – 45-minute session blocks – was established at the Deep Dive as a way to present a variety of content, force a tight topical scope, and provide ample time for both Q&amp;A and mingling.</p><p>After completing both 2015 events – in North America and Europe – we decided to sit down and take a look at Summit, think back to its original goals, and see if we were still doing the best job we could to meet those goals. It’s been an interesting conversation, and we have some decisions to share.</p><p><strong>PowerShell Summit Europe</strong></p><p>First, we at PowerShell.org will not be proceeding with a PowerShell Summit Europe event in 2016. The two Europe Summits that we’ve held so far have been successful, but they involve many times the level of work as the North American event, mainly because everyone running the thing is eight or nine time zones away from where it’s to be held. We literally, in some cases, don’t speak the language. And, because we rely entirely on the efforts of volunteers, the additional time commitment just isn’t sustainable. It’s also personally expensive, since everyone running the event pays – out of pocket – for their international flights, hotel rooms, and so on. It’s been a big burn for our Board members, in particular.</p><p>There’s also a financial problem with the event itself. After two years, we’ve been able to get the North American event to generate enough profit that the excess income from one year can pay for the deposits on the following year – meaning the event is financially self-sufficient, and people’s personal credit cards are no longer at risk. We’ve not been able to achieve that level of financial independence for the European event, in large part due to our own ignorance of the European market, pricing, business customs, taxes, and so on. That means the European events still require someone’s personal credit card to guarantee deposits and event expenses, and it’s pretty scary for those people. So far, we’ve always paid them back – but it’s a pretty big deal to be carrying tens of thousands of dollars on your own credit card, hoping the event sells out.</p><p>So it isn’t at all that we think Europe somehow doesn’t “deserve” its own event – those of us in the USA just can’t be the ones to organize it. In speaking with several members of the community here in Stockholm during Summit 2015, they agree - the community here is more than able to make an incredible event, and organize and price it according to local needs.</p><p><strong>PowerShell Forum: It’s Time for YOU to Get Involved</strong></p><p>So we’ve creating an<a href="http://cdn.powershell.org/wp/wp-content/uploads/2013/07/Making-a-PowerShell-Forum.docx">event planning guide</a>. If you, or someone you know, would like to organize a PowerShell event in your country or region, then we’re more than happy to help. We’ll help promote it, we’ll help you get a registration website set up (the same one that Summit uses), and we’ll connect you with the product team and as many global speakers as we can to help create your content program. Ultimately, we think Europeans can do a much better job at organizing an event in Europe, but we’re happy to help as much as we can. We’ve even reserved a brand name, “PowerShell Forum,” which you’d be welcome to use if you want to.</p><p>In fact, we hope that people inside the US will also want to hold “PowerShell Forum” events in their regions. They should be a great “next step” after a smaller PowerShell Saturday event, and they offer the opportunity to fine-tune the content for that specific area. The PowerShell Summit is meant as an expert-grade, deep-dive event – but PowerShell Forum could address beginners, intermediate users, or whatever is locally needed. We believe the guide we’ve created will help remove a lot of the uncertainty and ambiguity of organizing such an event, enabling more people to “give back to the community” by setting up locally focused and regional conferences.</p><p>Also, know that PowerShell Summit Europe was hardly the only option for Europeans. For years, PowerShell MVP Tobias Weltner has held a mostly German-language PowerShell event that’s well-attended by an enthusiastic and engaged audience. European DevOps Days and TechDays events outnumber the ones held in the US, in some years. If you’re looking for a live event with solid PowerShell content, make sure you’re actually<em>looking,</em> because they’re out there. And, as already mentioned, we hope to work with a lot of people all over the world to help promote locally organized events that feature amazing PowerShell content. Tobias’ work in particular shows that locally organized events can be fantastic, and can in many ways be superior to having us Americans come over and fumble our way through something in an unfamiliar environment.</p><p><strong>Many Forums, One Summit</strong></p><p>With all that in mind, PowerShell Summit North America will be known as<strong><a href="https://powershell.org/summit/">PowerShell and DevOps Global Summit</a></strong> from here on out, beginning with our 2016 event in Bellevue, Washington. We believe that one of the primary benefits of Summit is close contact with a wide swath of the PowerShell team, and so it’s likely that<em>most</em> future Summits will be in the area of Microsoft’s campus. It’s simply easier to fly us all up there than it is to have the product team close up shop and fly somewhere else to meet us. The “DevOps” part of the new name reflects the fact that while PowerShell is an awesome tool, it’s real purpose is to help meet business needs. DevOps – a kind of IT management and operational philosophy – is a business-level need that, in the Microsoft space, PowerShell helps realize.</p><p>We’re also going to be changing the session format of the Summit. Rather than a strict schedule of 45-minute sessions, we’re going to switch things up a bit. We’ll continue to offer space for short sessions, since they’re a great way to cover tightly focused topics. But we’re also going to expand into longer sessions, allowing presenters to truly “dive deep” into the guts of the technology. We’re going to create more opportunities for smaller breakouts, since it’s the discussions and personal interactions that create some of the best value from the Summit. And, aside from preparatory pre-conference sessions offered at additional charge, we’re going to strongly de-emphasize beginner- and even intermediate-level content. There are plenty of educational opportunities elsewhere for beginners, and part of the original mission of the Summit was to help the product team connect with some of PowerShell’s most hardcore users. So you’ll see us pushing the envelope more in terms of session content.</p><p>We’re also going to devote a lot of time and effort toward making Summit more interactive. The “wow” factor of that first year at TEC was the amazing amount of back-and-forth generated in the single, 50-person session room. The information shared, the perspectives gained – that’s all difficult in a 100-person session like we have now. So with a European event no longer consuming so much time and brainpower, we’re going to re-commit to making Summit a more personally engaging event, not just a conference. The community has offered a ton of great ideas in this direction already, and we’re going to start implementing some of them in 2016. We’ll continue to experiment and tweak as a regular part of doing business, evolving the event to meet your needs, and to better connect you to this technology community.</p><p>“Some longer sessions” means “fewer total speakers,” which means we’ll also be able to do a bit more, financially, to help our presenters. Until now, they’ve traveled and housed themselves more or less on their own dime, and we’d like to do a lot more to make it less burdensome. Our goal is to have the best presenters on the planet, and we want to try and reduce the “expense hurdle” as much as possible, so that speaker selection isn’t limited to just those who can easily afford to come. We also have a very specific goal of making room for new presenters, so that everyone in the community can truly participate.</p><p><strong>Facing Facts and Setting Expectations</strong></p><p>We do realize that a relocation to Bellevue, and the elimination of a European Summit event, will reduce the number of people who can make it to the Summit. We’ve decided we’re okay with that. The Summit was always intended to be a small event, attracting the best and brightest in the industry. If you’re working deeply with PowerShell and its related technologies, then the Summit still offers incredible value – even if you’re traveling from far away. We realize that for someone who isn’t deeply engaged with PowerShell, we may be making Summit a harder prospect – but if you’re not truly, deeply engaged, then Summit might not have been the right event for you.</p><p>To be very clear: we know that there’s a huge need for beginner- and intermediate-level education, and that it needs to be affordable. But Summit<em>isn’t that event.</em> We still think Summit is an incredible value, one that – if PowerShell is truly<em>part of your professional</em> – is well worth the expense, even if that involves international travel.</p><p>And what we’re<em>not</em> okay with is for Europeans, or anyone else in the world, to be somehow excluded from the great content that a dedicated PowerShell event offers. But that’s not something we can just<em>give</em> everyone. If you look at the major regions of the world – Asia, Australia, Northern Europe, Southern Europe, South Africa, the list goes on – there’s no way we at a single volunteer organization run by six people can possibly bring content to<em>everyone.</em> We just aren’t that wealthy! So everyone is going to have to pitch in and help. If you think an awesome PowerShell event would be a huge success in, say, France, then you’re going to have to be the one to step up and organize it. We will<em>absolutely help</em> in terms of promotion, finding speakers, selecting content, and so on – but this is community, and you only get out of it what you put into it. We’re putting a big effort into this event-planning guide to help you get started, but your success will depend a lot on your own efforts. We want<em>everyone</em> to have the education and interaction that a Summit-style event offers – but<em>everyone</em> is going to have to help make it happen.</p><p>Also, know that we will continue with our tradition of recording session content and posting it, for free, online. We’re looking into adding HD video so that you can see presenters as well as their presentations, although there’s no real way for us to capture the immersive experience of actually attending in person.</p><p><strong>What About Beginners?</strong></p><p>And if the Summit is going to double-down on deep-dive content, what about newcomers who are still trying to become deeply engaged? Hundreds of training centers across the globe still provide solid PowerShell training from Microsoft’s Official Curriculum catalog and Microsoft’s Courseware Marketplace. Independent conferences – TechMentor, for example – offer a range of PowerShell topics as a regular part of their agenda. Books and video training on entry-level topics are available in abundance. Summit was never really intended as an entry-level event, although we recognize that we’ve strayed a bit into that territory in an attempt to be more accessible to a broader audience.<strong>Our 2016 strategy is really a recommitment to our original concept of serving the PowerShell<em>professional.</em></strong> But the individual PowerShell Forum events, PowerShell Saturday events, or other PowerShell conferences you organize – whatever you name them, and wherever you hold them – can definitely help meet the need for beginners.</p><p><strong>Our Path Forward</strong></p><p><strong>PowerShell and DevOps Global Summit 2016</strong> will be happening in the same year as PowerShell’s 10th birthday, and so much has changed in that decade. Once-difficult topics like Remoting are – for the deeply engaged – now considered routine. We’ve moved on to higher-layer topics like Desired State Configuration, Continuous Integration and Delivery, cloud-based Workflow, and much more. As a community, we’ve developed best practices and patterns that we share, and we’ve seen Microsoft begin a shift toward open-source releases of key components. Heck, we’ve seen Microsoft move PowerShell technologies to other operating systems – something nobody ever thought would happen “back in the day.” And PowerShell.org has remained a volunteer-run organization that tries to benefit the entire community. We’re evolving Summit, and we’ll continue to do our best to do good works on behalf of the community.</p><p>The Board of PowerShell.org has gone through a lot of soul-searching in writing this document, because we don’t want to anyone to see us as walking away from the European Summit. Instead, we feel that we’ve proven a European event<em>can</em> be successful – and we think it<em>will</em> be successful once our European friends step in and take over. We are all stronger<em>together</em> as a community, especially when we can serve our local communities in more specific and granular ways. We would experience the most profound joy you can imagine if, in a couple of years, there are PowerShell Forum (or whatever they’re named) events throughout Europe… Canada… Africa… Asia… Australia and New Zealand… the United States… everywhere. We would take it as the greatest compliment and achievement if we’ve done nothing more than help people see how to pull it off, and inspire them to dive in and make things happen in their own backyard.</p><p>We hope, if you’ve read all this, that you’re already giving it some thought.</p>
]]></content:encoded></item><item><title>Find Stale Accounts in Active Directory</title><link>https://powershell.org/articles/2015-09-12-find-stale-accounts-in-active-directory/</link><guid>https://powershell.org/articles/2015-09-12-find-stale-accounts-in-active-directory/</guid><pubDate>Sat, 12 Sep 2015 16:02:38 +0000</pubDate><description>&lt;h1 id="find-stale-accounts-in-active-directory" class="ps-heading"&gt;&lt;strong&gt;Find Stale Accounts in Active Directory&lt;/strong&gt;&lt;a class="ps-heading-anchor" href="#find-stale-accounts-in-active-directory" aria-label="Link to this section" title="Link to this section"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Everyone who has managed Active Directory knows that keeping it free of &amp;ldquo;stale&amp;rdquo; accounts is a tough task.  Typically no one cares about this until it’s time for the Microsoft True Up.  Then we’ve got to hustle to get rid of all these unused accounts before we have to pay for them again!  Pre-PowerShell it was tough because well&amp;hellip; you didn&amp;rsquo;t have POWERSHELL!  Now the hardest part about finding these accounts is defining what stale means to your company.  There is no right or wrong answer to this question, but there are some things that we can check to help lead us to an optimal answer.  You can read the rest of this article by clicking on the link below.  While you are there check out some of my other posts, the &lt;a href="http://powershellmasters.com/scripts/"&gt;script repository&lt;/a&gt; and the &lt;a href="http://powershellmasters.com/resources/"&gt;resource page&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<h1 id="find-stale-accounts-in-active-directory" class="ps-heading"><strong>Find Stale Accounts in Active Directory</strong><a class="ps-heading-anchor" href="#find-stale-accounts-in-active-directory" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>Everyone who has managed Active Directory knows that keeping it free of &ldquo;stale&rdquo; accounts is a tough task.  Typically no one cares about this until it’s time for the Microsoft True Up.  Then we’ve got to hustle to get rid of all these unused accounts before we have to pay for them again!  Pre-PowerShell it was tough because well&hellip; you didn&rsquo;t have POWERSHELL!  Now the hardest part about finding these accounts is defining what stale means to your company.  There is no right or wrong answer to this question, but there are some things that we can check to help lead us to an optimal answer.  You can read the rest of this article by clicking on the link below.  While you are there check out some of my other posts, the<a href="http://powershellmasters.com/scripts/">script repository</a> and the<a href="http://powershellmasters.com/resources/">resource page</a>.</p><p><strong><a href="http://powershellmasters.com/2015/07/find-stale-accounts-in-active-directory/">Find Stale Accounts in Active Directory</a></strong></p><p>As always make sure once you&rsquo;ve checked us out over at<a href="http://powershellmasters.com">PowerShellMasters.com</a> to head back here to read more awesome PowerShell posts on<a href="https://powershell.org">PowerShell.org</a>.</p><p>If you have some comments, questions or advice I&rsquo;m happy to hear it.  Thanks for reading and I hope everyone likes the article.</p><p>Thanks</p><p>Matt</p>
]]></content:encoded></item><item><title>Working with PowershellGallery</title><link>https://powershell.org/articles/2015-09-11-working-with-powershellgallery/</link><guid>https://powershell.org/articles/2015-09-11-working-with-powershellgallery/</guid><pubDate>Fri, 11 Sep 2015 13:34:23 +0000</pubDate><description>&lt;p&gt;After my two first posts (&lt;a href="https://powershell.org/2015/08/20/multithreading-using-jobs/"&gt;Multithreading using jobs&lt;/a&gt;, &lt;a href="https://powershell.org/2015/08/28/list-users-logged-on-to-your-machines/"&gt;List users logged on to your machines&lt;/a&gt;) where I mentioned &lt;a href="http://www.PowershellGallery.com"&gt;PowershellGallery.com&lt;/a&gt; a few times and after &lt;a href="https://powershell.org/2015/09/06/writing-and-publishing-powershell-modules/"&gt;Warren talked about the Gallery a few days ago&lt;/a&gt; I felt like digging a little deeper to see if I was actually doing it right.&lt;/p&gt;
&lt;p&gt;So I wrote them an email and this was their reply:&lt;/p&gt;
&lt;p&gt; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;Hi Jonas – The “limited preview” designation on the PowerShell Gallery is because we are doing significant development to the site.&lt;/em&gt; * However, there is nothing about that status which should prevent you from sharing your code. *&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>After my two first posts (<a href="https://powershell.org/2015/08/20/multithreading-using-jobs/">Multithreading using jobs</a>,<a href="https://powershell.org/2015/08/28/list-users-logged-on-to-your-machines/">List users logged on to your machines</a>) where I mentioned<a href="http://www.PowershellGallery.com">PowershellGallery.com</a> a few times and after <a href="https://powershell.org/2015/09/06/writing-and-publishing-powershell-modules/">Warren talked about the Gallery a few days ago</a> I felt like digging a little deeper to see if I was actually doing it right.</p><p>So I wrote them an email and this was their reply:</p><p> &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&ndash;</p><p><em>&ldquo;Hi Jonas – The “limited preview” designation on the PowerShell Gallery is because we are doing significant development to the site.</em> * However, there is nothing about that status which should prevent you from sharing your code. *</p><p><em>A couple of things you will want to consider as you get ready to publish to the Gallery:</em></p><ul><li><em>You will want to scan your modules with PSSCriptAnalyzer (see<a href="http://www.powershellgallery.com/packages/PSScriptAnalyzer/">http://www.powershellgallery.com/packages/PSScriptAnalyzer/</a>), as we scan all modules that have been posted with that tool. Anything flagged as an “error” must be corrected, things flagged as “warnings” should be fixed.</em></li><li><em>Most submitters have a project site on GitHub, or something of that nature, that they link to from the Gallery. That allows them to get feedback on what they have submitted, &amp; it’s something we would recommend.</em></li></ul><p><em>Hope this helps –</em> * The PowerShell Gallery Operations Team&rdquo;*</p><p> &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&ndash;</p><p>Really nice feedback. To the commandline.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/Install-PSScriptAnalyzer.a.png"><img src="https://powershell.org/wp-content/uploads/2015/09/Install-PSScriptAnalyzer.a.png" alt="Install-PSScriptAnalyzer.a"/></p><p>Installing the analyser is a breeze, suddenly I have two new commands. Lets try out the analyzer and see what it can do.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/2015-09-10-1.png"><img src="https://powershell.org/wp-content/uploads/2015/09/2015-09-10-1.png" alt="2015-09-10 (1)"/></p><p>Unfortunately the help on my machine is not updated, but the online version seems to be updated.</p><p><code>help Invoke-ScriptAnalyzer -online</code>This goes to the<a href="http://go.microsoft.com/fwlink/?LinkId=525914">online version</a>. Also from the<a href="http://www.powershellgallery.com/packages/PSScriptAnalyzer/">PowerShell Gallery PSScriptAnalyzer site</a> there is a link to the<a href="https://github.com/PowerShell/PSScriptAnalyzer/">Project Site at GitHub.</a> </p><p><a href="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.png"><img src="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.png" alt="ScriptAnalyzer-start-multithread"/></p><p>This is kind of neat and it looks like I only have one warning, though 6 times.</p><p><em><strong>&ldquo;Cmdlet &lsquo;Write-Verbose&rsquo; has positional parameter. Please use named parameters instead of positional parameters when calling a command.&rdquo;</strong></em></p><p>Opening the same file in ISE  looking at line 92 and running the script analyser</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.ise_.slim_.png"><img src="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.ise_.slim_.png" alt="ScriptAnalyzer-start-multithread.ise.slim"/></p><p>The help from Write-Verbose tells me that they are referring to the -Message parameter.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/help-write-verbose.png"><img src="https://powershell.org/wp-content/uploads/2015/09/help-write-verbose.png" alt="help-write-verbose"/></p><p>That looks like a pretty easy fix. Going through the file and fixing the 6 warnings and suddenly there are none left.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.ise_.fixed_.png"><img src="https://powershell.org/wp-content/uploads/2015/09/ScriptAnalyzer-start-multithread.ise_.fixed_.png" alt="ScriptAnalyzer-start-multithread.ise.fixed"/></p><p>I&rsquo;m sure the fact that there weren&rsquo;t more errors was mostly due to dumb luck combined with me testing<a href="http://www.powertheshell.com/isesteroids/">ISESteroids</a> at the time of writing. (Side note: Try it out.<strong>Install-Module ISESteroids.</strong> It is really AWSOME or quoting Tim Cook; It&rsquo;s AMAZING) ISESteroids is an add-on for ISE which adds some neat stuff like highlighting errors in the code but that&rsquo;s a subject for some other day. Let&rsquo;s just say it saved my behind this time.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/github.update.png"><img src="https://powershell.org/wp-content/uploads/2015/09/github.update.png" alt="github.update"/></p><p>Now that really wasn&rsquo;t too bad. To update the code on PowerShellGallery I need to increment the version of the module. This is done in the manifest file .psd1.</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/update-version.png"><img src="https://powershell.org/wp-content/uploads/2015/09/update-version.png" alt="update-version"/></p><p>Now I can update the module by running the command from the<a href="https://www.powershellgallery.com/packages/upload">Publish Module</a> page</p><p><code>PS&gt; Publish-Module -Name -NuGetApiKey</code><a href="https://powershell.org/wp-content/uploads/2015/09/publish-module.png"><img src="https://powershell.org/wp-content/uploads/2015/09/publish-module.png" alt="publish-module"/></p><p>Now the code is accessible to all &hellip;. And there was<a href="https://www.youtube.com/watch?v=GjjZGyYcH9E">much rejoicing</a>. </p><h2 id="looking-a-little-closer-at-the-scriptanalyzer" class="ps-heading">Looking a little closer at the ScriptAnalyzer<a class="ps-heading-anchor" href="#looking-a-little-closer-at-the-scriptanalyzer" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Lets see what the help says. </p><h4 id="invoke-scriptanalyzer" class="ps-heading">Invoke-ScriptAnalyzer<a class="ps-heading-anchor" href="#invoke-scriptanalyzer" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p><em>&ldquo;Parameter Set: Default</em><em>Invoke-ScriptAnalyzer [-Path]  [-CustomizedRulePath  ] [-
ExcludeRule 
] [-
IncludeRule
  ] [-LoggerPath  ] [-Recurse] [-
Severity
  ] [ ]</em></p><p><em>Detailed Description</em><em>Invoke-ScriptAnalyzer starts analyzing one or more specified scripts by using ScriptAnalyzer, evaluating your scripts against a set of best practice measures called rules. ScriptAnalyzer works by evaluating scripts against either all available rules, or against a set of rules that you specify by adding the ExcludeRule or IncludeRule parameters. After ScriptAnalyzer finishes evaluating your scripts, it displays results in the console window.&rdquo;</em></p><p>Looks like IncludeRule and ExcludeRule parameters are straight forward. To get a list of rules and their descriptions Get-ScriptAnalyzerRule is very helpful.</p><h4 id="get-scriptanalyzerrule" class="ps-heading">Get-ScriptAnalyzerRule<a class="ps-heading-anchor" href="#get-scriptanalyzerrule" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Parameter Set: Default Get-ScriptAnalyzerRule [-CustomizedRulePath  ] [-Name  ] [-Severity  ] [ ]</p><p><a href="https://powershell.org/wp-content/uploads/2015/09/Get-ScriptAnalyzerRule.png"><img src="https://powershell.org/wp-content/uploads/2015/09/Get-ScriptAnalyzerRule.png" alt="Get-ScriptAnalyzerRule"/></p><p>The output gives us much useful information, severity level and a nice description of each rule.</p><h2 id="more" class="ps-heading">More<a class="ps-heading-anchor" href="#more" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>PowerShellGallery.org has a nice<a href="https://www.powershellgallery.com/pages/GettingStarted">GettingStarted</a> page. </p><h2 id="ps" class="ps-heading">ps.<a class="ps-heading-anchor" href="#ps" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Remember PowerShell Summit Europe starts Monday. Check out the <a href="https://eventmgr.azurewebsites.net/event/home/PSEU15">Event Schedule</a> and I hope to see you there. If on the other hand you&rsquo;re missing out check out these videos from<a href="https://www.youtube.com/playlist?list=PLfeA8kIs7CochwcgX9zOWxh4IL3GoG05P">PowerShell Summit North America 2015</a>.</p><h4 id="contact-me" class="ps-heading">Contact me<a class="ps-heading-anchor" href="#contact-me" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h4><p>Twitter<a href="https://twitter.com/mrhvid">@mrhvid</a><br>
Web<a href="http://Jonas.SommerNielsen.dk">Jonas.SommerNielsen.dk</a></p>
]]></content:encoded></item><item><title>DevOps: A Practical Example</title><link>https://powershell.org/articles/2015-09-11-devops-a-practical-example/</link><guid>https://powershell.org/articles/2015-09-11-devops-a-practical-example/</guid><pubDate>Fri, 11 Sep 2015 11:22:12 +0000</pubDate><description>&lt;p&gt;If you look at DevOps as a means of removing hurdles between coders and users, there&amp;rsquo;s almost no better real-world, practical example than Amazon Elastic Beanstalk. If you&amp;rsquo;re not familiar with EBS, look into it - it&amp;rsquo;s kinda cool.&lt;/p&gt;
&lt;p&gt;EBS isn&amp;rsquo;t suitable for every situation, to be sure. It&amp;rsquo;s mainly useful for Linux VMs, running Web sites, in fact, which isn&amp;rsquo;t 100% of your workloads. But the &lt;em&gt;idea&lt;/em&gt; is pretty awesome. Developers store their code in a source control repo - ideally, Git. Along with their code - and this is the cool bit - they include a configuration file. This file can list things like environment variables, packages (installed from repos using NPM, RHL, YUM, etc), and so on.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>If you look at DevOps as a means of removing hurdles between coders and users, there&rsquo;s almost no better real-world, practical example than Amazon Elastic Beanstalk. If you&rsquo;re not familiar with EBS, look into it - it&rsquo;s kinda cool.</p><p>EBS isn&rsquo;t suitable for every situation, to be sure. It&rsquo;s mainly useful for Linux VMs, running Web sites, in fact, which isn&rsquo;t 100% of your workloads. But the<em>idea</em> is pretty awesome. Developers store their code in a source control repo - ideally, Git. Along with their code - and this is the cool bit - they include a configuration file. This file can list things like environment variables, packages (installed from repos using NPM, RHL, YUM, etc), and so on.</p><p>When you recycle the application, EBS spins up new VMs _and configures them on the fly to match your configuration file. _It then shuts down any currently running machines. </p><p>So the deal is, <em>the developer</em> specifies the machine configuration - and they can do that in a test silo. All the code, _including the configuration directives, _live in Git. So when it&rsquo;s working in test, you just point the production silo at the same Git repo, and SHAZAM! application is up and running. Nobody manually configures anything. Change the app? No problem - just check in the code and recycle the application, and the new code - and its configuration - is live.</p><p>The &ldquo;ops&rdquo; portion of the scenario, in other words, is completely automated. Amazon has automated all the bits that sit between a developer and deployed code. Amazon&rsquo;s back end magic reads that configuration document and uses it to configure 1-to-infinity virtual machines as directed. Nobody has to do anything manual. The &ldquo;server,&rdquo; in the form of a VM, just becomes another software element. &ldquo;Infrastructure as code,&rdquo; if you will.</p><p>Gosh, what could Microsoft do to compete with that in Azure? What could <em>you</em> do, in your &ldquo;private cloud,&rdquo; to provide similar capabilities?</p><p>Hmm&hellip; 🙂</p>
]]></content:encoded></item><item><title>Where Are My FSMO Roles?</title><link>https://powershell.org/articles/2015-09-08-where-are-my-fsmo-roles/</link><guid>https://powershell.org/articles/2015-09-08-where-are-my-fsmo-roles/</guid><pubDate>Tue, 08 Sep 2015 14:00:21 +0000</pubDate><description>&lt;p&gt;Hello, PowerShell people! I&amp;rsquo;ve never posted on PowerShell.org before and so I feel as though I owe you a quick introduction before we dive into the tip I&amp;rsquo;d like to share with you.&lt;/p&gt;
&lt;p&gt;My name is Thomas Rayner and I am a Microsoft MVP for Windows PowerShell. I&amp;rsquo;m also a systems administrator and degree program instructor. I volunteer a fair bit of time as the President of the Edmonton Microsoft User Group (EMUG). EMUG has a more in depth bio for me on their &lt;a href="http://emug.ca/executive/"&gt;About Executive&lt;/a&gt; page in case you want to know more about the person behind the avatar. If you&amp;rsquo;re in the Edmonton area, I strongly recommend &lt;a href="http://emug.ca/contact-us/"&gt;signing up for our mailing list&lt;/a&gt; so you can come attend the great events we put on.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hello, PowerShell people! I&rsquo;ve never posted on PowerShell.org before and so I feel as though I owe you a quick introduction before we dive into the tip I&rsquo;d like to share with you.</p><p>My name is Thomas Rayner and I am a Microsoft MVP for Windows PowerShell. I&rsquo;m also a systems administrator and degree program instructor. I volunteer a fair bit of time as the President of the Edmonton Microsoft User Group (EMUG). EMUG has a more in depth bio for me on their<a href="http://emug.ca/executive/">About Executive</a> page in case you want to know more about the person behind the avatar. If you&rsquo;re in the Edmonton area, I strongly recommend<a href="http://emug.ca/contact-us/">signing up for our mailing list</a> so you can come attend the great events we put on.</p><p>I&rsquo;m pretty active on Twitter at<a href="http://twitter.com/MrThomasRayner">@MrThomasRayner</a> and I post bi-weekly on my own blog,<a href="http://workingsysadmin.com">workingsysadmin.com</a>.</p><p><strong>Ok, tip time!</strong></p><p>If you&rsquo;re an IT pro of any kind, it would be difficult to not bump into Active Directory from time to time. If you&rsquo;re a reader of PowerShell.org, you most likely administer Active Directory in some capacity. Inevitably, as an AD admin, you&rsquo;re going to find yourself asking &ldquo;Which server is holding which FSMO role right now?&rdquo; and &ldquo;Isn&rsquo;t there a way to do this in PowerShell?&rdquo;. _If you&rsquo;re scratching your head right now wondering what a Flexible Single Master Operation (FSMO) role is, please check out this prerequisite reading: <a href="https://support.microsoft.com/en-us/kb/197132">https://support.microsoft.com/en-us/kb/197132</a>. _</p><p>Of course there&rsquo;s a way to do this in PowerShell! Let&rsquo;s work through a solution. Firstly, we need to import the Active Directory module. <em><a href="http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory-module-in-powershell-in-windows-7.aspx">Stuck already?</a></em></p><p><code>Import-Module ActiveDirectory</code>That was easy. Now, let&rsquo;s get digging. There&rsquo;s a cmdlet called Get-ADDomainController which seems like a good place to start since we know our FSMO roles are going to be on Domain Controllers (DC). Let&rsquo;s take a look at what gets returned for each DC.</p><p>`Get-ADDomainController -Filter * | Select-Object -First 1 | Get-Member
TypeName: Microsoft.ActiveDirectory.Management.ADDomainController
Name MemberType Definition</p><hr><p>Contains Method bool Contains(string propertyName)
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item(string propertyName) {get;}
ComputerObjectDN Property System.String ComputerObjectDN {get;}
DefaultPartition Property System.String DefaultPartition {get;}
Domain Property System.String Domain {get;set;}
Enabled Property System.Boolean Enabled {get;}
Forest Property System.String Forest {get;set;}
HostName Property System.String HostName {get;}
InvocationId Property System.Guid InvocationId {get;}
IPv4Address Property System.String IPv4Address {get;set;}
IPv6Address Property System.String IPv6Address {get;set;}
IsGlobalCatalog Property System.Boolean IsGlobalCatalog {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;}
LdapPort Property System.Int32 LdapPort {get;}
Name Property System.String Name {get;set;}
NTDSSettingsObjectDN Property System.String NTDSSettingsObjectDN {get;}
OperatingSystem Property System.String OperatingSystem {get;}
OperatingSystemHotfix Property System.String OperatingSystemHotfix {get;}
OperatingSystemServicePack Property System.String OperatingSystemServicePack {get;}
OperatingSystemVersion Property System.String OperatingSystemVersion {get;}
OperationMasterRoles Property Microsoft.ActiveDirectory.Management.ADPropertyValueCollection OperationMasterRoles {get;}
Partitions Property Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Partitions {get;}
ServerObjectDN Property System.String ServerObjectDN {get;}
ServerObjectGuid Property System.Guid ServerObjectGuid {get;}
Site Property System.String Site {get;set;}
SslPort Property System.Int32 SslPort {get;}
`That&rsquo;s a lot of stuff. We can see if a DC is an RODC, which forest and domain it&rsquo;s in, the OS, its site&hellip; and its OperationMasterRoles! Looks like we&rsquo;re in business. The following code just about accomplishes our goal.</p><p><code>Get-ADDomainController -Filter * | Select-Object -Property Name, OperationMasterRoles</code>The above script will get all the DCs in the environment and return the name of the DC and the FSMO roles held. That&rsquo;s great, but, what if you have dozens of DCs and looking at a big list of DCs isn&rsquo;t appealing? There must be a way to get _only _the DCs that actually have FSMO roles, right?</p><p><code>Get-ADDomainController -Filter "OperationMasterRoles -like '*'" | Select-Object -Property Name, OperationMasterRoles</code>Of course there is! We don&rsquo;t even need to pipe our output into another cmdlet like Where-Object because we can simply adjust our filter on which DCs we return in the first place. &ldquo;OperationMasterRoles -like &lsquo;*&rsquo;&rdquo; translates to &ldquo;Domain Controllers whose OperationMasterRoles field have a value in them&rdquo; which doesn&rsquo;t include the DCs whose OperationMasterRoles field are null (because they&rsquo;re not holding any FSMO roles).</p><p><strong>That&rsquo;s it!</strong></p><p>Locating your Active Directory FSMO roles is just that easy.</p><p>Thank you, PowerShell.org for letting me post on your blog. I&rsquo;ve got tremendous respect and admiration for the people who contribute to this website and the PowerShell community. PowerShell.org is an incredible resource for people of any experience level to improve their skills and learn new things. The world is a better place for having resources like this one.</p>
]]></content:encoded></item><item><title>Find Location of Locked Out Accounts</title><link>https://powershell.org/articles/2015-09-08-find-location-of-locked-out-accounts/</link><guid>https://powershell.org/articles/2015-09-08-find-location-of-locked-out-accounts/</guid><pubDate>Tue, 08 Sep 2015 11:16:45 +0000</pubDate><description>&lt;h1 id="im-locked-out-help" class="ps-heading"&gt;I&amp;rsquo;m Locked Out, Help!&lt;a class="ps-heading-anchor" href="#im-locked-out-help" aria-label="Link to this section" title="Link to this section"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you&amp;rsquo;ve been a sys admin for more than a week you&amp;rsquo;ve probably heard this&amp;hellip;&amp;ldquo;I&amp;rsquo;m locked-out, help!&amp;rdquo;.  Normally the user has made their way to your cube and is impatiently tapping their foot waiting for you to magically solve there problem.  So you find their account, reset their password and everything is right with the world&amp;hellip;Or is it?  Two minutes later they show up again because their account was locked-out before they even got back to their desk.  Now what do you do?&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<h1 id="im-locked-out-help" class="ps-heading">I&rsquo;m Locked Out, Help!<a class="ps-heading-anchor" href="#im-locked-out-help" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h1><p>If you&rsquo;ve been a sys admin for more than a week you&rsquo;ve probably heard this&hellip;&ldquo;I&rsquo;m locked-out, help!&rdquo;.  Normally the user has made their way to your cube and is impatiently tapping their foot waiting for you to magically solve there problem.  So you find their account, reset their password and everything is right with the world&hellip;Or is it?  Two minutes later they show up again because their account was locked-out before they even got back to their desk.  Now what do you do?</p><p>There are several ways to go about finding this information, some MUCH better than others.  Since we are all PowerShell people (or at least stayed at a Holiday Inn Express) that will be our method of choice.  If you want to read more click on the link below, but if you just want to get to the script you can follow this link to my<a href="http://powershellmasters.com/scripts/">downloads page</a>.</p><p>As always make sure once you&rsquo;ve checked us out over at<a href="http://powershellmasters.com">PowerShellMasters.com</a> to head back here to read more awesome PowerShell posts on<a href="https://powershell.org">PowerShell.org</a>.</p><p><strong><a href="http://powershellmasters.com/2015/07/find-location-of-locked-out-accounts/">Find Location of Locked Out Accounts</a></strong></p><p>If you have some comments, questions or advice I&rsquo;m happy to hear it.  Thanks for reading and I hope everyone likes the article.</p><p>Thanks</p><p>Matt</p>
]]></content:encoded></item><item><title>Writing and Publishing PowerShell Modules</title><link>https://powershell.org/articles/2015-09-06-writing-and-publishing-powershell-modules/</link><guid>https://powershell.org/articles/2015-09-06-writing-and-publishing-powershell-modules/</guid><pubDate>Sun, 06 Sep 2015 20:31:29 +0000</pubDate><description>&lt;p&gt;Earlier in August &lt;a href="https://powershell.org/2015/08/16/abstraction-and-configuration-data/"&gt;we mentioned&lt;/a&gt; that modularity and abstraction are quite helpful. PowerShell modules can help enable these concepts.&lt;/p&gt;
&lt;p&gt;You might ask &amp;ldquo;Modules&amp;hellip; why can&amp;rsquo;t I just write a function?&amp;rdquo; There are a number of benefits to bundling your functions into modules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simplify code organization&lt;/li&gt;
&lt;li&gt;Group related functions together&lt;/li&gt;
&lt;li&gt;Share state between functions, but not with the user&lt;/li&gt;
&lt;li&gt;Re-use &amp;ldquo;helper functions&amp;rdquo; that you don&amp;rsquo;t want exposed to the user&lt;/li&gt;
&lt;li&gt;Improve discoverability:
&lt;code&gt;Find-Module MyModule&lt;/code&gt;Get-Command -Module MyModule
&lt;code&gt;* Simplify distribution: &lt;/code&gt;Install-Module MyModule
`Where does that last bullet come from?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-powershell-gallery" class="ps-heading"&gt;The PowerShell Gallery&lt;a class="ps-heading-anchor" href="#the-powershell-gallery" 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;If you&amp;rsquo;ve worked with Perl, you&amp;rsquo;ve probably used &lt;a href="https://www.perl.org/about/whitepapers/perl-cpan.html"&gt;CPAN&lt;/a&gt;, which archives more than 150,000 modules. Other languages have similar tools, like &lt;a href="https://pypi.python.org/pypi"&gt;PyPI&lt;/a&gt; for Python, or &lt;a href="https://rubygems.org/"&gt;RubyGems&lt;/a&gt; for Ruby.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Earlier in August<a href="https://powershell.org/2015/08/16/abstraction-and-configuration-data/">we mentioned</a> that modularity and abstraction are quite helpful. PowerShell modules can help enable these concepts.</p><p>You might ask &ldquo;Modules&hellip; why can&rsquo;t I just write a function?&rdquo; There are a number of benefits to bundling your functions into modules:</p><ul><li>Simplify code organization</li><li>Group related functions together</li><li>Share state between functions, but not with the user</li><li>Re-use &ldquo;helper functions&rdquo; that you don&rsquo;t want exposed to the user</li><li>Improve discoverability:<code>Find-Module MyModule</code>Get-Command -Module MyModule<code>* Simplify distribution:</code>Install-Module MyModule
`Where does that last bullet come from?</li></ul><h2 id="the-powershell-gallery" class="ps-heading">The PowerShell Gallery<a class="ps-heading-anchor" href="#the-powershell-gallery" 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;ve worked with Perl, you&rsquo;ve probably used<a href="https://www.perl.org/about/whitepapers/perl-cpan.html">CPAN</a>, which archives more than 150,000 modules. Other languages have similar tools, like<a href="https://pypi.python.org/pypi">PyPI</a> for Python, or<a href="https://rubygems.org/">RubyGems</a> for Ruby.</p><p>In the PowerShell world we&rsquo;ve had a few community alternatives, but nothing official until late 2014, when Microsoft introduced the<a href="https://www.powershellgallery.com/">PowerShell Gallery</a>. The gallery is still under limited preview, with less than 300 modules published.</p><p>The PowerShell community can benefit from the PowerShell Gallery through simplified and centralized discovery and distribution. We can find, install, or publish modules with a single command in PowerShell 5. Perhaps some day we will see a vibrant PowerShell community that extends<a href="http://ramblingcookiemonster.github.io/PowerShell-Beyond-Administration/">beyond IT administration</a>.</p><h2 id="write-and-publish-powershell-modules" class="ps-heading">Write and Publish PowerShell Modules<a class="ps-heading-anchor" href="#write-and-publish-powershell-modules" 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 help build up the PowerShell Gallery. Do you write PowerShell modules at work or at home? Consider<a href="http://stevenmurawski.com/powershell/2015/8/moving-in-to-open-source">open sourcing</a> them on GitHub, and publishing them in the PowerShell Gallery!</p><p>If you&rsquo;re comfortable writing PowerShell functions, but haven&rsquo;t started writing modules, check out<a href="http://ramblingcookiemonster.github.io/Building-A-PowerShell-Module">Building a PowerShell Module</a>, where we walk through the creation and publication of a PowerShell module.</p><p>Edit:<a href="https://powershell.org/deploying-modules-to-the-powershell-gallery/">This follow-up</a> shows a simple way to automatically deploy your modules to the gallery.</p><p>Cheers!</p>
]]></content:encoded></item><item><title>20115-September Scripting Games Puzzle</title><link>https://powershell.org/articles/2015-09-05-september-2015-scripting-games-puzzle/</link><guid>https://powershell.org/articles/2015-09-05-september-2015-scripting-games-puzzle/</guid><pubDate>Sat, 05 Sep 2015 13:26:02 +0000</pubDate><description>&lt;p&gt;Our September 2015 puzzle is another one-liner, to help get you out of Summer Mood and back into Work Mode. This time, it&amp;rsquo;s a pretty real-world scenario, designed to test your understanding of the pipeline and how data can be manipulated within it. You&amp;rsquo;ll need to really grasp pipeline parameter binding to make this work in the shortest command possible.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Our September 2015 puzzle is another one-liner, to help get you out of Summer Mood and back into Work Mode. This time, it&rsquo;s a pretty real-world scenario, designed to test your understanding of the pipeline and how data can be manipulated within it. You&rsquo;ll need to really grasp pipeline parameter binding to make this work in the shortest command possible.</p><h2 id="instructions" class="ps-heading"><strong>Instructions</strong><a class="ps-heading-anchor" href="#instructions" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>The Scripting Games have been re-imagined as a monthly puzzle. We publish puzzles the first Saturday of each month, along with solutions and commentary for the previous month&rsquo;s puzzle. You can find them all at<a href="https://powershell.org/category/announcements/scripting-games/">https://powershell.org/category/announcements/scripting-games/</a>. Many puzzles will include optional challenges, that you can use to really push your skills.</p><p><strong>To participate</strong>, add your solution to a public Gist (<a href="http://gist.github.com">http://gist.github.com</a>; you&rsquo;ll need a free GitHub account, which all PowerShellers should have anyway). After creating your public Gist, just copy the URL from your browser window and paste it, by itself, as a comment of this post. 
**Only post one entry per person. You are not allowed to come back and post corrected or improved versions. If you do, all of your posts will be ignored. **However, remember that you can always go back and edit your Gist. We&rsquo;ll always pull the most recent one when we display it, so there&rsquo;s no need to post multiple entries if you want to make an edit.</p><p>Don&rsquo;t forget the <a href="https://powershell.org/?p=2574">main rules and purpose of these monthly puzzles</a>, including the fact that you won&rsquo;t receive individual scoring or commentary on your entry.</p><p><strong>User groups are encouraged to work together</strong> on the monthly puzzles. User group leaders should submit their group&rsquo;s best entry to Ed Wilson, the Scripting Guy, via e-mail, prior to the third Saturday of the month. On the last Saturday of the month, Ed will post his favorite, along with commentary and excerpts from noteworthy entries. The user group with the most &ldquo;favorite&rdquo; entries of the year will win a grand prize from PowerShell.org.</p><h2 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></h2><h2 id="our-puzzle" class="ps-heading"><strong>Our Puzzle</strong><a class="ps-heading-anchor" href="#our-puzzle" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>You’ve been given a CSV file (named Input.csv) that has a single column, named MACHINENAME. The contents of that column are either computer host names or IP addresses. The computers named run a mix of operating systems, from Windows Server 2003 and Windows XP, up through the newest versions. All have at least PowerShell v2 installed. RPC communications are open between all computers on the network. All computers belong to the same domain.</p><p>Write a command or short script that reads the CSV file, contacts each computer, and retrieves each computer’s textual operating system version (e.g., “Microsoft Windows 8.1 Pro”, not “6.3.9600”). The command or script should output a CSV file, named Output.csv, that has two columns: MACHINENAME and OSVERSION.</p><p>There’s no need to handle errors for machines that aren’t reachable.</p><p><strong>Challenges:</strong></p><ul><li>Try to do write this as a one-liner, using as few semicolons as possible.</li><li>Try to minimize your use of curly brackets (just for fun) in your answer.</li></ul>]]></content:encoded></item><item><title>#MSPSUG Virtual Meeting: The Art of #PowerShell Runspaces – September 8th 2015</title><link>https://powershell.org/articles/2015-09-04-mspsug-virtual-meeting-the-art-of-powershell-runspaces-september-8th-2015/</link><guid>https://powershell.org/articles/2015-09-04-mspsug-virtual-meeting-the-art-of-powershell-runspaces-september-8th-2015/</guid><pubDate>Fri, 04 Sep 2015 14:58:27 +0000</pubDate><description>&lt;p&gt;Join the Mississippi PowerShell User Group virtually on Tuesday, September 8th at 8:30pm Central Time when PowerShell MVP &lt;a href="http://learn-powershell.net/"&gt;Boe Prox&lt;/a&gt; will present “&lt;em&gt;&lt;strong&gt;The Art of PowerShell Runspaces&lt;/strong&gt;&lt;/em&gt;”.&lt;/p&gt;
&lt;p&gt;PowerShell runspaces are a known but little documented area that can help to provide performance improvements in your scripts. Besides just using this for performance gains, you can use this to provide a snappier approach to building GUIs in PowerShell. This presentation will show you examples of using Runspaces, RunspacePools as well as utilizing shared variables that can be viewed and modified in multiple runspaces during runtime. Also being demoed is a module called &lt;a href="https://github.com/proxb/PoshRSJob"&gt;PoshRSJob&lt;/a&gt; which provides runspace multhreading in a familiar jobs infrastructure.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Join the Mississippi PowerShell User Group virtually on Tuesday, September 8th at 8:30pm Central Time when PowerShell MVP<a href="http://learn-powershell.net/">Boe Prox</a> will present “<em><strong>The Art of PowerShell Runspaces</strong></em>”.</p><p>PowerShell runspaces are a known but little documented area that can help to provide performance improvements in your scripts. Besides just using this for performance gains, you can use this to provide a snappier approach to building GUIs in PowerShell. This presentation will show you examples of using Runspaces, RunspacePools as well as utilizing shared variables that can be viewed and modified in multiple runspaces during runtime. Also being demoed is a module called<a href="https://github.com/proxb/PoshRSJob">PoshRSJob</a> which provides runspace multhreading in a familiar jobs infrastructure.</p><p>Visit the<a href="http://mspsug.com/2015/08/25/mspsug-virtual-meeting-the-art-of-powershell-runspaces-on-tuesday-september-8th-at-830pm-cdt/">Mississippi PowerShell User Group</a> website to learn more about Boe and to find out more details about this month’s meeting.</p><p>The Mississippi PowerShell User Group Meetings are held online (via Skype for Business) on the second Tuesday of each month at 8:30pm Central Time and are free to attend. The system requirements to attend these online meetings can be found on the MSPSUG website under the “<a href="http://mspsug.com/attendee-info/">Attendee Info</a>” section.</p><p>Register via<a href="http://mspsug.eventbrite.com/">EventBrite</a> to receive the URL for this meeting.</p><p>Note: It is not necessary to live in Mississippi or join our user group to attend our meetings or present a session for our user group.</p><p>µ</p>
]]></content:encoded></item><item><title>Use Import-LocalizedData to Internationalize your Scripts</title><link>https://powershell.org/articles/2015-09-03-use-import-localizeddata-to-internationalize-your-scripts/</link><guid>https://powershell.org/articles/2015-09-03-use-import-localizeddata-to-internationalize-your-scripts/</guid><pubDate>Thu, 03 Sep 2015 21:13:28 +0000</pubDate><description>&lt;p&gt;Whether you&amp;rsquo;re working with an enterprise client with a global presence or building a tool that you want to share with the world, you may find yourself wanting to build support for multiple languages into your scripts. The Import-LocalizedData Cmdlet is a simple and powerful way to achieve this. I put up a pair of posts about my recent experience with a globalization effort and how we were able to get a lot of functionality with only a few lines of code.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Whether you&rsquo;re working with an enterprise client with a global presence or building a tool that you want to share with the world, you may find yourself wanting to build support for multiple languages into your scripts. The Import-LocalizedData Cmdlet is a simple and powerful way to achieve this. I put up a pair of posts about my recent experience with a globalization effort and how we were able to get a lot of functionality with only a few lines of code.</p><p>The first post, <a href="http://www.plattsoft.net/2015/08/24/internationalization-with-import-localizeddata/">Internationalization with Import-LocalizedData</a>, describes the Cmdlet itself, how it works, and how to use it to automatically detect and load the correct language files for display at runtime. This is based on the regional settings of the user under which the PowerShell session is running.</p><p>The second post, <a href="http://www.plattsoft.net/2015/08/27/internationalization-with-import-localizeddata-part-2/">Internationalization with Import-LocalizedData: Part 2</a>, goes into more detail about some research we had to do into what exact regional settings control the language that PowerShell will attempt to use.</p><p>Even if you&rsquo;re not planning to localize your scripts into other languages right now, you should still think about globalizing your code so that it&rsquo;s easy to do if you change your mind, or if someone is kind enough to want to contribute some translations.</p>
]]></content:encoded></item><item><title>Basic Exchange Monitoring</title><link>https://powershell.org/articles/2015-09-01-basic-exchange-monitoring/</link><guid>https://powershell.org/articles/2015-09-01-basic-exchange-monitoring/</guid><pubDate>Wed, 02 Sep 2015 01:32:03 +0000</pubDate><description>&lt;p&gt;Hello Powershell.org!  This is the first time I&amp;rsquo;ve posted for anyone outside of my own powershell blog site &lt;a href="http://www.powershellmasters.com"&gt;PowerShellMasters.com&lt;/a&gt; and I just want to thank PowerShell.org for everything they do for our community.  I think most of you would agree that this site is one of the best PowerShell sites out there today and I am grateful for the opportunity to reach so many PowerShell people.  OK enough with the touchy-feely stuff. 🙂&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hello Powershell.org!  This is the first time I&rsquo;ve posted for anyone outside of my own powershell blog site<a href="http://www.powershellmasters.com">PowerShellMasters.com</a> and I just want to thank PowerShell.org for everything they do for our community.  I think most of you would agree that this site is one of the best PowerShell sites out there today and I am grateful for the opportunity to reach so many PowerShell people.  OK enough with the touchy-feely stuff. 🙂</p><p>If you&rsquo;ve been a Sys Admin for any extended time then you&rsquo;ve probably had your fair share of run-ins with Exchange.  Whether you are a full-time Exchange Admin or just doing it as part of your &ldquo;other duties&rdquo; I think we all know you have to keep an eye on this system or it can get away from you!  </p><p>Now there are dozens of monitoring solution out there that can help us monitor our Exchange environments and the are great especially in detailed reports.  But who has time to pour over screen after screen of stats?  I wrote the script<a href="http://powershellmasters.com/scripts/">Exchange_Basic_Monitor.ps1</a> because I wanted a simple one-page report to check each morning when I get to the office.  There&rsquo;s nothing fancy or overly complicated about this script, but it will definitely let you know where you stand with your Exchange environment.  If you want to read more about this script just follow the link below.  When you are done make sure to come back and check out some more of<a href="http://www.powershell.org">PowerShell.org</a>&rsquo;s site.</p><p><strong><a href="http://powershellmasters.com/2015/09/exchange-2013-basic-monitoring/">Exchange 2013: Basic Monitoring</a></strong></p><p>Like I said I&rsquo;m pretty new to this whole blogging thing, but so far it&rsquo;s been really fun (and a little theraputic too!).  If you have some comments, questions or advice I&rsquo;m happy to hear it.  Thanks for reading and I hope everyone likes the article.</p><p>Thanks</p><p>Matt</p>
]]></content:encoded></item></channel></rss>