&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 March 2019 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2019/03/</link><description>Recent content in Articles from March 2019 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2019/03/index.xml" rel="self" type="application/rss+xml"/><item><title>ICYMI: PowerShell Week of 29-March-2019</title><link>https://powershell.org/articles/2019-03-29-icymi-powershell-week-of-29-march-2019/</link><guid>https://powershell.org/articles/2019-03-29-icymi-powershell-week-of-29-march-2019/</guid><pubDate>Fri, 29 Mar 2019 15:00:17 +0000</pubDate><description>&lt;p&gt;Topics include an update to PSScriptAnalyzer, Pester, and customizing SharePoint menus.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include an update to PSScriptAnalyzer, Pester, and customizing SharePoint menus.</p><p>Content curated by Robin Dadswell and Mark Roloff.</p><h6 id="powershell-scriptanalyzer-version-1180-released" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#powershell-scriptanalyzer-version-1180-released"/><a href="https://devblogs.microsoft.com/powershell/powershell-scriptanalyzer-version-1-18-0-released/"><em>PowerShell ScriptAnalyzer Version 1.18.0 Released</em></a><a class="ps-heading-anchor" href="#powershell-scriptanalyzer-version-1180-released" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Jim Truher on March 22nd</p><p>A new ScriptAnalyzer is out. Faster, better DSC support, and better handling of multi-line pipelines. Pick it up from the PSGallery!</p><h6 id="pee-object" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#pee-object"/><a href="https://www.dannymeister.com/2019/03/26/pee-object.html"><em>Pee-Object</em></a><a class="ps-heading-anchor" href="#pee-object" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Danny Meister on March 26th</p><p>Ever have a need to print some progress or the current object to the console in the middle of your pipeline? Well, now there&rsquo;s a function for that.</p><h6 id="programmatically-change-the-new-menu-in-sharepoint-online-using-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#programmatically-change-the-new-menu-in-sharepoint-online-using-powershell"/><a href="https://cann0nf0dder.wordpress.com/2019/03/24/programmatically-change-the-new-menu-in-sharepoint-online-using-powershell/"><em>Programmatically change the New Menu in SharePoint Online using PowerShell</em></a><a class="ps-heading-anchor" href="#programmatically-change-the-new-menu-in-sharepoint-online-using-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Paul Matthews on March 24th</p><p>Customizing document library menus in SharePoint gets a fun facelift with Paul&rsquo;s scripted method.</p><h6 id="f7-is-the-greatest-powershell-hotkey-that-no-one-uses-any-more-we-must-fix-this" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#f7-is-the-greatest-powershell-hotkey-that-no-one-uses-any-more-we-must-fix-this"/><a href="https://www.hanselman.com/blog/F7IsTheGreatestPowerShellHotkeyThatNoOneUsesAnyMoreWeMustFixThis.aspx"><em>F7 is the greatest PowerShell hotkey that no one uses any more. We must fix this</em></a><a class="ps-heading-anchor" href="#f7-is-the-greatest-powershell-hotkey-that-no-one-uses-any-more-we-must-fix-this" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Scott Hanselman on March 26th</p><p>Scott discusses the absence of this little gem of a feature and a small workaround for using it. There&rsquo;re some nice tips in the comments too.</p><h6 id="enforcing-code-style-using-pester" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#enforcing-code-style-using-pester"/><a href="https://chrislgardner.github.io/powershell/2019/03/26/enforcing-style-with-pester.html"><em>Enforcing Code Style using Pester</em></a><a class="ps-heading-anchor" href="#enforcing-code-style-using-pester" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Chris Gardner on March 26th</p><p>If validating code style is something you need, Chris has an interesting approach to it via unit tests.</p><h6 id="general-availability-of-powershell-core-62" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#general-availability-of-powershell-core-62"/><a href="https://devblogs.microsoft.com/powershell/general-availability-of-powershell-core-6-2/"><em>General Availability of PowerShell Core 6.2</em></a><a class="ps-heading-anchor" href="#general-availability-of-powershell-core-62" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Steve Lee on March 28th</p><p>Has it really been 6 months already? A large number of changes have been packed into this release, so check out the changelog for a little lite reading.</p><h6 id="youtube-pester-with-kevin-marquette---march-28-2019" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190329.md#youtube-pester-with-kevin-marquette---march-28-2019"/><a href="https://www.youtube.com/watch?v=x3ufUibf6eI"><em>Youtube: Pester with Kevin Marquette - March 28, 2019</em></a><a class="ps-heading-anchor" href="#youtube-pester-with-kevin-marquette---march-28-2019" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>From the Austin PSUG, Kevin leads a demonstration on using Pester to unit test your scripts.</p>]]></content:encoded></item><item><title>Secure Your Powershell Session with JEA and Constrained Endpoints</title><link>https://powershell.org/articles/2019-03-28-secure-your-powershell-session-with-jea-and-constrained-endpoints/</link><guid>https://powershell.org/articles/2019-03-28-secure-your-powershell-session-with-jea-and-constrained-endpoints/</guid><pubDate>Thu, 28 Mar 2019 20:57:51 +0000</pubDate><description>&lt;h2 id="index" class="ps-heading wp-block-heading"&gt;Index&lt;a class="ps-heading-anchor" href="#index" 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;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#what-is-a-constrained-endpoint-and-why-would-i-need-one"&gt;What is a Constrained Endpoint and Why Would I Need One?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#setup-and-configuration"&gt;Setup and Configuration&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#using-our-endpoint"&gt;Using our Endpoint&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-a-constrained-endpoint-and-why-would-i-need-one" class="ps-heading wp-block-heading"&gt;What is a constrained endpoint and why would I need one?&lt;a class="ps-heading-anchor" href="#what-is-a-constrained-endpoint-and-why-would-i-need-one" 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;Powershell constrained endpoints are a means of interacting with powershell in a manner consistent with the &lt;a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege"&gt;principal of least privilege&lt;/a&gt;. In Powershell terms, this is referred to as Just-Enough-Administration, or JEA.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<h2 id="index" class="ps-heading wp-block-heading">Index<a class="ps-heading-anchor" href="#index" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><ul><li><p><a href="#what-is-a-constrained-endpoint-and-why-would-i-need-one">What is a Constrained Endpoint and Why Would I Need One?</a></p></li><li><p><a href="#setup-and-configuration">Setup and Configuration</a></p></li><li><p><a href="#using-our-endpoint">Using our Endpoint</a></p></li></ul><h2 id="what-is-a-constrained-endpoint-and-why-would-i-need-one" class="ps-heading wp-block-heading">What is a constrained endpoint and why would I need one?<a class="ps-heading-anchor" href="#what-is-a-constrained-endpoint-and-why-would-i-need-one" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Powershell constrained endpoints are a means of interacting with powershell in a manner consistent with the<a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege">principal of least privilege</a>. In Powershell terms, this is referred to as Just-Enough-Administration, or JEA.</p><p>JEA is very well documented, so this won&rsquo;t simply be repeating everything those references detail. Instead, we&rsquo;ll go through a simple, real-world use-case of when and why you might need to deploy one.</p><p><strong>Scenario:</strong></p><p>A subset of your team needs permissions to do one single action outside the normal scope of their jobs - The ability to restart a service on a server. This particular application will not accept changes to it without a restart, so this access needs to be delegated to the team responsible for maintaining the application, rather than calling you ever 12-15 minutes throughout the day.</p><p>You might be thinking, why not just email them a link to a one-liner of code and say &ldquo;Hey, run this in the terminal thingy!&rdquo;</p><p><code>Invoke-Command -Server myserver -ScriptBlock {Get-Service myservice | Restart-Service}</code>First, now the<strong>entire team</strong> needs PS-Remoting rights, administrator rights on the remote server (!), and a contract with HR not to replace the contents of</p><p><code>-ScriptBlock { }</code>with something more sinister or destructive. Instead, we&rsquo;re going to let them do just enough administration to accomplish what they need to.</p><h2 id="setup-and-configuration" class="ps-heading wp-block-heading">Setup and Configuration<a class="ps-heading-anchor" href="#setup-and-configuration" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Now that we&rsquo;ve established why we need a constrained endpoint, let&rsquo;s use powershell to create one. For this example, we will have a custom module</p><p><code>mymodule.psm1</code>that exposes two functions:</p><ul><li/></ul><p><code>Get-Foo</code>- a custom function we wrote for demonstration purposes</p><ul><li/></ul><p><code>Restart-OurCustomService</code>- a function that explicitly calls</p><p><code>Restart-Service -Service OurCustomService</code>Here is our custom module,</p><p><code>mymodule.psm1</code>:</p><p><code>Function Get-Foo { param( [string] $Message = "Hello World!" ) Write-Output $Message Write-EventLog -LogName 'MyPSEndpoint' -Source 'Get-Foo' -EntryType Information -EventId 2000 -Message "Get-Foo -Message '$Message' was run." } Function Restart-OurCustomService { [cmdletbinding()] param() Try { Restart-Service -Name OurCustomService -Force -ErrorAction Stop -ErrorVariable err Write-Host -ForegroundColor green "OurCustomService was restarted!" Write-EventLog -LogName 'MyPSEndpoint' -Source 'Restart-OurCustomService' -EntryType Information -EventId 2001 -Message "Successfully restarted." } Catch { Write-Host -ForegroundColor red "OurCustomService could not be restarted." Write-EventLog -LogName 'MyPSEndpoint' -Source 'Restart-OurCustomService' -EntryType Error -EventId 2002 -Message "$err" } }</code>These are the only two commands we want our team members to be able to run.</p><p><strong>Logging</strong></p><p>It&rsquo;s always good idea to have some type of logging, so before we even create the actual PS-Session, we&rsquo;re going to create a Windows Event Log source for it:</p><p><code>$Sources = @( 'Get-Foo', 'Restart-OurCustomService' ) New-EventLog -LogName "MyPSEndpoint" -Source $Sources</code>Now, we&rsquo;ll be able to see what commands were run through the Event Log, as well as audit any errors thrown.</p><p><strong>Creating the module</strong></p><p>We&rsquo;ll need to make sure our module is available on the remote computer. There are several ways to do this, but for this demo, we&rsquo;ll simply create a folder for it in one of the standard module directories.</p><p>The file path will end up being:</p><p><code>C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MyModule\mymodule.psm1</code>.</p><p><strong>Creating the session configuration file</strong></p><p>Next, we need to actually create the session endpoint. We need to ensure our users can only use the functions and cmdlets we&rsquo;ve specified, so in order to do that we need to configure a few parameters.</p><p>First, is</p><p><code>LanguageMode</code>, of which we&rsquo;ll be using the</p><p><code>Restricted</code>type. The help file for</p><p><code>New-PSSessionConfigurationFile</code>explain exactly what this entails:</p><blockquote/><blockquote><p>RestrictedLanguage: Users may run cmdlets and functions, but are not permitted to use script blocks or variables except for the following permitted variables: $PSCulture, $PSUICulture, $True, $False, and $Null. Users may use only the basic comparison operators (-eq, -gt, -lt). Assignment statements, property references, and method calls are not permitted.</p></blockquote><p>Similar to language mode, we also want to set a custom ExecutionPolicy for our endpoint. For this example, since we really only need our 3 defined commands, we&rsquo;ll use</p><p><code>RemoteSigned</code>. For more information on various execution policies, see Microsoft&rsquo;s</p><p><a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1">about_Execution_Policies</a> documentation.</p><p>Last, we will configure a</p><p><code>SessionType</code>. Another brief look at</p><p><code>Get-Help New-PSSessionConfigurationFile</code>shows:</p><blockquote/><blockquote><p>RestrictedRemoteServer: Includes only the following proxy functions:</p><p><code>&gt; Exit-PSSession</code>&gt; ,</p><p><code>&gt; Get-Command</code>&gt; ,</p><p><code>&gt; Get-FormatData</code>&gt; ,</p><p><code>&gt; Get-Help</code>&gt; ,</p><p><code>&gt; Measure-Object</code>&gt; ,</p><p><code>&gt; Out-Default</code>&gt; , and</p><p><code>&gt; Select-Object</code>&gt; . Use the parameters of this cmdlet to add modules, functions, scripts, and other features to the session.</p></blockquote><p>Our code to create our session should now look like this:</p><p><code>$sessionparams = @{ 'Path' = "$env:windir\system32\WindowsPowerShell\v1.0\MyPSEndpoint.pssc" 'LanguageMode' = 'RestrictedLanguage' 'ExecutionPolicy' = 'RemoteSigned' 'SessionType' = 'RestrictedRemoteServer' 'ModulesToImport' = @('MyModule') } New-PSSessionConfigurationFile @sessionparams</code>The last thing necessary to begin using our constrained endpoint is to register it with Powershell:</p><p><code>$registerparams = @{ 'Name' = 'MyPSEndpoint' 'Path' = "$env:windir\system32\WindowsPowerShell\v1.0\MyPSEndpoint.pssc" 'ShowSecurityDescriptorUI' = $True } Register-PSSessionConfiguration @registerparams</code>A very important screen should now appear. This is the SecurityDescriptorUI, which will allow us to delegate permissions for who can access our endpoint.</p><blockquote/><blockquote><p>NOTE: You won&rsquo;t be able to set the SecurityDescriptorUI over a remote PSSession, so be sure to use the console to do this part. If you mess this up, you can reset it from a console:</p><p><code>&gt; Get-PSSessionConfiguration -Name MyPSEndpoint | SetPSSessionConfiguration -ShowSecurityDescriptorUI</code>&gt;</p></blockquote><p>Assign permissions as needed, and then verify your configuration has appropriate permissions:</p><p><code>PS C:\Users\nate&gt; Get-PSSessionConfiguration -Name MyPSEndpoint Name : MyPSEndpoint PSVersion : 5.1 StartupScript : RunAsUser : Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed</code>Without any additional configuration, commands run through the endpoint will execute as the logged in user. For this example, we need to specify other credentials on the server to execute our commands so our users do not need admin rights themselves.</p><p><code>$RunAsCred = (Get-Credential) Set-PSSessionConfiguration -Name MyPSEndpoint -RunAsCredential $RunAsCred</code>## Using our endpoint {.wp-block-heading}</p><p>Now we&rsquo;re ready to connect and use our endpoint. As a user with permissions delegated via the Security Descriptor above, run the following:</p><p><code>New-PSSession -ComputerName 'remoteserver' -ConfigurationName 'MyPSEndpoint' | Enter-PSSession</code>If all goes well, we should be greeted with a remote session PS prompt, as denoted by the</p><p><code>[remoteserver] PS&gt;</code>in front of the console prompt.</p><p>Now we can start to explore what we can can&rsquo;t do! (As long as we configured our session correctly)</p><p>Familiar commands like &lsquo;Get-ChildItem&rsquo; won&rsquo;t work, and will result in an &lsquo;unknown cmdlet&rsquo; error. In fact there&rsquo;s literally nothing we can run except the commands in our module, and a few pre-defined commands necessary for the session to function. We can list our options with</p><p><code>Get-Command</code>[wincore2019demo]: PS&gt; Get-Command
CommandType Name Version Source</p><hr><p>Function Clear-Host
Function Exit-PSSession
Function Get-Command
Function Get-Foo 0.0 MyModule
Function Get-FormatData
Function Get-Help
Function Measure-Object
Function Out-Default
Function Restart-OurCustomService 0.0 MyModule
Function Select-Object
`Our two commands are present from our module, and that&rsquo;s essentially it. The other functions are pre-defined by the session type</p><p><code>RestrictedRemoteServer</code>, and are needed for the endpoint to function correctly.</p><p>We can run</p><p><code>Get-Foo</code>:</p><p><code>[wincore2019demo]: PS&gt;Get-Foo -Message "I love Powershell!" I love Powershell! PS&gt;</code>We can run</p><p><code>Restart-OurCustomService</code>:</p><p><code>PS&gt; Restart-OurCustomService OurCustomService could not be restarted. PS&gt;</code>We can see the results of our interactions in the event log. My demo VM has no service &ldquo;OurCustomService&rdquo; so it displayed a friendly error to the console, and logged the verbose error to the event log.</p><blockquote/><blockquote><p>TIP: In Restricted Language Mode, we do not have access to the global variable $error. However, by utilizing advanced functions, we can specify -ErrorVariable to still be able to write the error to the event log, even if we don&rsquo;t present this information to our users in the console. This can be seen in the Restart-OurCustomService function, and in the screenshot below.</p></blockquote><p><img src="https://i.imgur.com/Jk0Iwaq.png" alt="Imgur"/><p>At this point we&rsquo;ve gone over creating a Powershell JEA Endpoint using restricted language and an available custom module for restarting a service. There is a massive amount more you can do with this, but I hope this real-world demonstration has made JEA just a little bit less intimidating and easy to use!</p>
]]></content:encoded></item><item><title>2019 Community Lightning Demos</title><link>https://powershell.org/articles/2019-03-26-2019-community-lightning-demos/</link><guid>https://powershell.org/articles/2019-03-26-2019-community-lightning-demos/</guid><pubDate>Tue, 26 Mar 2019 12:59:17 +0000</pubDate><description>&lt;h3 id="rambling" class="ps-heading wp-block-heading"&gt;Rambling&lt;a class="ps-heading-anchor" href="#rambling" 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;/h3&gt;
&lt;p&gt;I&amp;rsquo;m a huge fan of lightning demos. From the community and PowerShell Team lightning demos we get at &lt;a href="https://powershell.org/summit/"&gt;the summit&lt;/a&gt;, to &lt;a href="https://github.com/PSPowerHour/PSPowerHour"&gt;PSPowerHour&lt;/a&gt;, to various local groups and conferences using the format.&lt;/p&gt;
&lt;p&gt;At the 2019 PowerShell + DevOps Global Summit, we&amp;rsquo;ll have about 90 minutes for these demos - now we just need proposals from you!&lt;/p&gt;
&lt;p&gt;So! Why might you be interested in lightning demos?&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<h3 id="rambling" class="ps-heading wp-block-heading">Rambling<a class="ps-heading-anchor" href="#rambling" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>I&rsquo;m a huge fan of lightning demos. From the community and PowerShell Team lightning demos we get at<a href="https://powershell.org/summit/">the summit</a>, to<a href="https://github.com/PSPowerHour/PSPowerHour">PSPowerHour</a>, to various local groups and conferences using the format.</p><p>At the 2019 PowerShell + DevOps Global Summit, we&rsquo;ll have about 90 minutes for these demos - now we just need proposals from you!</p><p>So! Why might you be interested in lightning demos?</p><h3 id="why-lightning-demos" class="ps-heading wp-block-heading">Why Lightning Demos<a class="ps-heading-anchor" href="#why-lightning-demos" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>Lightning demos are great for the audience and speakers alike.</p><p>For the audience:</p><ul><li><p>Fast paced (Less than 10 minutes each)</p></li><li><p>Many speakers</p></li><li><p>Topic or speaker not what you&rsquo;re looking for? They&rsquo;ll change in a few minutes</p></li><li><p>Demos offer enough material to give you ideas and point out where to learn more</p></li><li><p>Content is more likely to have a high signal-to-noise ratio given the time constraints</p></li></ul><p>For the speakers:</p><ul><li><p>No need to come up with a full length session and the content behind it</p></li><li><p>It can be comforting knowing you have a bunch of peers joining you</p></li><li><p>You can get enough info to the audience for them to get excited and want to learn more</p></li><li><p>You get a platform to share something awesome with the community</p></li></ul><p>Hopefully you&rsquo;re up for doing a demo! Let&rsquo;s go over how to get involved.</p><h3 id="proposing-a-lightning-demo" class="ps-heading wp-block-heading">Proposing a Lightning Demo<a class="ps-heading-anchor" href="#proposing-a-lightning-demo" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><p>There are a few optional fields, but all we really need is your e-mail, your name, a title, and a quick sentence or paragraph abstract on what you&rsquo;ll talk about.</p><p>All you need to do is sign up here:<a href="http://bit.ly/doademo19">bit.ly/doademo19</a></p><p>We&rsquo;ll be in touch, but to give you a quick idea of how things will go…</p><h3 id="ive-proposed-whats-next" class="ps-heading wp-block-heading">I&rsquo;ve Proposed! What&rsquo;s Next?<a class="ps-heading-anchor" href="#ive-proposed-whats-next" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h3><ul><li><p>The 10 minute limit is a hard limit. We&rsquo;ll have to cut short if you hit the mark. Hooking up AV equipment counts as your time</p></li><li><p>Don&rsquo;t aim for 10 minutes. Show what you want to show. Does it only take 5 minutes? Even better!</p></li><li><p>We have 90 minutes. We&rsquo;ll schedule something like 15+ sessions, but if everyone takes their 10 minutes, we may only see 9</p></li><li><p>We&rsquo;ll give you the order of operations. At you in slot 1-9? You&rsquo;re up! 10-12? There&rsquo;s a good chance we&rsquo;ll get to you. 13-18? You<em>might</em> make it if things are speedy, if someone drops out, or if we find extra time</p></li><li><p>Worst case? We don&rsquo;t get to see your demo at the summit, but Michael Lombardi and I pester you to submit your demo to<a href="https://github.com/PSPowerHour/PSPowerHour">PSPowerHour</a>, an online lightning demo thing we do</p></li><li><p>We&rsquo;ll do our best to get everyone on stage, but we&rsquo;ll likely follow last year&rsquo;s preferences:</p><pre><code>New speakers over breakout session speakers and previous demo speakersWe'll do our best to get everyone on stage, but we'll likely follow last year's preferences:</code></pre><ul><li><p>New ideas or interesting variations over well trodden topics</p></li><li><p>Community sessions over vendors, on similar topics (why? The happy path isn&rsquo;t always the most helpful!)</p></li></ul></li><li><p>Yes. I mentioned vendors. The PowerShell Team and Community lightning demos will be done together this year. (Attending) Vendors are welcome to submit demos, but we&rsquo;ll be leaning towards the community in many cases</p></li></ul><p>That&rsquo;s it! We&rsquo;ll take<a href="http://bit.ly/doademo19">proposals</a> up through April 15th, and will get back to you on April 17th. This gives you ~two weeks to propose, and ~two weeks to put together an awesome demo - I hope to see you all up there on the stage!</p>
]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 22-March-2019</title><link>https://powershell.org/articles/2019-03-22-icymi-powershell-week-of-22-march-2019/</link><guid>https://powershell.org/articles/2019-03-22-icymi-powershell-week-of-22-march-2019/</guid><pubDate>Fri, 22 Mar 2019 15:00:14 +0000</pubDate><description>&lt;p&gt;Topics include PowerShell IoT, Nmap in PS, and some livestreamed contributions to PSHTML.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include PowerShell IoT, Nmap in PS, and some livestreamed contributions to PSHTML.</p><p>Special thanks to Robin Dadswell and Mark Roloff.</p><h6 id="list-and-change-bios-settings-with-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#list-and-change-bios-settings-with-powershell"/><a href="http://www.systanddeploy.com/2019/03/list-and-change-bios-settings-with.html"><em>List and change BIOS settings with PowerShell</em></a><a class="ps-heading-anchor" href="#list-and-change-bios-settings-with-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Damien Van Robaeys on March 19th</p><p>Methods covered are specific to 3 of the major hardware manufacturers, which makes this especially handy.</p><h6 id="poshnmap" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#poshnmap"/><a href="https://github.com/justingrote/poshnmap"><em>PoshNmap</em></a><a class="ps-heading-anchor" href="#poshnmap" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Justin Grote</p><p>Not a blog but this was announced a few days ago and seemed worth sharing. PoshNmap is a wrapper for the ubiquitous Nmap tool.</p><h6 id="getting-started-with-powershell-core-on-raspian-raspberry-pi--light-up-a-led" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#getting-started-with-powershell-core-on-raspian-raspberry-pi--light-up-a-led"/><a href="https://danielsknowledgebase.wordpress.com/2019/03/20/getting-started-with-powershell-core-on-raspbian-raspberry-pi-light-up-a-led/"><em>Getting Started With PowerShell (Core) on Raspian (Raspberry Pi) – Light Up a LED</em></a><a class="ps-heading-anchor" href="#getting-started-with-powershell-core-on-raspian-raspberry-pi--light-up-a-led" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Daniel Silva on March 20th</p><p>I mean&hellip; The title really says it all. If you&rsquo;re curious about IoT, this is a great little practical exercise to get you introduced to it.</p><h6 id="powershell-crash-course" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#powershell-crash-course"/><a href="https://dev.to/jeikabu/powershell-crash-course-3go5"><em>PowerShell Crash Course</em></a><a class="ps-heading-anchor" href="#powershell-crash-course" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by jeikabu on March 15th</p><p>A different kind of crash course. It&rsquo;s really more of a quick primer to PowerShell Core for *nix admins/developers.</p><h6 id="sql-database-backups-using-powershell-module--dbatools" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#sql-database-backups-using-powershell-module--dbatools"/><a href="https://www.sqlshack.com/sql-database-backups-using-powershell-module-dbatools/"><em>SQL Database Backups using PowerShell Module – DBATools</em></a><a class="ps-heading-anchor" href="#sql-database-backups-using-powershell-module--dbatools" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Rajendra Gupta on March 21st</p><p>There&rsquo;s apparently plenty of different configurations for backing up databases with the DBATools module, and Rajendra demonstrates a good number of them here.</p><h6 id="youtube-closing-an-issue-in-pshtml-to-improve-charting-in-html-with-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190322.md#youtube-closing-an-issue-in-pshtml-to-improve-charting-in-html-with-powershell"/><a href="https://www.youtube.com/watch?v=X5Yv5CdQYK8"><em>Youtube: Closing an issue in PSHTML to improve charting in HTML with PowerShell</em></a><a class="ps-heading-anchor" href="#youtube-closing-an-issue-in-pshtml-to-improve-charting-in-html-with-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>Anthony livestreams his journey into writing an improvement to a public module.</p>]]></content:encoded></item><item><title>Running Universal Dashboard with Ubuntu and Nginx (With HTTPS!)</title><link>https://powershell.org/articles/2019-03-22-running-universal-dashboard-with-ubuntu-and-nginx-with-https/</link><guid>https://powershell.org/articles/2019-03-22-running-universal-dashboard-with-ubuntu-and-nginx-with-https/</guid><pubDate>Fri, 22 Mar 2019 14:37:28 +0000</pubDate><description>&lt;p&gt;&lt;img src="https://i.imgur.com/Rqj22dX.png" alt="Imgur"&gt;&lt;em&gt;A basic UniversalDashboard running on nginx&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="index" class="ps-heading wp-block-heading"&gt;Index&lt;a class="ps-heading-anchor" href="#index" 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;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#prerequisites"&gt;Prerequisites&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#configuration"&gt;Configuration&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#configuring-https"&gt;HTTPS (Optional)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites" class="ps-heading wp-block-heading"&gt;Prerequisites&lt;a class="ps-heading-anchor" href="#prerequisites" 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;For this writeup, I&amp;rsquo;m using Ubuntu 18.04. Software packages are geared toward using that version.&lt;/p&gt;
&lt;p&gt;First, we&amp;rsquo;ll need to install our dependencies&lt;/p&gt;
&lt;p&gt;There are several ways to install Powershell core on Ubuntu. I recommend &lt;a href="https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6#ubuntu-1804"&gt;Microsoft&amp;rsquo;s documentation for ubuntu 18.04 here&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p><img src="https://i.imgur.com/Rqj22dX.png" alt="Imgur"><em>A basic UniversalDashboard running on nginx</em></p><h2 id="index" class="ps-heading wp-block-heading">Index<a class="ps-heading-anchor" href="#index" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><ul><li><p><a href="#prerequisites">Prerequisites</a></p></li><li><p><a href="#configuration">Configuration</a></p></li><li><p><a href="#configuring-https">HTTPS (Optional)</a></p></li></ul><h2 id="prerequisites" class="ps-heading wp-block-heading">Prerequisites<a class="ps-heading-anchor" href="#prerequisites" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>For this writeup, I&rsquo;m using Ubuntu 18.04. Software packages are geared toward using that version.</p><p>First, we&rsquo;ll need to install our dependencies</p><p>There are several ways to install Powershell core on Ubuntu. I recommend<a href="https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6#ubuntu-1804">Microsoft&rsquo;s documentation for ubuntu 18.04 here</a></p><p>Once installed, enter Powershell and install the<a href="https://www.poshud.com">UniversalDashboard</a> module. This will use the community edition.</p><p><code>pwsh PS&gt; Install-Module UniversalDashboard.Community -Scope CurrentUser</code>Confirm it is installed:</p><p><code>PS&gt; Get-Module -ListAvailable</code>Next, we need to install our webserver:</p><p><code>sudo apt install nginx</code>## Configuration {.wp-block-heading}</p><p>First we need to have a dashboard to run, along with a place to run it.</p><p>Create a project directory. This example uses</p><p><code>my-site</code>at the root of my user profile.</p><p><code>cd ~ mkdir my-site cd ./my-site</code>Place the following into a file called</p><p><code>dashboard.ps1</code>and place it at the root of your project:</p><p><code>$MyDashboard = New-UDDashboard -Title "Nginx Dashboard" -Content { New-UDCard -Title "Running UD with Nginx!" } Start-UDDashboard -Port 8080 -Dashboard $MyDashboard -Name 'Nginx Dashboard' -Wait</code>&gt;</p><blockquote><p>NOTE: You may have a dashboard which includes many folders, depending on the structure of your project. In that case, copy the entire folder structure into your project folder</p><p><code>&gt; (my-site)</code>&gt; . Make sure</p><p><code>&gt; dashboard.ps1</code>&gt; is at the root of this folder.</p></blockquote><p>Now, we need to configure our webserver to act as a reverse-proxy. This is done to make our site available via SSL in a very simple manner.</p><p>Let&rsquo;s create a very basic reverse-proxy configuration within nginx. Navigate to</p><p><code>/etc/nginx/sites-available</code>and remove the</p><p><code>default</code>file. This file is symlinked to</p><p><code>/etc/nginx/sites-enabled/default</code>, so remove it as well.</p><p>Next, head back to</p><p><code>/etc/nginx/sites-available</code>and create a file called</p><p><code>dashboard.conf</code>sudo nano dashboard.conf
`Place the following in it:</p><p><code>server { listen 80; server_name mydashboard; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }</code>Now we need to symlink our proxy&rsquo;s config file to the sites-enabled folder:</p><p><code>sudo ln -s /etc/nginx/sites-available/dashboard.conf /etc/nginx/sites-enabled/dashboard.conf</code>Next, we need it to run as a service so we can control our dashboard with</p><p><code>systemctl</code>. I&rsquo;m using Ubuntu, so I&rsquo;m going to use systemd to manage my service.</p><p>Navigate to</p><p><code>/etc/systemd/system</code>and create a service file for our service:</p><p><code>sudo nano uddashboard.service</code>Place the following in the service file. Note the path in</p><p><code>ExecStart</code>. This will need to match the path of your project&rsquo;s</p><p><code>dashboard.ps1</code>file. Also ensure the user specified to run the service has permissions to access your project folder.</p><p><code>[Unit] Description=Universal Dashboard Service After=syslog.target network.target [Service] User=nate Group=nate Type=simple StandardOutput=syslog StandardError=syslog ExecStart=/usr/bin/pwsh -c "&amp; /home/nate/my-site/dashboard.ps1" TimeoutStopSec=20 Restart=on-failure [Install] WantedBy=multi-user.target</code>Now, start your dashboard:</p><p><code>sudo systemctl start uddashboard.service</code>Your site should now be available at http ://localhost:80</p><p>Finally, we want to enable our service so that it starts at boot and will attempt error correction if stopped unceremoniously.</p><p><code>sudo systemctl enable uddashboard.service</code>You should now have a fully functioning dashboard.</p><p>If you&rsquo;d like to configure SSL, read on!</p><h2 id="configuring-https" class="ps-heading wp-block-heading">Configuring HTTPS<a class="ps-heading-anchor" href="#configuring-https" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>For this tutorial, I&rsquo;m using Let&rsquo;s Encrypt certificates. For more information on how to obtain LE certs, check out the Let&rsquo;s Encrypt documentation on<a href="https://letsencrypt.org/getting-started/">getting started</a>.</p><p>Make a directory for your certificates. Exactly where is up to you.</p><p><code>sudo mkdir /etc/nginx/certs cd /etc/nginx/certs</code>Since I&rsquo;m using Let&rsquo;s Encrypt, I have 2 certificate files I need to put here -</p><p><code>fullchain.pem</code>and</p><p><code>privkey.pem</code>.</p><p>Be sure to set permissions on both to 400 (user read-only)</p><p><code>sudo chmod 400 ./fullchain.pem sudo chmod 400 ./privkey.pem</code>Next, we need to modify our nginx config file to listen on HTTPS.</p><p><code>sudo nano /etc/nginx/sites-available/dashboard.conf</code>Now, we will listen on port 443, and port 80, which will perform a redirect to the secure version of our site:</p><blockquote/><blockquote><p>NOTE: Change</p><p><code>&gt; server_name</code>&gt; to your own servername</p></blockquote><p><code>server { listen 80; return 301 https://$host$request_uri; } server { listen 443 ssl; ssl on; server_name uddashboard.lab.natelab.us; ssl_protocols TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }</code>Now, simply reload nginx</p><p><code>sudo service nginx reload</code>You should now have a secure Universal Dashboard server, running as a service. Huzzah!</p><blockquote/><blockquote><p>*NOTE: *This is a cross-post from my original blog post:<a href="https://blog.natelab.us/running-universal-dashboard-with-ubuntu-and-nginx-with-https">https://blog.natelab.us/running-universal-dashboard-with-ubuntu-and-nginx-with-https</a></p></blockquote>]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 15-March-2019</title><link>https://powershell.org/articles/2019-03-15-icymi-powershell-week-of-15-march-2019/</link><guid>https://powershell.org/articles/2019-03-15-icymi-powershell-week-of-15-march-2019/</guid><pubDate>Fri, 15 Mar 2019 15:00:24 +0000</pubDate><description>&lt;p&gt;Topics include goodies for your prompt, more xplatform support for the SqlServer module, and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include goodies for your prompt, more xplatform support for the SqlServer module, and more.</p><p>Content pulled together by Robin Dadswell and Mark Roloff</p><h6 id="invoke-sqlcmd-is-now-available-supporting-cross-platform" class="ps-heading wp-block-heading"><a href="https://devblogs.microsoft.com/powershell/invoke-sqlcmd-is-now-available-supporting-cross-platform/"><em>Invoke-Sqlcmd is Now Available Supporting Cross-Platform</em></a><a class="ps-heading-anchor" href="#invoke-sqlcmd-is-now-available-supporting-cross-platform" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Steve Lee on March 11th</p><p>DBAs rejoice!</p><p><code>Invoke-SqlCmd</code>is now xplat with the latest PS Core build. Make sure you check out Steve&rsquo;s post for the details.</p><h6 id="powershell-core--updating-your-sql-server-linux-docker-containers-images" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#powershell-core--updating-your-sql-server-linux-docker-containers-images"/><a href="http://www.maxtblog.com/2019/03/powershell-core-updating-your-sql-server-linux-containers-images/"><em>PowerShell Core – Updating Your SQL Server Linux Docker Containers Images</em></a><a class="ps-heading-anchor" href="#powershell-core--updating-your-sql-server-linux-docker-containers-images" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Max Trinidad on March 10th</p><p>Speaking of xplat support for that cmdlet&hellip; Max demonstrates how to update your Linux Docker image to include the necessary tools for using</p><p><code>Invoke-SqlCmd</code>.</p><h6 id="programmatically-triggering-a-group-licenses-refresh-for-azuread" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#programmatically-triggering-a-group-licenses-refresh-for-azuread"/><a href="https://www.lieben.nu/liebensraum/2019/03/programmatically-triggering-a-group-licenses-refresh-for-azuread/"><em>Programmatically Triggering a Group Licenses Refresh for AzureAD</em></a><a class="ps-heading-anchor" href="#programmatically-triggering-a-group-licenses-refresh-for-azuread" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Jos Lieben on March 11th</p><p>As nice and the Az module and Graph API are, some things still aren&rsquo;t accessible through those. Jos shows us how to automate with Azure&rsquo;s &ldquo;hidden&rdquo; API.</p><h6 id="bitlocker-active-directory-recovery-password-backup-compliance" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#bitlocker-active-directory-recovery-password-backup-compliance"/><a href="https://mickitblog.blogspot.com/2019/03/bitlocker-active-directory-recover.html"><em>Bitlocker Active Directory Recovery Password Backup Compliance</em></a><a class="ps-heading-anchor" href="#bitlocker-active-directory-recovery-password-backup-compliance" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Mick Pletcher on March 8th</p><p>For SCCM admins, here&rsquo;s a handy way to use PS with a Compliance Policy to make sure your BitLocker keys are properly backed up.</p><h6 id="the-happy-powershell-prompt" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#the-happy-powershell-prompt"/><a href="https://dev.to/azure/the-happy-powershell-prompt-2l4f"><em>The Happy PowerShell Prompt</em></a><a class="ps-heading-anchor" href="#the-happy-powershell-prompt" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Aaron Powell on March 12th</p><p>Who couldn&rsquo;t use a little more positivity in their shell? Using ConEmu, Aaron shows how to inject a little happiness into your prompt.</p><h6 id="reddit-rpowershell---popular-weekly-post" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#reddit-rpowershell---popular-weekly-post"/><a href="https://old.reddit.com/r/PowerShell/comments/b06gtw/til_that_powershell_can_do_colors/?st=jt9jgsxi&amp;sh=20e55b07"><em>Reddit /r/PowerShell - Popular Weekly Post</em></a><a class="ps-heading-anchor" href="#reddit-rpowershell---popular-weekly-post" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>May be old news to some but /u/NotNotWrongUsually came across how colorful we can get in the shell now. Time to add a little extra pizazz to my prompt!</p><h6 id="youtube-anzpsug-march-2019" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190315.md#youtube-anzpsug-march-2019"/><a href="https://www.youtube.com/watch?v=1wLJ0yUDoMM"><em>Youtube: ANZPSUG March 2019</em></a><a class="ps-heading-anchor" href="#youtube-anzpsug-march-2019" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>Friedrich Weinmann joins the Australia and New Zealand PSUG to discuss PSFramework.</p>]]></content:encoded></item><item><title>Who's Your 2019 PowerShell Community Hero?</title><link>https://powershell.org/articles/2019-03-11-whos-your-2019-powershell-community-hero/</link><guid>https://powershell.org/articles/2019-03-11-whos-your-2019-powershell-community-hero/</guid><pubDate>Mon, 11 Mar 2019 15:18:59 +0000</pubDate><description>&lt;p&gt;Today we&amp;rsquo;re opening nominations for the 2019 PowerShell Community Heroes! We want to know about those in the community that are doing a wealth of good. Have they written a fantastic script, or posted a blog series that has been exceptionally helpful? Are they doing a mad amount of pull requests in a module or in PowerShell Core? Here is your opportunity to make sure they get the recognition they deserve!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Today we&rsquo;re opening nominations for the 2019 PowerShell Community Heroes! We want to know about those in the community that are doing a wealth of good. Have they written a fantastic script, or posted a blog series that has been exceptionally helpful? Are they doing a mad amount of pull requests in a module or in PowerShell Core? Here is your opportunity to make sure they get the recognition they deserve!</p><p>All you need to do is take a couple of minutes to fill out a quick survey to let us know who you&rsquo;d like to nominate and why. It&rsquo;s that simple!</p><p>Link:<a href="https://survey.sogosurvey.com/r/FsZhCb"><br>
https://survey.sogosurvey.com/r/FsZhCb</a></p><p>We&rsquo;ll be announcing the top honorees at this year&rsquo;s PowerShell + DevOps Global Summit, followed by an announcement right here on PowerShell.org. The survey closes on April 5th!</p>
]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 8-March-2019</title><link>https://powershell.org/articles/2019-03-08-icymi-powershell-week-of-8-march-2019/</link><guid>https://powershell.org/articles/2019-03-08-icymi-powershell-week-of-8-march-2019/</guid><pubDate>Fri, 08 Mar 2019 16:00:36 +0000</pubDate><description>&lt;p&gt;Topics include the Graph API, status pages, test-driven development, getting your Google 2FA in the shell, and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include the Graph API, status pages, test-driven development, getting your Google 2FA in the shell, and more.</p><p>Content curated by Robin Dadswell and Mark Roloff.</p><h6 id="powershell-and-the-microsoft-graph-api--part-2--starting-to-explore" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#powershell-and-the-microsoft-graph-api--part-2--starting-to-explore"/><a href="https://jamesone111.wordpress.com/2019/03/03/powershell-and-the-microsoft-graph-api-part-2-starting-to-explore/"><em>PowerShell and the Microsoft Graph API : Part 2 – Starting to explore</em></a><a class="ps-heading-anchor" href="#powershell-and-the-microsoft-graph-api--part-2--starting-to-explore" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by James O&rsquo;Neill on March 3rd</p><p>The Graph API is a vast and powerful tool in MS&rsquo;s cloud. With a little help from James, we can start to poke around at what it brings to the table. Make sure oyu check out pt 1 to see how the connection is built.</p><h6 id="connect-to-microsoft-graph-for-intune-with-powershell-ise-add-ons" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#connect-to-microsoft-graph-for-intune-with-powershell-ise-add-ons"/><a href="https://www.imab.dk/connect-to-microsoft-graph-for-intune-with-powershell-ise-add-ons-with-a-single-click/"><em>Connect to Microsoft Graph for Intune with Powershell ISE Add-ons</em></a><a class="ps-heading-anchor" href="#connect-to-microsoft-graph-for-intune-with-powershell-ise-add-ons" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Martin Bengtsson on March 4th</p><p>Keeping with the Graph theme, Martin has a great tool for you Intune admins that are still using ISE.</p><h6 id="meet-statusimo--powershell-generated-status-page" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#meet-statusimo--powershell-generated-status-page"/><a href="https://evotec.xyz/meet-statusimo-powershell-generated-status-page/"><em>Meet Statusimo – PowerShell generated Status Page</em></a><a class="ps-heading-anchor" href="#meet-statusimo--powershell-generated-status-page" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Przemyslaw Klys on March 6th</p><p>Building on his PSWriteHTML module, Przemysław now unveils Statusimo, an impressive new module that can help you create professional looking status pages for your organization.</p><h6 id="google-authenticator-in-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#google-authenticator-in-powershell"/><a href="https://humanequivalentunit.github.io/Google-Authenticator-In-PowerShell/"><em>Google Authenticator in PowerShell</em></a><a class="ps-heading-anchor" href="#google-authenticator-in-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by HumanEquivalentUnit on March 7th</p><p>This is pretty cool! Don&rsquo;t want to take out your phone to handle your 2FA login with Google? Get it in the shell!</p><h6 id="powershell-line-counting" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#powershell-line-counting"/><a href="https://gist.github.com/Jaykul/e1056d5182d0c5566a22f72387abf741"><em>PowerShell Line Counting</em></a><a class="ps-heading-anchor" href="#powershell-line-counting" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Joel Bennett on March 6th</p><p>Asking how many lines are in a script is easy enough to answer but what about from PowerShell&rsquo;s perspective? Joel uses the AST to find out how the PowerShell parser handles this.</p><h6 id="tweet-of-the-week" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#tweet-of-the-week"/><a href="https://twitter.com/TylerLeonhardt/status/1102749805233737729"><em>Tweet of the Week</em></a><a class="ps-heading-anchor" href="#tweet-of-the-week" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>Not all heroes wear capes but umm&hellip; Somebody needs to buy Taylor Leonhardt a cape. With this little adjustment to VSCode, double-clicking a variable will now include the $ sign.</p><h6 id="youtube-how-to-do-test-driven-developmentdesign-in-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190308.md#youtube-how-to-do-test-driven-developmentdesign-in-powershell"/><a href="https://www.youtube.com/watch?v=k8rJ8HrN3Ro"><em>Youtube: How to do Test Driven Development/Design in PowerShell</em></a><a class="ps-heading-anchor" href="#youtube-how-to-do-test-driven-developmentdesign-in-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>Doug Finke gives a quick demo on how he approaches test-driven development.</p>]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 1-March-2019</title><link>https://powershell.org/articles/2019-03-01-icymi-powershell-week-of-1-march-2019/</link><guid>https://powershell.org/articles/2019-03-01-icymi-powershell-week-of-1-march-2019/</guid><pubDate>Fri, 01 Mar 2019 16:00:11 +0000</pubDate><description>&lt;p&gt;Topics include more Iron Scripter, a trove of AD and O365 scripts, tons of REST API goodness, and some fundamental lessons from Brisbane.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include more Iron Scripter, a trove of AD and O365 scripts, tons of REST API goodness, and some fundamental lessons from Brisbane.</p><p>Special thanks to Brett Bunker, Robin Dadswell, and Mark Roloff.</p><h6 id="generating-powershell-cmdlets-from-openapiswagger-with-autorest" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#generating-powershell-cmdlets-from-openapiswagger-with-autorest"/><a href="https://devblogs.microsoft.com/powershell/cmdlets-via-autorest/"><em>Generating PowerShell Cmdlets from OpenAPI/Swagger with AutoRest</em></a><a class="ps-heading-anchor" href="#generating-powershell-cmdlets-from-openapiswagger-with-autorest" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Garrett Serack on February 22nd</p><p>AutoRest has added support for PowerShell! And I honestly had no idea what it was before this but it looks like a pretty cool way to generate code for hitting REST APIs from yaml files. Definitely worth looking at more closely!</p><h6 id="iron-scripter-2019-prelude-challenge-2" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#iron-scripter-2019-prelude-challenge-2"/><a href="https://ironscripter.us/iron-scripter-2019-prelude-challenge-2/"><em>Iron Scripter 2019 Prelude Challenge #2</em></a><a class="ps-heading-anchor" href="#iron-scripter-2019-prelude-challenge-2" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Jeff Hicks on February 26th</p><p>If you&rsquo;ve been doing the Iron Scripter challenges, or would like to, don&rsquo;t forget to share your solutions! Everyone has a different take, so there&rsquo;s probably something new that you can teach somebody just by putting it out there.</p><h6 id="understanding-the-invoke-restmethod-powershell-cmdlet" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#understanding-the-invoke-restmethod-powershell-cmdlet"/><a href="https://4sysops.com/archives/understanding-the-invoke-restmethod-powershell-cmdlet/"><em>Understanding the Invoke-RestMethod PowerShell cmdlet</em></a><a class="ps-heading-anchor" href="#understanding-the-invoke-restmethod-powershell-cmdlet" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Adam Bertram on February 23rd</p><p>REST APIs are fun, and</p><p><code>Invoke-RestMethod</code>is your gateway to using them. Let Adam take you on a tour of this flexible cmdlet!</p><h6 id="get-latest-office-365-service-status-with-flow-or-powershell" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#get-latest-office-365-service-status-with-flow-or-powershell"/><a href="https://www.lee-ford.co.uk/get-latest-office-365-service-status-with-flow-or-powershell/"><em>Get Latest Office 365 Service Status with Flow or PowerShell</em></a><a class="ps-heading-anchor" href="#get-latest-office-365-service-status-with-flow-or-powershell" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>by Lee Ford on February 25th</p><p>Lee&rsquo;s guide will walk you through setting up an Azure AD app that can then be used by PowerShell to query your tenant&rsquo;s status. Bonus points for integrating it with your PoshBot deployment!</p><h6 id="reddit-rpowershell---popular-weekly-post" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#reddit-rpowershell---popular-weekly-post"/><a href="https://old.reddit.com/r/PowerShell/comments/atop5h/sharing_office_365active_directory_scripts"><em>Reddit /r/PowerShell - Popular Weekly Post</em></a><a class="ps-heading-anchor" href="#reddit-rpowershell---popular-weekly-post" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>Avast! Yonder Reddit post be havin&rsquo; a bounty o&rsquo; O365 and AD scripts fer the plunder! Arrrr!</p><h6 id="youtube-powershell-101-with-michael-and-christian" class="ps-heading wp-block-heading"><a href="https://github.com/devops-collective-inc/WhatYouMissedThisWeek/blob/master/20190301.md#youtube-powershell-101-with-michael-and-christian"/><a href="https://www.youtube.com/watch?v=MeHS-w74BBg"><em>Youtube: PowerShell 101 with Michael and Christian</em></a><a class="ps-heading-anchor" href="#youtube-powershell-101-with-michael-and-christian" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h6><p>From the Brisbane User Group, Michael gives a lesson on PS fundamentals covering flow control and decision making statements</p>]]></content:encoded></item></channel></rss>