{"id":2837,"date":"2013-09-22T00:01:00","date_gmt":"2013-09-22T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2013\/09\/22\/weekend-scripter-using-powershell-to-cook-popcorn-for-music\/"},"modified":"2013-09-22T00:01:00","modified_gmt":"2013-09-22T00:01:00","slug":"weekend-scripter-using-powershell-to-cook-popcorn-for-music","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/weekend-scripter-using-powershell-to-cook-popcorn-for-music\/","title":{"rendered":"Weekend Scripter: Using PowerShell to Cook Popcorn for Music"},"content":{"rendered":"<p><strong>Summary<\/strong>: Leverage Windows PowerShell for some simple on-screen animation.<\/p>\n<p>Honorary Scripting Guy, Sean Kearney, here. I&rsquo;m filling in for our good friend, Ed Wilson. Ed got hungry today and asked me to make him some popcorn. So today we&rsquo;ll use Windows PowerShell to make some&mdash;just some little bits for fun.<\/p>\n<p>In actual reality I&rsquo;m going to have Windows PowerShell generate some simple animations on the screen. This is for fun. Nothing else. After all, it&rsquo;s the weekend. That&rsquo;s my excuse!<\/p>\n<p>So first we&rsquo;ll define an array of the characters that will participate in our little animated fun:<\/p>\n<p style=\"padding-left: 30px\">[Array]$Popcorn=$NULL<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221;( 0 )&#8221;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; ( ) &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; O &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; o &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; * &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; | &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; \\ &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; &#8211; &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; . &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; . &#8221;&nbsp;<\/p>\n<p>If you&rsquo;re feeling particularly creative and have too much time on your hands like I do, feel free to tweak or expand to this list.<\/p>\n<p>We&rsquo;re going to have a simple animation occur to show our piece of popcorn moving up the screen. If you remember, last week we used the <strong>$Host<\/strong> variable to move the position of the cursor on the screen.<\/p>\n<p>Today we&rsquo;ll have our piece of popcorn rise up the screen in random positions. That should be fairly easy. We&rsquo;ll pick a random position to place our &ldquo;kernel.&rdquo; To determine where we can &ldquo;pop&rdquo; on the screen, we&rsquo;ll use a little simple logic.<\/p>\n<p>Our column can be anywhere from the left to the right side of the console. Well almost. We have to ensure that we don&rsquo;t go too far to the left or right.<\/p>\n<p>We&rsquo;re going to pop in an upwards direction, so we&rsquo;ll have to make sure that we start as low on the screen as we have elements within our array.<\/p>\n<p>This is all fine and dandy, but wouldn&rsquo;t it make sense to know just how big the Windows PowerShell window is? We can use the <strong>$Host<\/strong> variable. Under <strong>RawUI<\/strong>, there is a property called <strong>WindowSize<\/strong>, which contains the width and height of our Windows PowerShell window.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8132.01.png\"><img decoding=\"async\" title=\"Image of command output\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/8132.01.png\" alt=\"Image of command output\" \/><\/a><\/p>\n<p>When we know this information, we can use <strong>Get-Random<\/strong> to accurately place the piece of popcorn. We can use the <strong>Width<\/strong> to determine our maximum column position and the <strong>Height<\/strong> to figure out just how low we can go (I sense a limbo):<\/p>\n<p style=\"padding-left: 30px\">$MaximumX=$Host.UI.RawUI.WindowSize.Width<\/p>\n<p style=\"padding-left: 30px\">$MaximumY=$Host.UI.RawUI.WindowSize.Height<\/p>\n<p>Now for the row, we&rsquo;re going to have to take into account the amount of array elements. So we&rsquo;ll subtract the total values contained within the array:<\/p>\n<p style=\"padding-left: 30px\">$StartColumn=([int](($popcorn[0].Length\/2)+.1)<\/p>\n<p style=\"padding-left: 30px\">$MaximumX=$Host.UI.RawUI.WindowSize.Width-$StartColumn<\/p>\n<p style=\"padding-left: 30px\">$TotalPopcorn=$Popcorn.Count<\/p>\n<p style=\"padding-left: 30px\">$MaximumY=$Host.UI.RawUI.WindowSize.Height-$TotalPopcorn&nbsp;<\/p>\n<p>Now we&rsquo;ll just use a simple <strong>Get-Random<\/strong> for our starting position:<\/p>\n<p style=\"padding-left: 30px\">$StartX=$StartColumn=GET-RANDOM $MaximumX<\/p>\n<p style=\"padding-left: 30px\">$StartY=(GET-RANDOM $MaximumY)+$TotalPopcorn<\/p>\n<p>Before we get going, we&rsquo;ll have to obtain the location of the cursor so that we can manipulate it:<\/p>\n<p style=\"padding-left: 30px\">$Location=$Host.UI.RawUI.CursorPosition<\/p>\n<p>Now to draw our bits (or technically, bytes) on the screen. For this, we&rsquo;ll execute a simple loop to start from the bottom of the array to the top:<\/p>\n<p style=\"padding-left: 30px\">For ($p=$TotalPopcorn-1;$p &#8211;; $p &ndash;ge 0)<\/p>\n<p style=\"padding-left: 30px\">{<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Location.Y=($StartY+$p)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Host.UI.RawUI.CursorPosition=$Location<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WRITE-HOST $Popcorn[$p]&nbsp;<\/p>\n<p>During our loop we&rsquo;re going to make sure that whatever might have been below the cursor will be erased. So move the cursor precisely down one position and draw a blank.<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Erase=$Location<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Erase.Y=($StartY+$p+1)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Host.UI.RawUI.CursorPosition=$Erase<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WRITE-HOST &#8221; &nbsp;&#8220;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-sleep -milliseconds 10<\/p>\n<p style=\"padding-left: 30px\">}<\/p>\n<p>Now if we just randomly looped through all of this, we&rsquo;d see some basic little animations popping on the screen. But popcorn seems to pop randomly. So we&rsquo;ll use a simple &ldquo;flip of the coin&rdquo; to decide in the parent loop on whether the popcorn will &ldquo;pop&rdquo;:<\/p>\n<p style=\"padding-left: 30px\">If ((GET-RANDOM 50) &ndash;lt 30)<\/p>\n<p style=\"padding-left: 30px\">{ ScriptBlock for Popping Corn}<\/p>\n<p style=\"padding-left: 30px\">ELSE<\/p>\n<p style=\"padding-left: 30px\">{ START-SLEEP &ndash;milliseconds 1000 }<\/p>\n<p>&nbsp;Oh. One more thing for fun (and possibly to annoy our coworkers&mdash;a random &ldquo;POP&rdquo; sound:<\/p>\n<p style=\"padding-left: 30px\">[console]::beep(4000+(GET-RANDOM 4000),100)<\/p>\n<p>So let&rsquo;s put this all together. I&rsquo;ll call our loop that draws our <strong>$Popcorn<\/strong> on the screen a function called &ldquo;POP-corn&rdquo; (Oh come on, I had to&hellip;I really just had to):<\/p>\n<p style=\"padding-left: 30px\"># PowerShell Popcorn<\/p>\n<p style=\"padding-left: 30px\"># Define our array of Kernel pieces<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">[Array]$Popcorn=$NULL<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221;( 0 )&#8221;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; ( ) &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; O &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; o &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; * &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; | &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; \\ &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; &#8211; &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; . &#8220;<\/p>\n<p style=\"padding-left: 30px\">$Popcorn+=&#8221; . &#8220;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\"># Grab the cursor position<\/p>\n<p style=\"padding-left: 30px\">$Location=$Host.UI.RawUI.CursorPosition<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\"># Get our parameters within the Console<\/p>\n<p style=\"padding-left: 30px\">$StartColumn=([int](($popcorn[0].Length\/2)+.1)<\/p>\n<p style=\"padding-left: 30px\">$MaximumX=$Host.UI.RawUI.WindowSize.Width-$StartColumn<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">$TotalPopcorn=$Popcorn.Count<\/p>\n<p style=\"padding-left: 30px\">$MaximumY=$Host.UI.RawUI.WindowSize.Height-$TotalPopcorn<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">#Clear the Screen<\/p>\n<p style=\"padding-left: 30px\">CLEAR-HOST<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\"># Declare our popping cool function<\/p>\n<p style=\"padding-left: 30px\">Function pop-corn()<\/p>\n<p style=\"padding-left: 30px\">{<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">#Grab a random position<\/p>\n<p style=\"padding-left: 30px\">$StartX=GET-RANDOM $MaximumX<\/p>\n<p style=\"padding-left: 30px\">$StartY=(GET-RANDOM $MaximumY)+$TotalPopcorn<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">$Location.X=$StartX<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">For ($p=$TotalPopcorn-1;$p &#8211;; $p &ndash;ge 0)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Location.Y=($StartY+$p)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Move the cursor<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Host.UI.RawUI.CursorPosition=$Location<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Drop a Kernel<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WRITE-HOST $Popcorn[$p]<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Move the cursor<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Erase=$Location<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Erase.Y=($StartY+$p+1)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Krush an older Kernel<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $Host.UI.RawUI.CursorPosition=$Erase<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WRITE-HOST &#8221; &nbsp;&#8220;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Grab a quick nap<\/p>\n<p style=\"padding-left: 30px\">start-sleep -milliseconds 10<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p style=\"padding-left: 30px\">}<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\"># Let&rsquo;s decorate the console<\/p>\n<p style=\"padding-left: 30px\">$Host.Ui.RawUI.WindowTitle=&#8221;PowerShell Popcorn&#8221;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">do {<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # You can adjust the 30 Higher or Lower<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # to increase or decrease the possibility of<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # popping<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((GET-RANDOM 50) -lt 30)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # irritate your coworkers with noise<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [console]::beep(4000+(GET-RANDOM 4000),100)<\/p>\n<p style=\"padding-left: 30px\">&nbsp;<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Pop some Corn<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pop-Corn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 1000 milliseconds equals one second.<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # You could make this larger or smaller or even sleep<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # RANDOM amount of time using<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # START-SLEEP &ndash;milliseconds (GET-RANDOM 5000)<\/p>\n<p style=\"padding-left: 30px\">{ START-SLEEP -milliseconds 1000 }<\/p>\n<p style=\"padding-left: 30px\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p>\n<p style=\"padding-left: 30px\">until ($FALSE)<\/p>\n<p>&nbsp;Save this as popcornscreen.ps1, run it, and watch the pieces appear all over the screen.<\/p>\n<p>OK, no much silliness in console land. Back to work and more cool Windows PowerShell fun tomorrow!<\/p>\n<p>Does anyone have some butter? I&rsquo;m getting hungry.<\/p>\n<p>I invite you to follow the Scripting Guys on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\" target=\"_blank\">Facebook<\/a>. If you have any questions, send email to <a href=\"mailto:scripter@microsoft.com\" target=\"_blank\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p><strong>Sean Kearney<\/strong>, <br \/> Honorary Scripting Guy and Windows PowerShell MVP<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Leverage Windows PowerShell for some simple on-screen animation. Honorary Scripting Guy, Sean Kearney, here. I&rsquo;m filling in for our good friend, Ed Wilson. Ed got hungry today and asked me to make him some popcorn. So today we&rsquo;ll use Windows PowerShell to make some&mdash;just some little bits for fun. In actual reality I&rsquo;m going [&hellip;]<\/p>\n","protected":false},"author":596,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[56,154,61,45],"class_list":["post-2837","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-guest-blogger","tag-sean-kearney","tag-weekend-scripter","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Summary: Leverage Windows PowerShell for some simple on-screen animation. Honorary Scripting Guy, Sean Kearney, here. I&rsquo;m filling in for our good friend, Ed Wilson. Ed got hungry today and asked me to make him some popcorn. So today we&rsquo;ll use Windows PowerShell to make some&mdash;just some little bits for fun. In actual reality I&rsquo;m going [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/2837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/596"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=2837"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/2837\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=2837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=2837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=2837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}