If Statement in PowerShell Complete Guide for If Statement in PowerShell


By Samyr Ahmad

An if statement can be followed by an optional else statement, which executes when the Boolean expression is false. This block is if implemented in an If() statement around the action that you want to skip in a dry run, and is part of the $PSCmdlet variable. To actually put it into action, we need to add a ShouldProcess() block into our function where we want the WhatIf to actually run.

  • PowerShell’s WhatIf and confirm are two great commands for testing complicated scripts without risking the code running amok.
  • Anyway, so we wanted to make our own scripts have this ability.
  • As you can see from the screenshot, my MacGyver biography is only 13 words long so far.
  • The function now allows you to call the ShouldProcess() method on the $PSCmdlet function variable to determine if the WhatIf parameter was passed to the function or not.
  • Simply type Start-Transcript before running your WhatIf command and then type End-Transcript afterwards.

In this example, we’ve set the variable $x to a value of 4. We then set our If statement with the condition that if $x is greater than or equal to 3, display the message “$x is greater than or equal to 3”. Lastly, we set our Else statement that if the condition is false, display the message “$x is less than 3”.

The syntax of If statements in PowerShell is pretty basic and resembles other coding languages. The function now allows you to call the ShouldProcess() method on the $PSCmdlet function variable to determine if the WhatIf parameter was passed to the function or not. When the WhatIf parameter is used, ShouldProcess() returns False. Because you are neglecting the built-in capabilities of an advanced function. You’ll need to build this functionality into every function you create instead of just focusing on what the command will do when it is turned off. Notice that the developer has defined their own WhatIf switch parameter.

PowerShell -Confirm:$False

Then, using the value of that parameter, they then used an if/then construct to handle the logic when the WhatIf parameter was used or not. It is not uncommon for script developers to reinvent the wheel and implement their own WhatIf support with some if/then logic. Before you attempt to implement WhatIf support in your scripts, it is essential to know that there’s a wrong way and right way of doing it. If you are not sure whether a particular command supports WhatIf, there are two quick ways to check.

  • In this section, you’ve learned how to use WhatIf support with existing cmdlets.
  • This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.
  • To avoid frustration, do NOT add the –WhatIf switch to the Start-Transcript (or End-Transcript) commands or you’ll spend hours chasing your tail trying to find a transcript file that doesn’t exist.
  • There are plenty of ways a script error can slip through even a solid testing environment and create havoc in the production world.

Next, we’ll build our nested conditional statement for the different days of the week and assign a different meal for each day. The condition statement itself can be structured in various different ways. In my earlier eggcelent example, I used the -lt comparison operation in my conditional statement, which stands for less than. Here is a list of some of the comparison operators you can use in PowerShell.

How to Use If Statements in PowerShell

But what if this command creates a file that may potentially cause a problem if were created unsuccessfully? There are many different ways you can take Getting started with Angular Learn web development MDN advantage of the WhatIf parameter. In this section, you’ll learn how you can begin to use the WhatIf parameter immediately using built-in cmdlets.

what if powershell

Next, we set a conditional statement that says if $eggs is less than 12, display a message. Since $eggs has a value of 10, the message “You have less than a dozen eggs” is displayed. If we want to check if the database server is up or down then we can use if statement.

In the screenshot above, we have our $egg variable set to 14, which returned the Else statement, displaying the message “You have more than a dozen eggs.” Now that we have a basic understanding of If statements, let’s dive a little deeper and go over the syntax and some more advanced examples. WHATIF PARAMETER USEDSHOULDPROCESS() RESULTTrueFalseFalseTrueNow you can see below when Remove-LogFile is executed with the WhatIf parameter; it displays the same behavior as built-in cmdlets. All advanced functions support WhatIf functionality, but it’s up to you to take advantage of it. To do so, you must use the SupportsShouldProcess keyword in between the [CmdletBinding()] parentheses first as shown below. All functions using the [CmdletBinding()] keyword make them “advanced”.

Since our scripts are mostly strung together with built-in commands, we want to have a WhatIf switch be inherited by the sub-commands. For example, the following command will select all inactive computers from the beginning of the year in the Active Directory domain and delete them. If, before deleting objects in AD, you want to see the list of computers to be deleted, add the –WhatIf switch to the command. The -WhatIf parameter is a switch parameter and is found in many PowerShell cmdlets. There are plenty of ways a script error can slip through even a solid testing environment and create havoc in the production world.

PowerShell CodePlex Install

The Switch statement will usually run faster and look cleaner, making it easier to understand compared to multiple nested If-Else statements. If you want to learn more about the Switch statement, stay tuned as we’ll cover it more in-depth in a future article. One of the main uses of if statement allows the program to make the decision on the basis of one or more conditions.

Here, when it starts execution it checks for cond1 as if it is true or false, based on the value it will execute the statement block if cond1 is true it will execute statement1 and PowerShell exit. But if cond1 is false, then it will check else if block cond2, if cond2 is true then statement2 will be executed. If cond1 and cond2 both are false or none of the condition is true then else statement will be executed.

One of the handy functions built into Powershell, is the ability to preview what would happen if you run a command. This could be as simple as wanting to make sure that your Remove-Item actually deletes the write files, or that Set-ADUser changes the right attribute. The -WhatIf flag displays what the cmdlet would do without actually performing any action. This is useful for a dry run of a potentially destabilizing operation, to see what the actual results would be.

With WhatIf, you can make sure that the changes made to these objects meet your expectations without worrying about changing these objects. Used correctly PowerShell 2.0 is a robust tool for system administration, but used incorrectly, it can be a powerful disruptor of an otherwise happy environment. Instead, don’t reinvent the wheel and use the SupportsShouldProcess keyword combined with the $PSCmdlet.ShouldProcess(). If you were to run the below command, it would create the file called newfile.txt.

what if powershell

There doesn’t seem to be a clear consensus about when/how to use these parameters. My idea behind this research is to list the https://topbitcoinnews.org/ PowerShell cmdlets that contain ‘confirm’ in their parameters. Anyway, so we wanted to make our own scripts have this ability.

This keyword adds various capabilities to the function including WhatIf support. At this point, you should know that using the WhatIf Cloud Banking Payments Solutions parameter with a cmdlet or advanced function only simulates the operation. You were affecting WhatIf behavior at the command level.


You can use the Get-Command command to view command metadata by using the Syntax parameter as shown below. Wouldn’t it be nice to know what that PowerShell command would do before it makes changes to your environment? Imagine being able to ask of your command, “What would you do if you were to run? Here it matches case the value of $day, so if a day is Sunday or Saturday, it will print “Hello friends, Banks are closed today” and if it’s other than Sunday and Saturday it will print “Welcome to Our Banks”.

  • You can direct the output to a specific file with the –path switch.
  • In my earlier eggcelent example, I used the -lt comparison operation in my conditional statement, which stands for less than.
  • Instead of gung-ho Guy deleting the files – ready or not, we will take the cautious approach and append -WhatIf.

In the below flow diagram we can see when execution starts, it first checks the condition. If the condition is true then it will go to the statement block. Any condition other than zero, false, blank are considered as true only .for example if any conditional expression gives an output of 0,”, false all these are considered as false statements. Since I ran this command on a Thursday, the returned dinner plan was “Talapia Thursday.” While this script runs as planned and returns the correct results, I need to add a caveat. If you are nesting multiple conditional statements together, you should be using the Switch statement instead.

Summary of PowerShell -WhatIf and -Confirm Commands

When using if, elseif, else statements there are a few points to keep in mind. Let’s go one step further and make our WhatIf and Confirm strings more natural and custom for when we’re overwriting an existing file, to provide more context to the end user. To get started, we’ll add SupportsShouldProcess to our [CmbletBinding()] arguments, as this will enable the use of ShouldProcess() blocks.


Add comment

Your comment will be revised by the site if needed.