&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 January 2020 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2020/01/</link><description>Recent content in Articles from January 2020 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2020/01/index.xml" rel="self" type="application/rss+xml"/><item><title>ICYMI: PowerShell Week of 31-January-2020</title><link>https://powershell.org/articles/2020-01-31-icymi-powershell-week-of-31-january-2020/</link><guid>https://powershell.org/articles/2020-01-31-icymi-powershell-week-of-31-january-2020/</guid><pubDate>Fri, 31 Jan 2020 15:00:24 +0000</pubDate><description>&lt;p&gt;Topics include Azure service updates, Publishing to the PowerShell Gallery, Office 365, Clusters and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include Azure service updates, Publishing to the PowerShell Gallery, Office 365, Clusters and more.</p><p>Special thanks to Robin Dadswell, Prasoon Karunan V, Kiran Patnayakuni and Kevin Laux.</p><h6 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></h6><p><a href="https://chen.about-powershell.com/2020/01/retrieve-azure-service-updates-and-publish-as-news-letter-powershell/?fbclid=IwAR1SJZGqMtG_flaw4Y-Oh7npAlSKfgTZWc3_YbYVCI8eutRI-CJi4zmHFds"><em>Retrieve Azure Service Updates and Publish as News Letter</em></a></p><p>by Chen V on 26th January</p><p>It was a simple ask “How do we know Azure Service Updates?” The answer is to use the link (Azure Service Updates)! But, in this blog post I will show how to retrieve the feed information programmatically, store in Azure Table Storage and send weekly newsletter to business users</p><h6 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></h6><p><a href="https://www.jeffbrown.tech/post/how-to-publish-your-first-powershell-gallery-package"><em>How to Publish Your First PowerShell Gallery Package</em></a></p><p>by Jeff Brown on 26th January</p><p>If you&rsquo;ve written a module or script that you feel others could benefit using, definitely check out publishing it to the broader community. In fact, that&rsquo;s what this post is about.</p><h6 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></h6><p><a href="https://sid-500.com/2020/01/28/office-365-add-user-accounts-and-mailboxes-with-powershell/"><em>Office 365: Add User Accounts and Mailboxes with PowerShell</em></a></p><p>by Patrick Gruenauer on 28th January</p><p>More and more companies are moving to the cloud. Subscribing cloud services means less hardware maintenance, more comfort, and an “always-on” feeling. As an administrator, you have to get familiar with the administration of cloud services, especially with the basics like creating user accounts and user mailboxes. In this article I will carry out adding user accounts along with adding user mailboxes with Powershell.</p><h6 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></h6><p><a href="https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/downloading-powershell-language-reference-or-any-file"><em>Downloading PowerShell Language Reference (or any file)</em></a></p><p>by Prateik Singh on 29th January</p><p>Invoke-WebRequest can easily download files for you. The code below downloads the PowerShell Language Reference published by PowerShell Magazine, and opens it with the associated program.</p><h6 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></h6><p><a href="https://www.powershellmagazine.com/2020/01/30/parsing-failover-cluster-validation-report-in-powershell/"><em>Parsing Failover Cluster Validation Report in PowerShell</em></a></p><p>by Ravikanth C on 30th January</p><p>Test-Cluster can create an HTML report but it isn&rsquo;t very useable. Ravikanth&rsquo;s blog post goes into detail about converting the Test-Cluster output into something more usable for automation.</p><h6 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></h6><p><a href="https://www.reddit.com/r/PowerShell/comments/etg1ct/pop_up_a_simcitystyle_powershell_loading_screen/"><em>Reddit /r/PowerShell - Most Popular Weekly Post</em></a></p><p>User Weebsnore shares a Sim city style loading screen for the PowerShell console.</p><h6 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></h6><p><a href="https://twitter.com/Steve_MSFT/status/1221921759852523520"><em>Tweet of the Week</em></a></p><p>#PowerShell Core 6.2.4 is out!</p><h6 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></h6><p><a href="https://www.youtube.com/watch?v=h-ZJ1UlLVis&amp;feature=youtu.be"><em>Youtube: PSS: Code, Commit, Deploy. Starting your 3 step journey to using Pipelines with Stephen Valdinger</em></a></p><p>PowerShell Saturday is a training event for all things PowerShell. The event was held in Raleigh, North Carolina and hosted by Research Triangle PowerShell User Group. Stephen Valdinger goes through the process of using an Azure Dev Ops Pipeline. This process is useful in developing, maintaining, and deploying code.</p>]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 24-January-2020</title><link>https://powershell.org/articles/2020-01-24-icymi-powershell-week-of-24-january-2020/</link><guid>https://powershell.org/articles/2020-01-24-icymi-powershell-week-of-24-january-2020/</guid><pubDate>Fri, 24 Jan 2020 15:00:24 +0000</pubDate><description>&lt;p&gt;Topics include PSboundparamters, Email with SendGrid, Universal Automation and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include PSboundparamters, Email with SendGrid, Universal Automation and more.</p><p>Special thanks to Robin Dadswell, Prasoon Karunan V, Kiran Patnayakuni and Kevin Laux.</p><h6 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></h6><p><a href="https://www.gngrninja.com/script-ninja/2020/1/19/using-psboundparameters-in-powershell"><em>Using $PSBoundParameters in PowerShell</em></a></p><p>by Mike Roberts on 19th January</p><p>Ever use $PSBoundParameters to see what parameters are passed into your function. Mike will tell you everything you need to know about $PSBoundParameters in his blog post.</p><h6 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></h6><p><a href="https://4bes.nl/2020/01/19/send-email-from-powershell-with-sendgrid/"><em>Send email from PowerShell with SendGrid</em></a></p><p>by Barbara Forbes on 19th January</p><p>Since the system behind Send-MailMessage is no longer maintained Barbara explores an alternative method of sending email from PowerShell, SendGrid.</p><h6 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></h6><p><a href="https://4sysops.com/archives/monitoring-active-directory-with-the-powershell-module-psadhealth/"><em>Monitoring Active Directory with the PowerShell module PSADHealth</em></a></p><p>by Mike Kanakos on 20th January</p><p>The goal of this module is to enable you to know when the core pieces of Active Directory aren&rsquo;t working as expected so you can take action.</p><h6 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></h6><p><a href="https://ridicurious.com/2020/01/23/deep-dive-break-continue-return-exit-in-powershell/"><em>Deep Dive: Break, Continue, Return, Exit in PowerShell</em></a></p><p>by Manoj Sahoo on 23rd January</p><p>Manoj does a deep dive on code execution terminators in PowerShell.</p><h6 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></h6><p><a href="https://adamtheautomator.com/powershell-foreach/"><em>The PowerShell foreach Loop: Examples, Demos and Learning</em></a></p><p>by June Castillote on 23rd January</p><p>Learn how all the PowerShell foreach loops work with tons of examples and real-world use cases in this informative article.</p><h6 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></h6><p><a href="https://www.reddit.com/r/PowerShell/comments/er0lfv/four_commands_to_help_you_track_down_insecure/"><em>Reddit /r/PowerShell - Most Popular Weekly Post</em></a></p><p>Four commands to help you track down insecure LDAP Bindings before March 2020. In march 2020, Microsoft is supposed to block insecure LDAP bindings. I&rsquo;ve updated my 3 Powershell modules to help you track down machines/accounts doing that.</p><h6 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></h6><p><a href="https://www.youtube.com/watch?v=u9Hq4X8V7VY&amp;feature=youtu.be"><em>Youtube: Introducing Universal Automation</em></a></p><p>Universal Automation is the automation platform for PowerShell. This video is a recording of a webinar that we produced on 1-22-2020. We provide an overview of UA followed by several demos of the product.</p>]]></content:encoded></item><item><title>Book: "Shell of an Idea," the Untold History of PowerShell</title><link>https://powershell.org/articles/2020-01-22-book-shell-of-an-idea-the-untold-history-of-powershell/</link><guid>https://powershell.org/articles/2020-01-22-book-shell-of-an-idea-the-untold-history-of-powershell/</guid><pubDate>Wed, 22 Jan 2020 16:42:23 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;ve launched a new book project, which I&amp;rsquo;m hoping you&amp;rsquo;ll support: &lt;a href="https://leanpub.com/shell-of-an-idea/"&gt;&lt;strong&gt;Shell of an Idea, the Untold History of PowerShell&lt;/strong&gt;&lt;/a&gt; is now available for pre-purchase at a $10 discount on Leanpub. You&amp;rsquo;ll get the initial introductory chapters right now, and when I start pumping out the main manuscript in April-May 2020, you&amp;rsquo;ll get that too. The price will rise to the final $30 after the first 100 preorders, so don&amp;rsquo;t delay too much if you want in on the deal.&lt;br&gt;
This is a big project, and it&amp;rsquo;s involving a few flights up to Redmond for sit-down interviews with key folks - hence the pre-order, to help fund those trips. I&amp;rsquo;m going &lt;em&gt;all&lt;/em&gt; the way back in time to the earliest days of PowerShell Monad Babylon Kermit, yeah it went through a lot of names and concepts! I plan to fill this not only with interesting facts, but also personal anecdotes from the folks who were there, and some back-of-house stories about the inevitable politics and challenges the shell saw on its path to life.&lt;br&gt;
I&amp;rsquo;m also &lt;a href="https://donjones.com/2020/01/17/be-a-part-of-powershell-history-please/"&gt;collecting personal anecdotes&lt;/a&gt; from people who&amp;rsquo;ve been impacted by PowerShell. I&amp;rsquo;d love to hear about life before PowerShell (how easy was automation back then, and how important was it to you?), how PowerShell changed your job or career, or anything like that. I&amp;rsquo;ll weave all of that into the book too, because the story of PowerShell is &lt;em&gt;mainly&lt;/em&gt; the story of the people who made it and the people who adopted it.&lt;br&gt;
Thanks for your support, and tell a friend!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;ve launched a new book project, which I&rsquo;m hoping you&rsquo;ll support: <a href="https://leanpub.com/shell-of-an-idea/"><strong>Shell of an Idea, the Untold History of PowerShell</strong></a> is now available for pre-purchase at a $10 discount on Leanpub. You&rsquo;ll get the initial introductory chapters right now, and when I start pumping out the main manuscript in April-May 2020, you&rsquo;ll get that too. The price will rise to the final $30 after the first 100 preorders, so don&rsquo;t delay too much if you want in on the deal.<br>
This is a big project, and it&rsquo;s involving a few flights up to Redmond for sit-down interviews with key folks - hence the pre-order, to help fund those trips. I&rsquo;m going <em>all</em> the way back in time to the earliest days of PowerShell Monad Babylon Kermit, yeah it went through a lot of names and concepts! I plan to fill this not only with interesting facts, but also personal anecdotes from the folks who were there, and some back-of-house stories about the inevitable politics and challenges the shell saw on its path to life.<br>
I&rsquo;m also<a href="https://donjones.com/2020/01/17/be-a-part-of-powershell-history-please/">collecting personal anecdotes</a> from people who&rsquo;ve been impacted by PowerShell. I&rsquo;d love to hear about life before PowerShell (how easy was automation back then, and how important was it to you?), how PowerShell changed your job or career, or anything like that. I&rsquo;ll weave all of that into the book too, because the story of PowerShell is <em>mainly</em> the story of the people who made it and the people who adopted it.<br>
Thanks for your support, and tell a friend!</p>
]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 16-January-2020</title><link>https://powershell.org/articles/2020-01-17-icymi-powershell-week-of-16-january-2020/</link><guid>https://powershell.org/articles/2020-01-17-icymi-powershell-week-of-16-january-2020/</guid><pubDate>Fri, 17 Jan 2020 15:00:38 +0000</pubDate><description>&lt;p&gt;Topics include Azure Monitor Logs, Office 365 Mailbox sizes, Brackets and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include Azure Monitor Logs, Office 365 Mailbox sizes, Brackets and more.</p><p>Special thanks to Robin Dadswell, Prasoon Karunan V, Kiran Patnayakuni and Kevin Laux.</p><h6 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></h6><p><a href="http://jdhitsolutions.com/blog/powershell/7163/creating-linked-html-with-powershell/"><em>Creating Linked HTML with PowerShell</em></a></p><p>by Jeff Hicks on 13th January</p><p>Take a dive into solving the niche problem of hyperlinks in HTML reports.</p><h6 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></h6><p><a href="https://kpatnayakuni.com/2020/01/13/just-a-tip-12-get-all-the-aliases-by-cmdlet-in-powershell/?utm_source=dlvr.it&amp;utm_medium=twitter"><em>JUST A TIP #12 – GET ALL THE ALIASES BY CMDLET IN POWERSHELL</em></a></p><p>by Kiran Patnayakuni on 13th January</p><p>A small tip about aliases.</p><h6 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></h6><p><a href="https://sid-500.com/2020/01/14/powershell-unterstanding-parentheses-braces-and-square-brackets/"><em>PowerShell: Unterstanding Parentheses, Braces and Square Brackets</em></a></p><p>by Patrick Gruenauer on 14th January</p><p>The goal for this blog post is to demystify the usage of PowerShell brackets for scripters and PowerShell enthusiasts. You can find braces everywhere, in scripts, in the PowerShell help and in simple one-liners. And there are three types. Let’s dive in.</p><h6 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></h6><p><a href="https://adamtheautomator.com/monitor-office-365-mailbox-size/"><em>How to Monitor for Large Office 365 Mailbox Size with PowerShell</em></a></p><p>by June Castillote on 15th January</p><p>Learn how to monitor Office 365 mailbox sizes with PowerShell in this informative, how-to article.</p><h6 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></h6><p><a href="https://blog.darrenjrobinson.com/sending-and-querying-custom-log-data-to-azure-monitor-logs/"><em>Sending and Querying Custom Log Data to Azure Monitor Logs</em></a></p><p>by Darren Robinson on 17th January</p><p>Learn how to not only send but query data from Azure Monitor Logs using PowerShell.</p><h6 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></h6><p><a href="https://www.reddit.com/r/PowerShell/comments/eprre9/automating_fears/"><em>Reddit /r/PowerShell - Most Popular Weekly Post</em></a></p><p>I’m a big advocate of automation. But my co-sysadmin often tell me to slow down and not make it do all for them because they wish to learn the hard way with point and click and typing all the cmdlets one by one so that when the scripts fails they are not completely lost&hellip; See some thoughts around this.</p><h6 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></h6><p><a href="https://twitter.com/Steve_MSFT/status/1217956062092857344?s=20"><em>Tweet of the Week</em></a></p><p>PowerShell 7 RC2 is out! One month till GA.</p><h6 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></h6><p><a href="https://www.youtube.com/watch?v=z0DCFxlTN8k"><em>Youtube: Event-based automation across hybrid environments using PowerShell in Azure Functions | THR2160</em></a></p><p>An Ignite session discussing the just released support for PowerShell in Azure Functions and how this can be used to deliver event-based automation.</p>]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 10-January-2020</title><link>https://powershell.org/articles/2020-01-10-icymi-powershell-week-of-10-january-2020/</link><guid>https://powershell.org/articles/2020-01-10-icymi-powershell-week-of-10-january-2020/</guid><pubDate>Fri, 10 Jan 2020 15:00:25 +0000</pubDate><description>&lt;p&gt;Topics include reinstalling Windows Store Apps, Auditing Computers, PowerShell 7 and more.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Topics include reinstalling Windows Store Apps, Auditing Computers, PowerShell 7 and more.</p><p>Special thanks to Robin Dadswell, Prasoon Karunan V, Kiran Patnayakuni and Kevin Laux.</p><h6 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></h6><p><a href="https://sysmansquad.com/2020/01/06/reprovision-windows-10-apps-wait-what/"><em>Reprovision Windows 10 Apps&hellip; Wait, What? - Systems Management Squad</em></a></p><p>by Cody Mathis on 6th January</p><p>Reverse Windows 10 AppX Deprovisioning. Restore the Windows Store, and any other AppX Package that has been removed.</p><h6 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></h6><p><a href="https://adamtheautomator.com/azure-ad-token-expire/"><em>How to Revoke Azure AD Tokens from Expired AD Users</em></a></p><p>by Adam Bertram on 6th January</p><p>Learn how to build a PowerShell script that finds all expired AD user accounts and revoke Azure AD tokens in this tutorial.</p><h6 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></h6><p><a href="https://blog.ukotic.net/2020/01/07/powershell-7-pipeline-chain-operators/"><em>PowerShell 7 – Pipeline Chain Operators</em></a></p><p>by Mark Ukotic on 7th January</p><p>With this release comes several new features that continue to build upon the previous versions. One of these new features being introduced are two new operators, &amp;&amp; and ||, referred to as pipeline chain operators.</p><h6 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></h6><p><a href="https://hkeylocalmachine.com/?p=960"><em>Computer Auditing – Part 4 – Windows Services, DHCP Scopes, and IIS Websites</em></a></p><p>by Kamal on 7th January</p><p>I’ve recently been looking at extending the standard set of auditing (from the previous scripts mentioned in Part 1, Part 2, and Part 3) to include DHCP scope information, and IIS-based website information.</p><h6 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></h6><p><a href="https://toastit.dev/2020/01/09/powershells-secret-wildcard/"><em>PowerShell&rsquo;s Secret Wildcard</em></a></p><p>by Josh King on 9th of January</p><p>It&rsquo;s funny how you can be a daily PowerShell user for years and completely miss something about a feature you regularly use&hellip; such as the &ldquo;like&rdquo; operators accepting more than two different wildcards.</p><h6 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></h6><p><a href="https://www.reddit.com/r/PowerShell/comments/ekwwvb/powershell_modules_i_worked_on_in_2019/"><em>Reddit /r/PowerShell - Most Popular Weekly Post</em></a></p><p>u/MadBoyEvo details all of his work in PowerShell during 2019, over 40 modules.</p><h6 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></h6><p><a href="https://twitter.com/Steve_MSFT/status/1214711909301121027"><em>Tweet of the Week</em></a></p><p>PowerShell 7 GA will come in February after an RC2 release.</p><h6 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></h6><p><a href="https://www.youtube.com/watch?v=GSXFnk8UwQ0&amp;feature=youtu.be"><em>Youtube: Foreach-Object -Parallel</em></a></p><p>Jason Helmick does a video discussing the -Parallel parameter in PS Core&rsquo;s Foreach-Object cmdlet.</p>]]></content:encoded></item><item><title>Keeping Your Secrets Secure</title><link>https://powershell.org/articles/2020-01-03-196307-2/</link><guid>https://powershell.org/articles/2020-01-03-196307-2/</guid><pubDate>Fri, 03 Jan 2020 19:47:36 +0000</pubDate><description>&lt;p&gt;Azure Key Vault: Keeping your Secrets Secure&lt;br&gt;
I was tasked with creating a PowerShell script that would connect to a SFTP server and place a file. I immediately jumped at the opportunity and started thinking about what all I would need to accomplish this task. I knew I needed the script to be as secure as possible, but also knew I needed the username, password, and a key file so I could connect securely to the SFTP site. This brought up a number of security concerns. How could I be fully automated and not put that sensitive information in plain text in my script. Immediately I went to Powershell.org and started searching for ideas. I found there were a couple of really good ideas for securing this kind of data using built in encryption ( Protect-CMSMessage) and an extension that Dave Wyatt created, ProtectedData ( &lt;a href="https://github.com/dlwyatt/ProtectedData)"&gt;https://github.com/dlwyatt/ProtectedData)&lt;/a&gt;. I spent numerous hours scraping through documentation from both sources. At the end of my quest through the wonderful world encryption, I ended up with the same problem. The decryption key and the data were still on the server and I had no way of monitoring its use. I started looking at third party key vaults. They would allow me to secure my data, log when it was accessed, and provide me the data easily when called through a REST API. The only thing was I was on a budget and very short timeline so I couldn’t write the PowerShell connector to the API. What a bust!&lt;br&gt;
Alas! I found a Key Vault that not only had a REST API but had native PowerShell commandlets. Thanks, Microsoft! I started asking, what can I put in the vault and call from my script? I quickly discovered everything!&lt;br&gt;
I created a key vault and started populating the data I wanted to secure. I chose to use Secrets to hold my username, password, SFTP server IP address, and Private Key. I connected to my Azure RM Account using my username / password. Using the built in commandlets, I would be able to pull the data I wanted. Obviously, I would need the server address:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Azure Key Vault: Keeping your Secrets Secure<br>
I was tasked with creating a PowerShell script that would connect to a SFTP server and place a file. I immediately jumped at the opportunity and started thinking about what all I would need to accomplish this task. I knew I needed the script to be as secure as possible, but also knew I needed the username, password, and a key file so I could connect securely to the SFTP site. This brought up a number of security concerns. How could I be fully automated and not put that sensitive information in plain text in my script. Immediately I went to Powershell.org and started searching for ideas. I found there were a couple of really good ideas for securing this kind of data using built in encryption ( Protect-CMSMessage) and an extension that Dave Wyatt created, ProtectedData (<a href="https://github.com/dlwyatt/ProtectedData)">https://github.com/dlwyatt/ProtectedData)</a>. I spent numerous hours scraping through documentation from both sources. At the end of my quest through the wonderful world encryption, I ended up with the same problem. The decryption key and the data were still on the server and I had no way of monitoring its use. I started looking at third party key vaults. They would allow me to secure my data, log when it was accessed, and provide me the data easily when called through a REST API. The only thing was I was on a budget and very short timeline so I couldn’t write the PowerShell connector to the API. What a bust!<br>
Alas! I found a Key Vault that not only had a REST API but had native PowerShell commandlets. Thanks, Microsoft! I started asking, what can I put in the vault and call from my script? I quickly discovered everything!<br>
I created a key vault and started populating the data I wanted to secure. I chose to use Secrets to hold my username, password, SFTP server IP address, and Private Key. I connected to my Azure RM Account using my username / password. Using the built in commandlets, I would be able to pull the data I wanted. Obviously, I would need the server address:</p><p><code>Get-AzureKeyVaultSecret -VaultName BlogVault -Name IPAddress</code>This will return the secure object:<br><img src="https://powershell.org/wp-content/uploads/2020/01/secure-object-300x108.png" alt=""><br>
As you can see it is a secure string, but using POSH-SSH, I can’t pass this object as the computer name for the connection. Slight modification was needed:</p><p><code>(Get-AzureKeyVaultSecret -VaultName BlogVault -Name IPAddress).SecretValueText</code>This command gives me the string value of the secret that I stored. SUCCESS!! You could see the smoke coming from my keyboard as I typed my script with this knowledge. I didn’t even see the brick wall coming at me until I smacked it hard with my face. I connected to my Azure environment with my username and password! I am back at square one! Or so I thought. The Azure key vault has an API, which means it has to have a way for an application to connect. I found App Registrations in Azure. Create a new app, ignore the URI, add the application to the permissions for your key vault, copy the Application ID, Directory (Tenant) ID, and the Thumbprint of the certificate you used when creating the app. Now use that information to connect securely to your Azure RM Account. Using splatting, you can create the login information and log in with ease. When connecting using an application you need to specify “-ServicePrincipal”.</p><p><code>$azureconnection = @{ ApplicationID = “a3k43802-ckde-2kk3-5k4k-k2olsk30shhe8”; TenantID = “28skckhh49-3983-28cj-dj3n-akcnfsio3983k”; CertificateThumbprint = “A42695B978976C0925948DBA94AF0AC2D4BE425D” } Connect-AzureRmAccount -ServicePrincipal @azureconnection</code>Back in business! After connecting to my Azure RM Account using the application, I started creating splats for the rest of my communications. I embedded the get commands inside my splats so I am not assigning any of the secret information to variables directly. I have now created an application that is fully automated. I wrapped it in a file watcher script recommended by kvprasson, so as soon as a file is put into the directory a SFTP session is created, the file is placed in the root of the SFTP server, and reusing part of a module I built I verify the hash is the same on both ends of the transfer.<br>
As is true in many situations, there are many ways to skin this cat. The method I used may not be the best for your situation, however, it is a good way to keep sensitive data away from the server on which you are working. I am excited to see how many other ways I am able to use Azure Key Vaults in future applications.</p>
]]></content:encoded></item><item><title>ICYMI: PowerShell Week of 03-January-2020</title><link>https://powershell.org/articles/2020-01-03-icymi-powershell-week-of-03-january-2020/</link><guid>https://powershell.org/articles/2020-01-03-icymi-powershell-week-of-03-january-2020/</guid><pubDate>Fri, 03 Jan 2020 16:10:53 +0000</pubDate><description>&lt;p&gt;In the first ICYMI of 2020 the topics include: working with PDFs, AD Users, Remote Computers and more&amp;hellip;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>In the first ICYMI of 2020 the topics include: working with PDFs, AD Users, Remote Computers and more&hellip;</p><p>Special thanks to Robin Dadswell, Prasoon Karunan V, Kiran Patnayakuni and Kevin Laux.</p><h6 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></h6><p><a href="https://adamtheautomator.com/powershell-get-ad-group-members/?utm_source=linkedinstatusupdates&amp;utm_medium=social&amp;utm_campaign=newblogpostnotifications"><em>Using PowerShell to Get (and Export) AD Group Members</em></a></p><p>by Adam Bertram on 27th December</p><p>A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using PowerShell get AD group members and groups saves a ton of time.</p><h6 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></h6><p><a href="https://evotec.xyz/merging-splitting-and-creating-pdf-files-with-powershell/"><em>Merging, splitting and creating PDF files with PowerShell</em></a></p><p>by Przemyslaw Klys on 29th December</p><p>What better way to end a good year than with the release of the new PowerShell module. If the title of today&rsquo;s blog post isn&rsquo;t giving it up yet, I wanted to share a PowerShell module called PSWritePDF that can help you create and modify (split/merge) PDF documents.</p><h6 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></h6><p><a href="https://4sysops.com/archives/invoke-command-dealing-with-offline-computers"><em>Invoke-Command: Dealing with offline computers</em></a></p><p>by Mike Kanakos on 30th December</p><p>When you need to run PowerShell commands against a large set of computers with the PowerShell cmdlet Invoke-Command, you often have to deal with offline computers. In this post, you will learn how to deal with unresponsive machines.</p><h6 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></h6><p><a href="http://woshub.com/powershell-view-change-bios-settings/"><em>Using PowerShell to View and Change BIOS Settings</em></a></p><p>posted on 30th December</p><p>Good article detailing how you can read and edit bios settings using WMI and PowerShell.</p><h6 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></h6><p><a href="http://www.rebeladmin.com/2019/12/step-step-guide-crete-azure-vm-using-managed-image-powershell-guide/"><em>Step-by-Step Guide: Crete Azure VM using Managed Image</em></a></p><p>by Dishan M. Francis on 30th December</p><p>If you have a custom image to deploy on prem you would use something like WDS. In this post Dishan explains how to deploy your managed images in Azure.</p><h6 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></h6><p><a href="https://www.reddit.com/r/PowerShell/comments/eia1a9/helpdeskremote_support_powershell_script_expedite/"><em>Reddit /r/PowerShell - Most Popular Weekly Post</em></a></p><p>Reddit user shares a github project. The project is a PowerShell based command line tool to help with routine tech support tasks.</p><h6 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></h6><p><a href="https://twitter.com/JeffHicks/status/1212370429060567042?s=20"><em>Tweet of the Week</em></a></p><p>Happy New Year <a href="https://github.com/jdhitsolutions/PSCalendar">https://github.com/jdhitsolutions/PSCalendar</a></p><h6 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></h6><p><a href="https://www.youtube.com/watch?v=3b_LQn18oHI&amp;feature=youtu.be"><em>Youtube: PowerShell Notebook Module</em></a></p><p>Doug Finke talks through automation of PowerShell Notebooks with PowerShell at the command line, exports to Excel and more.</p>]]></content:encoded></item></channel></rss>