Topic: While
Notice: This post is a part of the PowerShell Monday series — a group of quick and easy to read mini lessons that briefly cover beginning and intermediate PowerShell topics. As a PowerShell enthusiast, this seemed like a beneficial way to ensure those around me at work were consistently learning new things about Windows PowerShell. At some point, I decided I would share these posts here, as well. Here’s the PowerShell Monday Table of Contents.
The last language construct we’re going to discuss is the While loop — yes, another looping construct. Let’s start with the help file in the first below command, followed by two ways to write the conceptual structure of the While loop.
Get-Help -Name about_While -ShowWindow While (<condition>){<statement list>} While (<condition>) { <statement list> }
Our first below example of the While loop, well, it does absolutely nothing. We begin by setting our $Value variable to the numeric value of 1, and then we (attempt) to enter the While loop. The biggest difference between the While loop and the Do loop is that our conditions come before the statement lists. This should be reminiscent of the If, and Switch statement variations, where the evaluations come first.
$Value = 1 While ($Value -eq 5) { $Value $Value = $Value + 1 }
In the next example, we’ll make one simple change and the code will run. Our condition will evaluate the $Value variable such that it’s $true when $Value is less than or equal to 5. Remember from the For loop, that $Value++ is the same as writing $Value = $Value + 1.
$Value = 1 While ($Value -le 5) { $Value $Value++ } 1 2 3 4 5
Our final example for the While loop, gives the user an opportunity to try and guess a number between one and five. Before we potentially, enter the While construct, we’ll set the $MagicNumber variable to the random number and the $Continue variable to $true. We enter the While providing that $Continue is equal to $true, and we know it will be, as it was just assigned that value.
Inside the statement list, we (1) request the user enter a number between one and five, and (2) use and If-Else to see if the $MagicNumber matches the guess entered by the user, as stored in $Guess. If it matches, we indicate that, and then set $Continue to $false. This means that the next time the While begins, the condition won’t match and we won’t enter the While. The loop will be over. If $Guess and $MagicNumber don’t match, the While will execute again, and we’ll ask for another number.
$MagicNumber = Get-Random -Minimum 1 -Maximum 5 $Continue = $true While ($Continue -eq $true) { $Guess = Read-Host "Enter the magic number" If ($Guess -eq $MagicNumber) { "You guessed it: $Guess <--> $MagicNumber" $Continue = $false } Else { Write-Output -InputObject 'Try again.' } } Enter the magic number: 5 Try again. Enter the magic number: 4 Try again. Enter the magic number: 2 Try again. Enter the magic number: 3 You guessed it: 3 <--> 3
And, that’s it. We’ve seen and learned everything from If to Switch and For to While. As it was stated previously, knowing which language construct to use should be left to your intuition, and a full understanding of a language’s conditional options is the only way that’s going to happen. Next week we’ll start discussing reusable code.