Suppressing PowerShell Errors
- Introduction to Error Action in PowerShell
-ErrorActionParameter in PowerShell
- Setting Error Action Preferences in PowerShell
Whether we want to ignore error messages or terminate a script’s execution when an error occurs, Windows PowerShell has plenty of options for dealing with errors. This article will discuss multiple techniques in handling and suppressing errors.
Introduction to Error Action in PowerShell
Even though it is effortless to suppress Windows PowerShell errors, doing so isn’t always the best option (although it can be). If we carelessly tell PowerShell to hide errors, it can cause our script to behave unpredictably.
Suppressing error messages also makes troubleshooting and information gathering a lot more complicated. So tread lightly and be careful about using the following snippets that you will see in this article.
-ErrorAction Parameter in PowerShell
The most common method for dealing with errors is to append the
-ErrorAction parameter switch to a cmdlet. The
-ErrorAction parameter switch lets PowerShell tell what to do if the cmdlet produces an error.
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
In the command above, we are querying for a service that doesn’t exist. Usually, PowerShell will throw an error if the service doesn’t exist.
Since we use the
-ErrorAction parameter, the script will continue as expected, like it doesn’t have an error.
Setting Error Action Preferences in PowerShell
If we need a script to behave in a certain way (such as suppressing errors), we might consider setting up some preference variables. Preference variables act as configuration settings for PowerShell.
We might use a preference variable to control the number of history items that PowerShell retains or force PowerShell to ask the user before performing specific actions.
For example, here is how you can use a preference variable to set the
-ErrorAction parameter to
SilentlyContinue for the entire session.
$ErrorActionPreference = 'SilentlyContinue'
There are many other error actions that we can specify for the
ErrorAction switch parameter.
Continue: PowerShell will display the error message, but the script will continue to run.
Ignore: PowerShell does not produce any error message, writes any error output on the host, and continues execution.
Stop: PowerShell will display the error message and stop running the script.
Inquire: PowerShell displays the error message but will ask for confirmation first if the user wants to continue.
SilentlyContinue: PowerShell silently continues with code execution if the code does not work or has non-terminating errors.
Suspend: PowerShell suspends the workflow of the script.
As previously mentioned, the
-ErrorAction switch has to be used in conjunction with a PowerShell cmdlet. For instance, we used the
Get-Process cmdlet to demonstrate how the
ErrorAction switch works.