&lt;?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Articles from June 2016 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2016/06/</link><description>Recent content in Articles from June 2016 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2016/06/index.xml" rel="self" type="application/rss+xml"/><item><title>To ping or not to ping..The PowerShell way</title><link>https://powershell.org/articles/2016-06-27-to-ping-or-not-to-ping-the-powershell-way/</link><guid>https://powershell.org/articles/2016-06-27-to-ping-or-not-to-ping-the-powershell-way/</guid><pubDate>Mon, 27 Jun 2016 20:29:29 +0000</pubDate><description>&lt;p&gt;As this is my first blog here, here’s a bit about me. I’m a current lead SCCM Admin in the UK, and have found this great enjoyment for PowerShell in the last 18 months. I’ve started my own blog, &lt;a href="http://www.get-configmgr-content.co.uk/"&gt;http://www.get-configmgr-content.co.uk/&lt;/a&gt;, to share my passion. The chance to blog on Powershell.org was too exciting not to do!&lt;br&gt;
The inspiration for this blog came from a forum post on Powershell.org that I helped contributed on. The question asked was, how to display the name of failed ping, i.e. $computer is offline.&lt;br&gt;
There were some great responses, the one I most liked which I slightly amended into a function was:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>As this is my first blog here, here’s a bit about me. I’m a current lead SCCM Admin in the UK, and have found this great enjoyment for PowerShell in the last 18 months. I’ve started my own blog,<a href="http://www.get-configmgr-content.co.uk/">http://www.get-configmgr-content.co.uk/</a>, to share my passion. The chance to blog on Powershell.org was too exciting not to do!<br>
The inspiration for this blog came from a forum post on Powershell.org that I helped contributed on. The question asked was, how to display the name of failed ping, i.e. $computer is offline.<br>
There were some great responses, the one I most liked which I slightly amended into a function was:</p><p><code>function test-ping { $args | % {[pscustomobject]@{online = test-connection $_ -Count 1 -quiet;computername = $_}} }</code>The simplicity and power is brilliant. (Credit to Dan Potter!)<br>
I expanded on this and came up with a way to use the results in several different ways. All this by the power of advanced functions.<br>
I have two advanced functions &lsquo;ValueFromPipeline&rsquo; and &lsquo;ValidateSet&rsquo; in this script:</p><ol><li><strong>&lsquo;ValueFromPipeline&rsquo;</strong> gives the capability to pass more than one object to our script. Perfect for passing one or many devices.<br>
Other than the message &ldquo;Online: PC1&rdquo;, I wanted to be able to use the ping status to pass to another cmdlet, collate all online or offline devices and display the results in a table.</li><li>Using<strong>&lsquo;ValidateSet&rsquo;</strong> I could define my options, &ldquo;Online&rdquo;,&ldquo;Offline&rdquo; and &ldquo;ObjectTable&rdquo;. But by not setting the parameter to mandatory, you don’t have to use the additional options.<br>
To continue using the ping response, I needed to hold them somewhere. I did this by creating an empty array in the Begin block and append each ping response to it.<br>
Regardless of what option I choose, if any, the below block of code will always run:</li></ol><p><code>$device| foreach { if (Test-Connection $_ -Count 1 -Quiet) { if(-not($GetObject)){write-host -ForegroundColor green "Online: $_ "} $Hash = $Hash += @{Online="$_"} }else{ if(-not($GetObject)){write-host -ForegroundColor Red "Offline: $_ "} $Hash = $Hash += @{Offline="$_"} } }</code>Devices in the variable, $device, will each be &lsquo;pinged&rsquo; then passed through a &lsquo;if&rsquo; statement depending on offline or online status and get added into the $hash array variable.<br><strong>DISCLAIMER:</strong> I should apologies to Don here for killing the puppies with write-host. I wanted to just push out some colored output to the host only!<br>
Before I go any further, let me briefly explain how I am &lsquo;pinging&rsquo; the devices. I am using the cmdlet &lsquo;Test-Connection&rsquo;. The synopsis on &lsquo;get-help&rsquo; for test-connection states, &lsquo;Sends ICMP echo request packets (&ldquo;pings&rdquo;) to one or more computers.&rsquo; A nice feature of this cmdlet is the &lsquo;-quiet&rsquo; syntax. This is cool as it gives a Boolean result (True or False) of the &lsquo;ping&rsquo; status. By adding a &lsquo;-count&rsquo; as well I can limit the number of times I request a connection check. Now I can pass as many devices through the pipeline to my function and get an online or offline message pretty quickly.<br>
The second half of the script only runs if you add the &lsquo;$getObject&rsquo; option from the function. The use of the &lsquo;validateSet&rsquo; allows me to make sure the three options I defined are used only.<br>
The data collected in the $hash array variable is passed through a foreach statement and creates customobjects. The final part is use of a &lsquo;Switch&rsquo;. Depending on what was chosen in the $getObject parameter is the output at the end of the script.<br>
The advantage to this switch is I can pass all the online PC&rsquo;s to something else via the pipeline. For example, an AD group or a deployment collection:</p><p><code>'PC1','PC2' | Get-PingStatus -GetObject Online | # pass to another cmdlet</code>Capture the &lsquo;online&rsquo; PC&rsquo;s to a variable and use:</p><p><code>$Online = 'PC1','PC2' | Get-PingStatus -GetObject Online</code>Or if you need to report back a list of PC&rsquo;s which are either on or offline in an object group:</p><p>`&lsquo;PC1&rsquo;,&lsquo;PC2&rsquo;, &lsquo;PC3&rsquo;,&lsquo;PC4 | Get-PingStatus -GetObject objectTable
DeviceName Online offline</p><hr><p>pc4 Online
pc1 Offline
pc2 Offline
pc3 Offline
`Again this script has great flexibility in how you pass the device objects.<br>
Say you have a list of PC&rsquo;s in a txt for CSV file, you can use Get-content and pipe it to Get-PingStatus:</p><p><code>get-content pcs.csv | Get-PingStatus</code>NOTE:<br>
The use of the $Global: variable allowed me to use $Global:Objects once the script has complete. Just something I thought could be useful. The $Script: variable would have worked fine should I not want to use the variable outside the script.<br>
I hope you&rsquo;ve enjoyed my blog and I welcome any comments. I&rsquo;ve posted the script on GitHub should you wish to download.<br><a href="https://github.com/Gbeer7/GetPingStatus.git">https://github.com/Gbeer7/GetPingStatus.git</a><br>
The full script:</p><p><code>Function Get-PingStatus { param( [Parameter(ValueFromPipeline=$true)] [string]$device, [validateSet("Online","Offline","ObjectTable")] [String]$getObject ) begin{ $hash = @() } process{ $device| foreach { if (Test-Connection $_ -Count 1 -Quiet) { if(-not($GetObject)){write-host -ForegroundColor green "Online: $_ "} $Hash = $Hash += @{Online="$_"} }else{ if(-not($GetObject)){write-host -ForegroundColor Red "Offline: $_ "} $Hash = $Hash += @{Offline="$_"} } } } end { if($GetObject) { $Global:Objects = $Hash | foreach { [PSCustomObject]@{ DeviceName = $_.Values| foreach { "$_" } Online = $_.Keys| where {$_ -eq "Online"} offline = $_.Keys| where {$_ -eq "Offline"} } } Switch -Exact ($GetObject) { 'Online' { $Global:Objects| where 'online'| select -ExpandProperty DeviceName } 'Offline' { $Global:Objects| where 'offline'| select -ExpandProperty DeviceName } 'ObjectTable' { return $Global:Objects } } } } }</code></p>
]]></content:encoded></item><item><title>Here's What You've Missed at PowerShell.org (and what's coming)</title><link>https://powershell.org/articles/2016-06-24-heres-what-youve-missed-at-powershell-org-and-whats-coming/</link><guid>https://powershell.org/articles/2016-06-24-heres-what-youve-missed-at-powershell-org-and-whats-coming/</guid><pubDate>Fri, 24 Jun 2016 17:19:59 +0000</pubDate><description>&lt;p&gt;We&amp;rsquo;ve been making a ton of improvements at PowerShell.org&amp;hellip; if you haven&amp;rsquo;t visited in a while, it might be worth a stop by.&lt;br&gt;
**First, **if you&amp;rsquo;re hitting any of the links below and getting a 404, the most common culprit seems to be an over-zealous corporate proxy cache. Try clearing it, or doing a Shift+Reload in your browser. Confirm by visiting from a non-proxied network, like at home.&lt;br&gt;
Our &lt;a href="https://powershell.org/learning/"&gt;eBooks&lt;/a&gt; page has a bunch of new content, and our books are now available in PDF, MOBI, and EPUB from two providers (LeanPub and GitBook). You can also read books online in HTML.&lt;br&gt;
Site members now have an extensive profile that you can complete, and doing so is one step on our short &lt;a href="https://powershell.org/mission/welcome-aboard/"&gt;Welcome Aboard! mission&lt;/a&gt; that will earn you a new &amp;ldquo;Welcome!&amp;rdquo; badge on the site. It&amp;rsquo;s one of many new &lt;a href="https://powershell.org/achievements/"&gt;achievements you can earn&lt;/a&gt; for participating in the community in a variety of ways.&lt;br&gt;
And have you seen our new &lt;a href="https://powershell.org/learning/"&gt;videos&lt;/a&gt;? In addition to tons of YouTube videos that include workshops, tutorials, and Summit recordings, we also have started new short-subject, structured learning series - entire courses that even award a certificate of completion when you&amp;rsquo;re done!&lt;br&gt;
But there&amp;rsquo;s much more we can do to help you connect with community, so we&amp;rsquo;re taking a quick survey. Here&amp;rsquo;s some of what we can enable:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>We&rsquo;ve been making a ton of improvements at PowerShell.org&hellip; if you haven&rsquo;t visited in a while, it might be worth a stop by.<br>
**First, **if you&rsquo;re hitting any of the links below and getting a 404, the most common culprit seems to be an over-zealous corporate proxy cache. Try clearing it, or doing a Shift+Reload in your browser. Confirm by visiting from a non-proxied network, like at home.<br>
Our<a href="/learning/">eBooks</a> page has a bunch of new content, and our books are now available in PDF, MOBI, and EPUB from two providers (LeanPub and GitBook). You can also read books online in HTML.<br>
Site members now have an extensive profile that you can complete, and doing so is one step on our short<a href="https://powershell.org/mission/welcome-aboard/">Welcome Aboard! mission</a> that will earn you a new &ldquo;Welcome!&rdquo; badge on the site. It&rsquo;s one of many new<a href="https://powershell.org/achievements/">achievements you can earn</a> for participating in the community in a variety of ways.<br>
And have you seen our new<a href="/learning/">videos</a>? In addition to tons of YouTube videos that include workshops, tutorials, and Summit recordings, we also have started new short-subject, structured learning series - entire courses that even award a certificate of completion when you&rsquo;re done!<br>
But there&rsquo;s much more we can do to help you connect with community, so we&rsquo;re taking a quick survey. Here&rsquo;s some of what we can enable:</p><ul><li>**Friend Connections. **Kinda like Facebook, enabling you to track on-site activity of the people you &ldquo;follow.&rdquo;</li><li>**Private Messages. **Just what it says - everyone would have a mailbox inside PowerShell.org.</li><li>**Activity Streams. **Similar to a Twitter or Facebook feed, a way of seeing site activity (with its own RSS). Threaded comments, @mentions, and email notifications, too.</li><li>**User Groups. **The ability to create in-site groups with their own discussion forum, activity stream, and shared content.</li><li>**REST API. **A way of communicating with WordPress via REST calls, to retrieve or check content.</li></ul><p><a href="http://674004.polldaddy.com/s/powershell-org-features">Visit the survey to let us know</a> which ones you&rsquo;d want, or don&rsquo;t care about.<br>
And drop a comment below if there&rsquo;s something else you&rsquo;d like to see or share!</p>
]]></content:encoded></item><item><title>High-Level: Designing Your PowerShell Command Set</title><link>https://powershell.org/articles/2016-06-20-high-level-designing-your-powershell-command-set/</link><guid>https://powershell.org/articles/2016-06-20-high-level-designing-your-powershell-command-set/</guid><pubDate>Mon, 20 Jun 2016 10:27:41 +0000</pubDate><description>&lt;p&gt;So you&amp;rsquo;ve decided to write a bunch of commands to help automate the administration of ____. Awesome! Let&amp;rsquo;s try and make sure you get off on the right path, with this high-level overview of command design.&lt;/p&gt;
&lt;h2 id="start-with-an-inventory" class="ps-heading"&gt;Start with an inventory&lt;a class="ps-heading-anchor" href="#start-with-an-inventory" 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;You&amp;rsquo;ll need to start by deciding _what commands to write, _and an inventory is often the best way to begin. Start by inventorying your nouns. For example, suppose you&amp;rsquo;re writing a command set for some internal order-management system. You probably have nouns like Customer, Employee, Order, OrderItem, CustomerAddress, and so on. Write &amp;rsquo;em all down in an Excel spreadsheet, one noun per row.&lt;br&gt;
Then inventory your verbs. For each noun, what can you do with it? For example, you can probably create orders, so a New-Order command will be needed. Make a &amp;ldquo;New&amp;rdquo; column in your spreadsheet, and put an &amp;ldquo;X&amp;rdquo; in the row next to the Order noun. However, you probably can&amp;rsquo;t &lt;em&gt;remove&lt;/em&gt; an order from the system, so although your spreadsheet might have a &amp;ldquo;Remove&amp;rdquo; column to cover things like Remove-Employee, that column won&amp;rsquo;t get an &amp;ldquo;X&amp;rdquo; in the Order row. Orders might be voidable, though, so what&amp;rsquo;s a good verb for that? &lt;a href="https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx"&gt;https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx&lt;/a&gt; has the official verb list, but there&amp;rsquo;s no &amp;ldquo;Void&amp;rdquo; or &amp;ldquo;Cancel&amp;rdquo; that seems appropriate. Don&amp;rsquo;t go making up new verbs!!! Instead, it might be that Set-Order could be the answer, enabling approved changes to orders, including cancelling them (but retaining the record).&lt;br&gt;
Finally, pick a prefix for your nouns. If your order system is named &amp;ldquo;Order Awesomeness,&amp;rdquo; then maybe OAwe is a good noun prefix, as in Set-OAweOrder. The prefix will help keep your command names from bumping up against other people&amp;rsquo;s, so making sure that noun prefix is pretty unique&amp;hellip; is pretty important.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>So you&rsquo;ve decided to write a bunch of commands to help automate the administration of ____. Awesome! Let&rsquo;s try and make sure you get off on the right path, with this high-level overview of command design.</p><h2 id="start-with-an-inventory" class="ps-heading">Start with an inventory<a class="ps-heading-anchor" href="#start-with-an-inventory" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>You&rsquo;ll need to start by deciding _what commands to write, _and an inventory is often the best way to begin. Start by inventorying your nouns. For example, suppose you&rsquo;re writing a command set for some internal order-management system. You probably have nouns like Customer, Employee, Order, OrderItem, CustomerAddress, and so on. Write &rsquo;em all down in an Excel spreadsheet, one noun per row.<br>
Then inventory your verbs. For each noun, what can you do with it? For example, you can probably create orders, so a New-Order command will be needed. Make a &ldquo;New&rdquo; column in your spreadsheet, and put an &ldquo;X&rdquo; in the row next to the Order noun. However, you probably can&rsquo;t <em>remove</em> an order from the system, so although your spreadsheet might have a &ldquo;Remove&rdquo; column to cover things like Remove-Employee, that column won&rsquo;t get an &ldquo;X&rdquo; in the Order row. Orders might be voidable, though, so what&rsquo;s a good verb for that? <a href="https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/ms714428(v=vs.85).aspx</a> has the official verb list, but there&rsquo;s no &ldquo;Void&rdquo; or &ldquo;Cancel&rdquo; that seems appropriate. Don&rsquo;t go making up new verbs!!! Instead, it might be that Set-Order could be the answer, enabling approved changes to orders, including cancelling them (but retaining the record).<br>
Finally, pick a prefix for your nouns. If your order system is named &ldquo;Order Awesomeness,&rdquo; then maybe OAwe is a good noun prefix, as in Set-OAweOrder. The prefix will help keep your command names from bumping up against other people&rsquo;s, so making sure that noun prefix is pretty unique&hellip; is pretty important.</p><h2 id="design-individual-commands" class="ps-heading">Design individual commands<a class="ps-heading-anchor" href="#design-individual-commands" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Now it&rsquo;s time to start designing individual commands. This is usually a kind of iterative process, meaning you&rsquo;ll go back and change your mind, expand, and so on a few times before you&rsquo;re done.<br>
Start by <em>writing examples of how each command will be used</em> to accomplish whatever tasks you&rsquo;ll be accomplishing. Save these examples, too - they should become examples in your commands&rsquo; help files. Write as many examples as possible, covering as many situations and needs as you can think of. Enlist users to help.<br>
As you write the examples, try to pay attention to the following:</p><ul><li>Parameter names should be consistent across the commands. If order objects have an ID, and you need to be able to specify it, then it should be something like -OrderId every time. Don&rsquo;t use -OrderId on some commands and -Id on thers. Also pay attention to what the underlying software objects&rsquo; property names are. For example, if customer names are exposed through a CustNameFirst and CustNameLast property, consider using those as corresponding parameter names, or at least as parameter name aliases.</li><li>Start thinking about which parameters are going to be mandatory.</li><li>Give some thought to different ways that commands might be used, and start denoting those as different parameter sets.</li></ul><p>This kind of example-based specification will help you think through how you want the commands to work, and it may highlight cases where you need more commands, where commands may need to be combined, and so on.</p><h2 id="sketch-out-your-help-files" class="ps-heading">Sketch out your help files<a class="ps-heading-anchor" href="#sketch-out-your-help-files" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Believe it or not, it&rsquo;s not a bad idea to start drafting out your help files at this point. Define parameter sets, parameters, and examples. Briefly describe what each parameter is for - you can always make the language nicer and more formal later, so just a brief draft should work at this point. This kind of forces you to think through how your commands will work, and how other people will end up approaching them. It also gives you a good start on writing documentation! &ldquo;Documentation as specification&rdquo; helps a lot of people write specs that can end up being repurposed as docs, killing two birds with one stone.</p><h2 id="define-expected-results" class="ps-heading">Define expected results<a class="ps-heading-anchor" href="#define-expected-results" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Go back to your examples, and provide some examples of the results you&rsquo;d expect to see if you actually ran those commands as shown in your examples. This helps you to start defining the tests that you&rsquo;ll run against your code. &ldquo;For this command, we should get this output&rdquo; is exactly what testing is all about. &ldquo;This command should generate this error, this command should do this,&rdquo; and so on.</p><h2 id="start-coding" class="ps-heading">Start coding<a class="ps-heading-anchor" href="#start-coding" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>With some good design work out of the way, you can start coding. Not just your commands, mind you, but also the Pester tests you&rsquo;ll use to validate those commands. Code &rsquo;em at the same time, if you like, and use those tests in unit testing as you work.</p>
]]></content:encoded></item><item><title>Help Me Test SSL on PowerShell.org</title><link>https://powershell.org/articles/2016-06-13-help-me-test-ssl-on-powershell-org/</link><guid>https://powershell.org/articles/2016-06-13-help-me-test-ssl-on-powershell-org/</guid><pubDate>Mon, 13 Jun 2016 14:02:17 +0000</pubDate><description>&lt;p&gt;I&amp;rsquo;d appreciate your help in testing HTTPS/SSL here on PowerShell.org. Right now, it&amp;rsquo;s &amp;ldquo;voluntary,&amp;rdquo; meaning you have to explicitly ask for &lt;a href="https://powershell.org"&gt;https://powershell.org&lt;/a&gt;. If you have any problems, please note them in a comment on this article.&lt;br&gt;
Some notes and known problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most pages will not show the &amp;ldquo;lock&amp;rdquo; address bar icon in your browser, because we&amp;rsquo;re delivering mixed content. For example, the site logo is being hardcoded as http:// by some Javascript in our theme, which I need to sort out.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Your&lt;/em&gt; connection will be to CloudFlare, which is who issued the certificate you&amp;rsquo;ll see. We&amp;rsquo;ve also SSL&amp;rsquo;d the traffic between them and our server using a DigiCert SSL certificate. We&amp;rsquo;re also going to enable client certificate authentication, so our server will only deliver content to CloudFlare, which then delivers it to you. That&amp;rsquo;s ahead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I &lt;em&gt;think&lt;/em&gt; we can solve the mixed-content problem by forcing HTTPS, which is easy, but I want to make sure it&amp;rsquo;s otherwise working before taking that step. We already have a WordPress plugin in place that&amp;rsquo;s rewriting http:// or https:// with just // in URLs, but there&amp;rsquo;re a couple of places where that plugin isn&amp;rsquo;t able to help, and that&amp;rsquo;s why we&amp;rsquo;re delivering mixed content still.&lt;br&gt;
I&amp;rsquo;ll point out that this is &lt;em&gt;mainly&lt;/em&gt; a bonus-points project; because almost everyone logs into the site using an external account, we don&amp;rsquo;t store many passwords (and thus don&amp;rsquo;t transmit them in the clear or otherwise). We don&amp;rsquo;t store or transmit any other personally identifiable information. Still, SSL has some other benefits, and it shouldn&amp;rsquo;t &lt;em&gt;hurt&lt;/em&gt; to have it on, so we&amp;rsquo;re giving it a shot.&lt;br&gt;
Thanks!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I&rsquo;d appreciate your help in testing HTTPS/SSL here on PowerShell.org. Right now, it&rsquo;s &ldquo;voluntary,&rdquo; meaning you have to explicitly ask for<a href="https://powershell.org">https://powershell.org</a>. If you have any problems, please note them in a comment on this article.<br>
Some notes and known problems:</p><ul><li>Most pages will not show the &ldquo;lock&rdquo; address bar icon in your browser, because we&rsquo;re delivering mixed content. For example, the site logo is being hardcoded as http:// by some Javascript in our theme, which I need to sort out.</li><li><em>Your</em> connection will be to CloudFlare, which is who issued the certificate you&rsquo;ll see. We&rsquo;ve also SSL&rsquo;d the traffic between them and our server using a DigiCert SSL certificate. We&rsquo;re also going to enable client certificate authentication, so our server will only deliver content to CloudFlare, which then delivers it to you. That&rsquo;s ahead.</li></ul><p>I<em>think</em> we can solve the mixed-content problem by forcing HTTPS, which is easy, but I want to make sure it&rsquo;s otherwise working before taking that step. We already have a WordPress plugin in place that&rsquo;s rewriting http:// or https:// with just // in URLs, but there&rsquo;re a couple of places where that plugin isn&rsquo;t able to help, and that&rsquo;s why we&rsquo;re delivering mixed content still.<br>
I&rsquo;ll point out that this is <em>mainly</em> a bonus-points project; because almost everyone logs into the site using an external account, we don&rsquo;t store many passwords (and thus don&rsquo;t transmit them in the clear or otherwise). We don&rsquo;t store or transmit any other personally identifiable information. Still, SSL has some other benefits, and it shouldn&rsquo;t <em>hurt</em> to have it on, so we&rsquo;re giving it a shot.<br>
Thanks!</p><h2 id="updates-15-june-2016" class="ps-heading">UPDATES 15 June 2016<a class="ps-heading-anchor" href="#updates-15-june-2016" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><ul><li>The Lock icon in browser address bars should be working; we&rsquo;ve fixed the mixed-content issues I&rsquo;ve found.</li><li>We&rsquo;re forcing HTTPS.</li><li>We use CloudFlare; you&rsquo;re getting SSL from you to them, and they&rsquo;re getting (forced) SSL from them to us.</li><li>We&rsquo;re getting an &ldquo;A&rdquo; from SSLLabs and SecurityHeaders.io - thanks for that suggestion, Paal. CloudFlare doesn&rsquo;t let us implement <em>every</em> security header yet, but we&rsquo;ve got most of the recommended ones.</li></ul>
]]></content:encoded></item><item><title>Complete Guide to PowerShell Punctuation</title><link>https://powershell.org/articles/2016-06-11-complete-guide-to-powershell-punctuation/</link><guid>https://powershell.org/articles/2016-06-11-complete-guide-to-powershell-punctuation/</guid><pubDate>Sat, 11 Jun 2016 22:57:55 +0000</pubDate><description>&lt;p&gt;Quick as you can, can you explain what each of these different parentheses-, brace-, and bracket-laden expressions does?&lt;/p&gt;
&lt;p&gt;&lt;code&gt;${save-items} ${C:tmp.txt} $($x=1;$y=2;$x;$y) (1,2,3 -join '*') (8 + 4)/2 $hashTable.ContainsKey($x) @(1) @{abc='hello'} {param($color=&amp;quot;red&amp;quot;); &amp;quot;color=$color&amp;quot;} $hash['blue'] [Regex]::Escape($x) [int]&amp;quot;5.2&amp;quot; &lt;/code&gt;When you&amp;rsquo;re reading someone else&amp;rsquo;s PowerShell code, you will come across many of these constructs, and more. And you know how challenging it can be to search for punctuation on the web (symbolhound.com not withstanding) !&lt;br&gt;
That is why I put together a reference chart containing all of PowerShell&amp;rsquo;s symbology on one page. making it much easier when you need to look up a PowerShell symbol as you read code&amp;ndash;or to browse for the right construct when you are writing code.&lt;br&gt;
&lt;img src="https://powershell.org/wp-content/uploads/2016/06/punctuation_thumbnail-300x152.png" alt="PowerShell Punctuation wall chart"&gt;&lt;br&gt;
Download the &lt;strong&gt;Complete Guide to PowerShell Punctuation&lt;/strong&gt; wallchart from &lt;a href="https://www.simple-talk.com/sysadmin/powershell/the-complete-guide-to-powershell-punctuation/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Quick as you can, can you explain what each of these different parentheses-, brace-, and bracket-laden expressions does?</p><p><code>${save-items} ${C:tmp.txt} $($x=1;$y=2;$x;$y) (1,2,3 -join '*') (8 + 4)/2 $hashTable.ContainsKey($x) @(1) @{abc='hello'} {param($color="red"); "color=$color"} $hash['blue'] [Regex]::Escape($x) [int]"5.2"</code>When you&rsquo;re reading someone else&rsquo;s PowerShell code, you will come across many of these constructs, and more. And you know how challenging it can be to search for punctuation on the web (symbolhound.com not withstanding) !<br>
That is why I put together a reference chart containing all of PowerShell&rsquo;s symbology on one page. making it much easier when you need to look up a PowerShell symbol as you read code&ndash;or to browse for the right construct when you are writing code.<br><img src="https://powershell.org/wp-content/uploads/2016/06/punctuation_thumbnail-300x152.png" alt="PowerShell Punctuation wall chart"><br>
Download the<strong>Complete Guide to PowerShell Punctuation</strong> wallchart from<a href="https://www.simple-talk.com/sysadmin/powershell/the-complete-guide-to-powershell-punctuation/">here</a>.</p>
]]></content:encoded></item><item><title>MSPSUG June 14th Virtual Meeting: Pester the Tester PowerShell Bugs Beware!</title><link>https://powershell.org/articles/2016-06-10-mspsug-june-14th-virtual-meeting-pester-the-tester-powershell-bugs-beware/</link><guid>https://powershell.org/articles/2016-06-10-mspsug-june-14th-virtual-meeting-pester-the-tester-powershell-bugs-beware/</guid><pubDate>Fri, 10 Jun 2016 15:47:52 +0000</pubDate><description>&lt;p&gt;Join the Mississippi PowerShell User Group virtually on Tuesday, June 14th 2016 at 8:30pm Central Time when Microsoft MVP &lt;a href="https://twitter.com/arcanecode"&gt;Robert Cain&lt;/a&gt; will be presenting “&lt;strong&gt;&lt;em&gt;Pester the Tester: PowerShell Bugs Beware!&lt;/em&gt;&lt;/strong&gt;”.&lt;br&gt;
So you’ve been developing PowerShell for a while, or perhaps you’re taking over maintenance of an existing set of scripts. It would be great to get extra confidence in your scripts through testing, but how? You’re in luck, there’s a new module in town, Pester!&lt;br&gt;
Pester is a friendly testing framework designed for testing your PowerShell scripts and modules. In this session you’ll be introduced to Pester. You’ll see how to use Pester to uncover bugs, as well as using it for test driven development. Make your own PowerShell more robust through the use of Pester. Kill those PowerShell bugs, dead!&lt;br&gt;
Visit the &lt;a href="http://mspsug.com/2016/05/31/mspsug-june-2016-virtual-meeting-pester-the-tester-powershell-bugs-beware/"&gt;Mississippi PowerShell User Group&lt;/a&gt; website to learn more about Robert and to find out more details about this month’s meeting.&lt;br&gt;
The Mississippi PowerShell User Group Meetings are held online (via Skype for Business) on the second Tuesday of each month at 8:30pm Central Time and are free to attend. The system requirements to attend these online meetings can be found on the MSPSUG website under the “&lt;a href="http://mspsug.com/attendee-info/"&gt;Attendee Info&lt;/a&gt;” section.&lt;br&gt;
Register via &lt;a href="http://mspsug.eventbrite.com/"&gt;EventBrite&lt;/a&gt; to receive the URL for this meeting.&lt;br&gt;
Note: It is not necessary to live in Mississippi or join our user group to attend our meetings or present a session for our user group.&lt;br&gt;
µ&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Join the Mississippi PowerShell User Group virtually on Tuesday, June 14th 2016 at 8:30pm Central Time when Microsoft MVP<a href="https://twitter.com/arcanecode">Robert Cain</a> will be presenting “<strong><em>Pester the Tester: PowerShell Bugs Beware!</em></strong>”.<br>
So you’ve been developing PowerShell for a while, or perhaps you’re taking over maintenance of an existing set of scripts. It would be great to get extra confidence in your scripts through testing, but how? You’re in luck, there’s a new module in town, Pester!<br>
Pester is a friendly testing framework designed for testing your PowerShell scripts and modules. In this session you’ll be introduced to Pester. You’ll see how to use Pester to uncover bugs, as well as using it for test driven development. Make your own PowerShell more robust through the use of Pester. Kill those PowerShell bugs, dead!<br>
Visit the<a href="http://mspsug.com/2016/05/31/mspsug-june-2016-virtual-meeting-pester-the-tester-powershell-bugs-beware/">Mississippi PowerShell User Group</a> website to learn more about Robert and to find out more details about this month’s meeting.<br>
The Mississippi PowerShell User Group Meetings are held online (via Skype for Business) on the second Tuesday of each month at 8:30pm Central Time and are free to attend. The system requirements to attend these online meetings can be found on the MSPSUG website under the “<a href="http://mspsug.com/attendee-info/">Attendee Info</a>” section.<br>
Register via<a href="http://mspsug.eventbrite.com/">EventBrite</a> to receive the URL for this meeting.<br>
Note: It is not necessary to live in Mississippi or join our user group to attend our meetings or present a session for our user group.<br>
µ</p>
]]></content:encoded></item><item><title>5 Tips for Writing DSC Resources in PowerShell 5</title><link>https://powershell.org/articles/2016-06-09-5-tips-for-writing-dsc-resources-in-powershell-5/</link><guid>https://powershell.org/articles/2016-06-09-5-tips-for-writing-dsc-resources-in-powershell-5/</guid><pubDate>Thu, 09 Jun 2016 18:44:00 +0000</pubDate><description>&lt;p&gt;PowerShell 5 brought class based DSC Resources, which majorly simplifies the process of writing custom DSC resources.&lt;br&gt;
During my time working on some custom resources, I developed some tips a long the way which should save you some time and pain during your DSC journey.&lt;br&gt;
The tips cover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Structuring your class based DSC Resources&lt;/li&gt;
&lt;li&gt;Making it easier to get IntelliSense based on your DSC resources without constantly copying them into the module path&lt;/li&gt;
&lt;li&gt;Using PowerShell ISE IntelliSense when writing DSC configuration&lt;/li&gt;
&lt;li&gt;Troubleshooting resources which aren&amp;rsquo;t being exposed correctly from your DSC Module&lt;/li&gt;
&lt;li&gt;Testing classed based resources with Pester&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Head over to &lt;a href="https://hodgkins.io/five-tips-for-writing-dsc-resources-in-powershell-version-5"&gt;https://hodgkins.io/five-tips-for-writing-dsc-resources-in-powershell-version-5&lt;/a&gt; to take a look at the tips.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>PowerShell 5 brought class based DSC Resources, which majorly simplifies the process of writing custom DSC resources.<br>
During my time working on some custom resources, I developed some tips a long the way which should save you some time and pain during your DSC journey.<br>
The tips cover:</p><ul><li>Structuring your class based DSC Resources</li><li>Making it easier to get IntelliSense based on your DSC resources without constantly copying them into the module path</li><li>Using PowerShell ISE IntelliSense when writing DSC configuration</li><li>Troubleshooting resources which aren&rsquo;t being exposed correctly from your DSC Module</li><li>Testing classed based resources with Pester</li></ul><p>Head over to <a href="https://hodgkins.io/five-tips-for-writing-dsc-resources-in-powershell-version-5">https://hodgkins.io/five-tips-for-writing-dsc-resources-in-powershell-version-5</a> to take a look at the tips.</p>
]]></content:encoded></item><item><title>My DevOps (DSC) Camp Detailed Agenda</title><link>https://powershell.org/articles/2016-06-06-my-devops-dsc-camp-detailed-agenda/</link><guid>https://powershell.org/articles/2016-06-06-my-devops-dsc-camp-detailed-agenda/</guid><pubDate>Mon, 06 Jun 2016 19:59:59 +0000</pubDate><description>&lt;p&gt;If you&amp;rsquo;re deep into DSC and delving into DevOps, then my summer &amp;ldquo;Camp&amp;rdquo; event is probably meant for you - and now there&amp;rsquo;s a detailed agenda, overall agenda, and full event brochure. This is a really limited event - under 20, including product team participants, and we&amp;rsquo;re down to just a few seats left.&lt;/p&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href="https://donjones.com/2016/06/06/devops-and-dsc-camp-detailed-agenda/"&gt;DevOps and DSC Camp Detailed Agenda&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><content:encoded>&lt;![CDATA[<p>If you&rsquo;re deep into DSC and delving into DevOps, then my summer &ldquo;Camp&rdquo; event is probably meant for you - and now there&rsquo;s a detailed agenda, overall agenda, and full event brochure. This is a really limited event - under 20, including product team participants, and we&rsquo;re down to just a few seats left.</p><blockquote/><blockquote><p><a href="https://donjones.com/2016/06/06/devops-and-dsc-camp-detailed-agenda/">DevOps and DSC Camp Detailed Agenda</a></p></blockquote>]]></content:encoded></item><item><title>Request for Topics</title><link>https://powershell.org/articles/2016-06-06-request-for-topics/</link><guid>https://powershell.org/articles/2016-06-06-request-for-topics/</guid><pubDate>Mon, 06 Jun 2016 09:33:30 +0000</pubDate><description>&lt;p&gt;Putting on an event like the PowerShell and DevOps Global Summit involves a lot of planning. We started the planning process for the 2017 Summit BEFORE the 2016 Summit started!&lt;/p&gt;
&lt;p&gt;We have to work so far in advance that we’re taking guesses at the topics that will be of high interest next April – remember that we fix the agenda 6 months before the actual Summit.&lt;/p&gt;
&lt;p&gt;Part of the process of creating the agenda is that we publish a ‘Call for Proposals’ where we ask potential speakers to submit session proposals. We then use those proposals as the basis of the agenda. Session proposals can be taken as they are or we may suggest changes to the speaker to ensure a more cohesive agenda.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Putting on an event like the PowerShell and DevOps Global Summit involves a lot of planning. We started the planning process for the 2017 Summit BEFORE the 2016 Summit started!</p><p>We have to work so far in advance that we’re taking guesses at the topics that will be of high interest next April – remember that we fix the agenda 6 months before the actual Summit.</p><p>Part of the process of creating the agenda is that we publish a ‘Call for Proposals’ where we ask potential speakers to submit session proposals. We then use those proposals as the basis of the agenda. Session proposals can be taken as they are or we may suggest changes to the speaker to ensure a more cohesive agenda.</p><p>Our aim in all of this is to provide relevant, high-level sessions that will keep the Summit as a ‘must attend’ event for the PowerShell community.</p><p>This year we’re asking for your help.</p><p>We’d like you to suggest topic areas that you’d like to see at the Summit. This is NOT a call for specific session proposals (that will come in August) or a request for particular speakers to talk about a topic but a request for topics. For instance:</p><ul><li/></ul><p>We had some feedback from attendees at the 2016 Summit that a deep session on remoting would be of interest.</p><ul><li/></ul><p>The last few Summits we’ve had a lot of material on DSC – is it too much or do you want more in specific areas?</p><ul><li/></ul><p>Security is a highly important topic – do you want more? Is there a particular security aspect that should be covered?</p><ul><li/></ul><p>PowerShell is a very broad topic – are there areas such as Workflows, Jobs, Events, Remoting, CIM, Package Management where you’d like more?</p><ul><li/></ul><p>DevOps is another broad area -do you want sessions on dealing with specific technologies such as Chef, Puppet, Octopus, Source Control and anything else that enables your DevOps processes?</p><p>This list isn’t meant to be exhaustive – just a number of suggestions to start you thinking about the subject areas you’d like to see at the Summit.</p><p>We’ll summarise the topic areas that are requested in the information supplied to potential speakers in the Call for Proposals document.</p><p>Please use the comment facility to reply. If you need to supply further information you can use the standard Summit email address of Summit at PowerShell dot org.</p><p>The PowerShell Summit has become a premier event in the calendar of the PowerShell community. This is your opportunity to help shape next year’s Summit into the event you want to see.</p><p>Thank you.</p>
]]></content:encoded></item></channel></rss>