&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 2016 on PowerShell.org - Welcome Automaters!</title><link>https://powershell.org/articles/2016/01/</link><description>Recent content in Articles from January 2016 on PowerShell.org - Welcome Automaters!</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://powershell.org/articles/2016/01/index.xml" rel="self" type="application/rss+xml"/><item><title>Using PowerShell to make Azure Automation Graphical Runbooks – Part 1</title><link>https://powershell.org/articles/2016-01-29-using-powershell-to-make-azure-automation-graphical-runbooks-part-1/</link><guid>https://powershell.org/articles/2016-01-29-using-powershell-to-make-azure-automation-graphical-runbooks-part-1/</guid><pubDate>Fri, 29 Jan 2016 15:52:51 +0000</pubDate><description>&lt;p&gt;Microsoft recently released another extension for Azure Automation developers, this time in the form of the Microsoft Azure Automation Graphical Authoring SDK.&lt;br&gt;
This SDK allows developers to make and edit graphic runbooks for using in Azure Automation. Although the examples given are in C#, it&amp;rsquo;s possible to apply the same methodologies to develop them in PowerShell with the accompanying SDK mentioned above.&lt;br&gt;
You can read the first article of this series on creating these Graphical Runbooks at &lt;a href="http://www.powershell.amsterdam/2016/01/29/using-powershell-to-make-azure-automation-graphical-runbooks-part-1/"&gt;powershell.amsterdam&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Microsoft recently released another extension for Azure Automation developers, this time in the form of the Microsoft Azure Automation Graphical Authoring SDK.<br>
This SDK allows developers to make and edit graphic runbooks for using in Azure Automation. Although the examples given are in C#, it&rsquo;s possible to apply the same methodologies to develop them in PowerShell with the accompanying SDK mentioned above.<br>
You can read the first article of this series on creating these Graphical Runbooks at<a href="http://www.powershell.amsterdam/2016/01/29/using-powershell-to-make-azure-automation-graphical-runbooks-part-1/">powershell.amsterdam</a></p>
]]></content:encoded></item><item><title>PowerShell + DevOps Global Summit 2016 Registration Status</title><link>https://powershell.org/articles/2016-01-28-powershell-devops-global-summit-2016-registration-status/</link><guid>https://powershell.org/articles/2016-01-28-powershell-devops-global-summit-2016-registration-status/</guid><pubDate>Thu, 28 Jan 2016 18:09:54 +0000</pubDate><description>&lt;p&gt;A quick status update on Summit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We&amp;rsquo;re currently past our 50% registration point. Right now, only 4-day registrations are available. Register at https://eventloom.com/event/home/PSNA16.&lt;/li&gt;
&lt;li&gt;In just a few days, on February 1st, we&amp;rsquo;ll open all remaining seats for both 3- and 4-day registrations (same registration URL).&lt;/li&gt;
&lt;li&gt;Registration ends during the first week of March. At that time, we&amp;rsquo;ll review the situation, and may be able to open additional seats. However, the price will go up a bit. Our absolute final date for registrations will be March 20th.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So you&amp;rsquo;ve got about 3 days before 3-day registration opens, and from there about a month to sign up. After that, if we have additional space or can make additional space, we&amp;rsquo;ll open more seats - but the price &lt;strong&gt;will&lt;/strong&gt; be higher.&lt;br&gt;
If you&amp;rsquo;re attending, don&amp;rsquo;t forget to head over to http://www.zazzle.com/collections/powershell_devops_global_summit_2016-119347973985746667 to pick up an official conference t-shirt, hat, coffee mug, or notebook to bring with you! We also have commemorative tiles available, and will offer a new one each year for you to collect.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>A quick status update on Summit:</p><ul><li>We&rsquo;re currently past our 50% registration point. Right now, only 4-day registrations are available. Register at https://eventloom.com/event/home/PSNA16.</li><li>In just a few days, on February 1st, we&rsquo;ll open all remaining seats for both 3- and 4-day registrations (same registration URL).</li><li>Registration ends during the first week of March. At that time, we&rsquo;ll review the situation, and may be able to open additional seats. However, the price will go up a bit. Our absolute final date for registrations will be March 20th.</li></ul><p>So you&rsquo;ve got about 3 days before 3-day registration opens, and from there about a month to sign up. After that, if we have additional space or can make additional space, we&rsquo;ll open more seats - but the price <strong>will</strong> be higher.<br>
If you&rsquo;re attending, don&rsquo;t forget to head over to http://www.zazzle.com/collections/powershell_devops_global_summit_2016-119347973985746667 to pick up an official conference t-shirt, hat, coffee mug, or notebook to bring with you! We also have commemorative tiles available, and will offer a new one each year for you to collect.</p>
]]></content:encoded></item><item><title>Using PowerShell to enable ChatOps on Windows</title><link>https://powershell.org/articles/2016-01-28-using-powershell-to-enable-chatops-on-windows/</link><guid>https://powershell.org/articles/2016-01-28-using-powershell-to-enable-chatops-on-windows/</guid><pubDate>Thu, 28 Jan 2016 14:31:19 +0000</pubDate><description>&lt;p&gt;ChatOps is a term used to describe bringing development or operations work that is already happening in the background into a common chat room. It involves having everyone in the team in a single chat room, then bringing tools into the room so everyone can automate, collaborate and see how automation is used to solve problems. In doing so, you are unifying the communication about what work gets done and have a history of it happening.&lt;br&gt;
ChatOps can be supplemented with the use of tools or scripts exposed using a chat bot. Users in the chat room can talk to the bot and have it take actions on their behalf, some examples of this may be:&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>ChatOps is a term used to describe bringing development or operations work that is already happening in the background into a common chat room. It involves having everyone in the team in a single chat room, then bringing tools into the room so everyone can automate, collaborate and see how automation is used to solve problems. In doing so, you are unifying the communication about what work gets done and have a history of it happening.<br>
ChatOps can be supplemented with the use of tools or scripts exposed using a chat bot. Users in the chat room can talk to the bot and have it take actions on their behalf, some examples of this may be:</p><ul><li>Checking the status of a Windows Service</li><li>Finding out who is on call via the PagerDuty API</li><li>Querying a server via WMI to see how much disk space is available</li></ul><p>Bots can also be a great way to expose functionality to low-privledged users such as help desk staff, without having to create web interfaces or forms.<br>
If you want more details on the concept of ChatOps, I recommend watching **<a href="https://www.youtube.com/watch?v=F8Vfoz7GeHw">ChatOps, a Beginners Guide</a> **presented by<a href="https://twitter.com/jasonhand">Jason Hand</a>.<br>
A popular toolset for ChatOps is<a href="https://slack.com/">Slack</a> as the chat client, and<a href="https://hubot.github.com/">Hubot</a> as the bot. In this post we will use Slack and Hubot together with a PowerShell module I’ve written called<a href="https://github.com/MattHodge/PoshHubot">PoshHubot</a>. The module will handle installation and basic administration of Hubot. From there, we will integrate Hubot with PowerShell so we can perform some ChatOps in the Microsoft ecosystem.<br>
Continue reading over at<a href="http://bit.ly/PSHubot">hodgkins.io</a></p>
]]></content:encoded></item><item><title>Create Windows Shortcuts or Favorites With PowerShell</title><link>https://powershell.org/articles/2016-01-22-create-windows-shortcuts-or-favorites-with-powershell/</link><guid>https://powershell.org/articles/2016-01-22-create-windows-shortcuts-or-favorites-with-powershell/</guid><pubDate>Fri, 22 Jan 2016 16:37:59 +0000</pubDate><description>&lt;p&gt;Creating windows shortcuts are usually done through the New Shortcut Wizard, MSI files, Group Policy Objects, or even a simple file copy. Shortcut files are .lnk files that Microsoft Windows uses for shortcuts to local files while .url is used for destinations such as web sites. As we all are aware, the .lnk filename extension is hidden in Windows Explorer even when &amp;ldquo;Hide extensions for known file types&amp;rdquo; is unchecked in File Type options. The reason for this is the NeverShowExt string value in HKEY_CLASSES_ROOT\lnkfile. Shortcuts are also displayed with a curled arrow overlay icon. The IsShortcut string value causes the arrow to be displayed.&lt;br&gt;
For a full run down on creating shortcuts and favorites with PowerShell head over to &lt;a href="http://powershellblogger.com/?p=301"&gt;PowerShellBlogger.com&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Creating windows shortcuts are usually done through the New Shortcut Wizard, MSI files, Group Policy Objects, or even a simple file copy. Shortcut files are .lnk files that Microsoft Windows uses for shortcuts to local files while .url is used for destinations such as web sites. As we all are aware, the .lnk filename extension is hidden in Windows Explorer even when &ldquo;Hide extensions for known file types&rdquo; is unchecked in File Type options. The reason for this is the NeverShowExt string value in HKEY_CLASSES_ROOT\lnkfile. Shortcuts are also displayed with a curled arrow overlay icon. The IsShortcut string value causes the arrow to be displayed.<br>
For a full run down on creating shortcuts and favorites with PowerShell head over to<a href="http://powershellblogger.com/?p=301">PowerShellBlogger.com</a>.</p>
]]></content:encoded></item><item><title>Using Local Functions in a Scriptblock with Existing Code</title><link>https://powershell.org/articles/2016-01-18-using-local-functions-remotely-in-an-existing-scriptblock/</link><guid>https://powershell.org/articles/2016-01-18-using-local-functions-remotely-in-an-existing-scriptblock/</guid><pubDate>Mon, 18 Jan 2016 15:14:03 +0000</pubDate><description>&lt;p&gt;When you are wanting to run code remotely, it&amp;rsquo;s common to do this via the use of &lt;strong&gt;Invoke-Command&lt;/strong&gt; (though other options exist, such as through &lt;strong&gt;Start-Job&lt;/strong&gt; for example). The biggest downfall to date i&amp;rsquo;ve found with remoting is the lack of an option to combine the use of your local functions within a &lt;em&gt;ScriptBlock&lt;/em&gt; that has other code in it. As an example, the following is not possible:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;function Add ($param1, $param2) { $param1 + $param2 } function Multiply($param1,$param2) { $param1 * $param2 } Invoke-Command -ComputerName $env:COMPUTERNAME -ScriptBlock { $addResult = Add $args[0] $args[1] $multiplyResult = Multiply $args[0] $args[1] Write-Output &amp;quot;The result of the addition was : $addResult&amp;quot; Write-Output &amp;quot;The result of the multiplication was : $multiplyResult&amp;quot; } -ArgumentList 3, 2 &lt;/code&gt;However, there is a way to achieve this type of operation, and make as many local functions as you want available to be used and combined with other code in your &lt;em&gt;ScriptBlock&lt;/em&gt;. You can find the full article at &lt;a href="http://www.powershell.amsterdam/2015/11/09/using-local-functions-on-remote-computers/"&gt;powershell.amsterdam&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>When you are wanting to run code remotely, it&rsquo;s common to do this via the use of<strong>Invoke-Command</strong> (though other options exist, such as through<strong>Start-Job</strong> for example). The biggest downfall to date i&rsquo;ve found with remoting is the lack of an option to combine the use of your local functions within a<em>ScriptBlock</em> that has other code in it. As an example, the following is not possible:</p><p><code>function Add ($param1, $param2) { $param1 + $param2 } function Multiply($param1,$param2) { $param1 * $param2 } Invoke-Command -ComputerName $env:COMPUTERNAME -ScriptBlock { $addResult = Add $args[0] $args[1] $multiplyResult = Multiply $args[0] $args[1] Write-Output "The result of the addition was : $addResult" Write-Output "The result of the multiplication was : $multiplyResult" } -ArgumentList 3, 2</code>However, there is a way to achieve this type of operation, and make as many local functions as you want available to be used and combined with other code in your<em>ScriptBlock</em>. You can find the full article at<a href="http://www.powershell.amsterdam/2015/11/09/using-local-functions-on-remote-computers/">powershell.amsterdam</a>.</p>
]]></content:encoded></item><item><title>Improve Delivery of PowerShell Tools or Version Controlled Files</title><link>https://powershell.org/articles/2016-01-14-improve-delivery-of-powershell-tools-or-version-controlled-files/</link><guid>https://powershell.org/articles/2016-01-14-improve-delivery-of-powershell-tools-or-version-controlled-files/</guid><pubDate>Thu, 14 Jan 2016 17:04:54 +0000</pubDate><description>&lt;p&gt;I am back this week with a quick how-to article on delivering, installing, or launching version controlled files. In the past I ran into problems when having administrators launch my PowerShell tools from a network share. The performance was slow when launching it across the WAN, and the file would often be locked when I tried to replace it with a newer version. I came up with a solution to the problem by using none other than PowerShell.&lt;br&gt;
The solution dips into all kinds of PowerShell techniques including local environment variables, getting text file contents, file version checking and even shortcut (.lnk) creation. If you are also a user of Sapien&amp;rsquo;s PowerShell Studio, then definitely give this one a read. Check out the solution over on &lt;a href="http://powershellblogger.com/?p=275"&gt;PowerShellBlogger.com&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>I am back this week with a quick how-to article on delivering, installing, or launching version controlled files. In the past I ran into problems when having administrators launch my PowerShell tools from a network share. The performance was slow when launching it across the WAN, and the file would often be locked when I tried to replace it with a newer version. I came up with a solution to the problem by using none other than PowerShell.<br>
The solution dips into all kinds of PowerShell techniques including local environment variables, getting text file contents, file version checking and even shortcut (.lnk) creation. If you are also a user of Sapien&rsquo;s PowerShell Studio, then definitely give this one a read. Check out the solution over on<a href="http://powershellblogger.com/?p=275">PowerShellBlogger.com</a>.</p>
]]></content:encoded></item><item><title>Atlanta PowerShell User's Group Meeting – January 19th 'Let's win the scripting games!'</title><link>https://powershell.org/articles/2016-01-11-atlpug-01-19-2016/</link><guid>https://powershell.org/articles/2016-01-11-atlpug-01-19-2016/</guid><pubDate>Mon, 11 Jan 2016 18:25:02 +0000</pubDate><description>&lt;p&gt;Kicking off in our new venue, we&amp;rsquo;ll be tackling this month&amp;rsquo;s PowerShell.org monthly scripting games challenge! Prizes are given to the group with the best answers over the year, so let&amp;rsquo;s try our best! Have an idea or want to cover a topic? Let us know my messaging Mark Schill or myself (Stephen Owen)&lt;br&gt;
&lt;a href="https://powershell.org/2016/01/02/january-2016-scripting-games-puzzle/"&gt;Here&amp;rsquo;s the link to the puzzle for this month&lt;/a&gt;. I would recommend that you look it over, and begin thinking of how you might approach it. However, let&amp;rsquo;s let everyone have a chance to answer the puzzle and work through it as a team 🙂&lt;br&gt;
&lt;a href="http://www.meetup.com/Atlanta-PowerShell-Users-Group/events/227807680/"&gt;Register now on Meetup!&lt;img src="https://powershell.org/wp-content/uploads/2015/11/MeetUp.png" alt="MeetUp"&gt;&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Kicking off in our new venue, we&rsquo;ll be tackling this month&rsquo;s PowerShell.org monthly scripting games challenge! Prizes are given to the group with the best answers over the year, so let&rsquo;s try our best! Have an idea or want to cover a topic? Let us know my messaging Mark Schill or myself (Stephen Owen)<br><a href="https://powershell.org/2016/01/02/january-2016-scripting-games-puzzle/">Here&rsquo;s the link to the puzzle for this month</a>. I would recommend that you look it over, and begin thinking of how you might approach it. However, let&rsquo;s let everyone have a chance to answer the puzzle and work through it as a team 🙂<br><a href="http://www.meetup.com/Atlanta-PowerShell-Users-Group/events/227807680/">Register now on Meetup!<img src="https://powershell.org/wp-content/uploads/2015/11/MeetUp.png" alt="MeetUp"/></p>
]]></content:encoded></item><item><title>New Boston PowerShell User Group</title><link>https://powershell.org/articles/2016-01-11-new-boston-powershell-user-group/</link><guid>https://powershell.org/articles/2016-01-11-new-boston-powershell-user-group/</guid><pubDate>Mon, 11 Jan 2016 15:39:08 +0000</pubDate><description>&lt;p&gt;Its a new year with new goals and I hope to provide even more assistance and value to the PowerShell community in 2016. I have created a new Boston based PowerShell user group and will be working hard on creating sessions as frequently and regularly as possible. If you are in the greater Boston or New England area please join the user group. If we have any Microsoft employees or PowerShell MVPs visiting the Boston area in the future, we would love to have you deliver a session. I have arranged booking of a room in the Microsoft Technology Center located at Kendall Square, 255 Main Street, Cambridge, MA 02142 when required. I will also look into offering the meetings over Skype for Business if possible.&lt;br&gt;
Check out and join the Boston PowerShell User Group here: &lt;a href="http://www.meetup.com/Boston-PowerShell-User-Group"&gt;http://www.meetup.com/Boston-PowerShell-User-Group&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Its a new year with new goals and I hope to provide even more assistance and value to the PowerShell community in 2016. I have created a new Boston based PowerShell user group and will be working hard on creating sessions as frequently and regularly as possible. If you are in the greater Boston or New England area please join the user group. If we have any Microsoft employees or PowerShell MVPs visiting the Boston area in the future, we would love to have you deliver a session. I have arranged booking of a room in the Microsoft Technology Center located at Kendall Square, 255 Main Street, Cambridge, MA 02142 when required. I will also look into offering the meetings over Skype for Business if possible.<br>
Check out and join the Boston PowerShell User Group here:<a href="http://www.meetup.com/Boston-PowerShell-User-Group">http://www.meetup.com/Boston-PowerShell-User-Group</a></p>
]]></content:encoded></item><item><title>MSPSUG Virtual Meeting: Avoiding Version Chaos in a Multi-Version #PowerShell World – Jan 12th</title><link>https://powershell.org/articles/2016-01-08-mspsug-virtual-meeting-avoiding-version-chaos-in-a-multi-version-powershell-world-jan-12th/</link><guid>https://powershell.org/articles/2016-01-08-mspsug-virtual-meeting-avoiding-version-chaos-in-a-multi-version-powershell-world-jan-12th/</guid><pubDate>Fri, 08 Jan 2016 14:39:43 +0000</pubDate><description>&lt;p&gt;Join the Mississippi PowerShell User Group virtually on Tuesday, January 12th 2016 at 8:30pm Central Time when PowerShell MVP &lt;a href="http://twitter.com/juneb_get_help"&gt;June Blender&lt;/a&gt; will present “&lt;em&gt;&lt;strong&gt;PowersHELL: Avoiding Version Chaos in a Multi-Version PowerShell World&lt;/strong&gt;&lt;/em&gt;”.&lt;br&gt;
Beginning in Windows PowerShell 5.0, you can install multiple versions of the same module on the same computer; even in the same directory. Open source and PowerShellGet have revolutionized the availability of modules and Windows PowerShell 5.0+ will be continuously updated with Windows. The result is a myriad of interlocking parts with far more potential for conflicts in name, version, and functionality. Are we fated for the old &amp;ldquo;DLL Hell?&amp;rdquo; In this talk, I&amp;rsquo;ll present the problem, describe some mitigating strategies, warn about their limitations, and provide a roadmap for version sanity.&lt;br&gt;
Visit the &lt;a href="http://mspsug.com/2016/01/05/mspsug-january-2016-meeting-powershell-avoiding-version-chaos-in-a-multi-version-world/"&gt;Mississippi PowerShell User Group&lt;/a&gt; website to learn more about June 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, January 12th 2016 at 8:30pm Central Time when PowerShell MVP<a href="http://twitter.com/juneb_get_help">June Blender</a> will present “<em><strong>PowersHELL: Avoiding Version Chaos in a Multi-Version PowerShell World</strong></em>”.<br>
Beginning in Windows PowerShell 5.0, you can install multiple versions of the same module on the same computer; even in the same directory. Open source and PowerShellGet have revolutionized the availability of modules and Windows PowerShell 5.0+ will be continuously updated with Windows. The result is a myriad of interlocking parts with far more potential for conflicts in name, version, and functionality. Are we fated for the old &ldquo;DLL Hell?&rdquo; In this talk, I&rsquo;ll present the problem, describe some mitigating strategies, warn about their limitations, and provide a roadmap for version sanity.<br>
Visit the<a href="http://mspsug.com/2016/01/05/mspsug-january-2016-meeting-powershell-avoiding-version-chaos-in-a-multi-version-world/">Mississippi PowerShell User Group</a> website to learn more about June 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>Get Last Reboot or Computer Up Time With PowerShell</title><link>https://powershell.org/articles/2016-01-07-get-last-reboot-or-computer-up-time-with-powershell/</link><guid>https://powershell.org/articles/2016-01-07-get-last-reboot-or-computer-up-time-with-powershell/</guid><pubDate>Thu, 07 Jan 2016 14:20:24 +0000</pubDate><description>&lt;p&gt;Hey everyone, hope you had a great 2015 and I am back with I hope to be weekly updates for everyone at PowerShell.org. I wrote up a quick article on how to retrieve the last reboot time or the current up time for any local or remote computer. I also include a function that can be used to query remote computers as well. There may be a situation where you want to determine whether you take action depending on the last reboot time, or you may simply want it to be displayed for debugging or logging purposes.&lt;br&gt;
You can check out the full article over on &lt;a href="http://powershellblogger.com/?p=248"&gt;PowerShellBlogger.com&lt;/a&gt;.&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Hey everyone, hope you had a great 2015 and I am back with I hope to be weekly updates for everyone at PowerShell.org. I wrote up a quick article on how to retrieve the last reboot time or the current up time for any local or remote computer. I also include a function that can be used to query remote computers as well. There may be a situation where you want to determine whether you take action depending on the last reboot time, or you may simply want it to be displayed for debugging or logging purposes.<br>
You can check out the full article over on<a href="http://powershellblogger.com/?p=248">PowerShellBlogger.com</a>.</p>
]]></content:encoded></item><item><title>2016-January Scripting Games Puzzle</title><link>https://powershell.org/articles/2016-01-02-january-2016-scripting-games-puzzle/</link><guid>https://powershell.org/articles/2016-01-02-january-2016-scripting-games-puzzle/</guid><pubDate>Sat, 02 Jan 2016 15:00:01 +0000</pubDate><description>&lt;p&gt;Our January 2016 puzzle comes from MVP Adam Bertram. We&amp;rsquo;re actively interested in receiving Scripting Games puzzles from members of the community - submit yours, along with an official solution, to us at admin@ via email!&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>Our January 2016 puzzle comes from MVP Adam Bertram. We&rsquo;re actively interested in receiving Scripting Games puzzles from members of the community - submit yours, along with an official solution, to us at admin@ via email!</p><h2 id="instructions" class="ps-heading"><strong>Instructions</strong><a class="ps-heading-anchor" href="#instructions" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>The Scripting Games are a monthly puzzle. We publish puzzles the first Saturday of each month, along with solutions and commentary for the previous month&rsquo;s puzzle. You can find them all at<a href="https://powershell.org/category/announcements/scripting-games/">https://powershell.org/category/announcements/scripting-games/</a>. Many puzzles will include optional challenges, that you can use to really push your skills.<br><strong>To participate</strong>, add your solution to a public Gist (<a href="http://gist.github.com">http://gist.github.com</a>; you&rsquo;ll need a free GitHub account, which all PowerShellers should have anyway). After creating your public Gist, just copy the Gist URL from your browser window and paste it, by itself, as a comment of this post. 
**Only post one entry per person. **However, remember that you can always go back and edit your Gist. We&rsquo;ll always pull the most recent one when we display it, so there&rsquo;s no need to post multiple entries if you want to make an edit. Just edit the original Gist and we&rsquo;ll see your changes shortly.</p><p>Don&rsquo;t forget the <a href="https://powershell.org/?p=2574">main rules and purpose of these monthly puzzles</a>, including the fact that you won&rsquo;t receive individual scoring or commentary on your entry.<br><strong>User groups are encouraged to work together</strong> on the monthly puzzles. User group leaders should submit their group&rsquo;s best entry to Ed Wilson, the Scripting Guy, via e-mail, prior to the third Saturday of the month. On the last Saturday of the month, Ed will post his favorite, along with commentary and excerpts from noteworthy entries. The user group with the most &ldquo;favorite&rdquo; entries of the year will win a grand prize from PowerShell.org.</p><h2 id="our-puzzle" class="ps-heading"><strong>Our Puzzle</strong><a class="ps-heading-anchor" href="#our-puzzle" aria-label="Link to this section" title="Link to this section"><i class="fas fa-link" aria-hidden="true"/></a></h2><p>Server uptime is the lifeblood of system administrators. We strive on it, get addicted to it..we need…more server uptime! Don&rsquo;t you think something as addictive and important as server uptime be measured?  How do we know we&rsquo;re getting our uptime fix?  As that famous quote goes, &ldquo;Reality does not exist until it&rsquo;s measured.".  Let&rsquo;s measure it not only for our own sake but also to give a pretty report to our manager with all those whizbang, doohickey Excel juju that they love to see!<br>
For this month&rsquo;s challenge, I want you to create a PowerShell function that you can remotely point to a Windows server to see how long it has been up for. Here&rsquo;s an example of what it should output.<br><img src="https://powershell.org/wp-content/uploads/2015/12/image001.png" alt="image001"><br>
Requirements:<br>
1.     Support pipeline input so that you can pipe computer names directly to it.<br>
2.     Process multiple computer names at once time and output each computer&rsquo;s stats with each one being a single object.<br>
3.     It should not try to query computers that are offline. If an offline computer is found, it should write a warning to the console yet still output an object but with Status of OFFLINE.<br>
4.     If the function is not able to find the uptime it should show ERROR in the Status field.<br>
5.     If the function is able to get the uptime, it should show &lsquo;OK&rsquo; in the Status field.<br>
6.     It should include the time the server started up and the uptime in days (rounded to 1/10 of a day)<br>
7.     If no ComputerName is passed, it should default to the local computer.</p><p>Bonus:<br>
1.     The function should show a MightNeedPatched property of $true ONLY if it has been up for more than 30 days (rounded to 1/10 of a month).  If it has been up for less than 30 days, MightNeedPatched should be $false.</p>]]></content:encoded></item></channel></rss>