Powershell: How can I stop errors from being displayed in a script? Powershell: How can I stop errors from being displayed in a script? powershell powershell

Powershell: How can I stop errors from being displayed in a script?


You have a couple of options. The easiest involve using the ErrorAction settings.

-Erroraction is a universal parameter for all cmdlets. If there are special commands you want to ignore you can use -erroraction 'silentlycontinue' which will basically ignore all error messages generated by that command. You can also use the Ignore value (in PowerShell 3+):

Unlike SilentlyContinue, Ignore does not add the error message to the $Error automatic variable.

If you want to ignore all errors in a script, you can use the system variable $ErrorActionPreference and do the same thing: $ErrorActionPreference= 'silentlycontinue'

See about_CommonParameters for more info about -ErrorAction.See about_preference_variables for more info about $ErrorActionPreference.


Windows PowerShell provides two mechanisms for reporting errors: one mechanism for terminating errors and another mechanism for non-terminating errors.

Internal CmdLets code can call a ThrowTerminatingError method when an error occurs that does not or should not allow the cmdlet to continue to process its input objects. The script writter can them use exception to catch these error.

EX :

try{  Your database code}catch{  Error reporting/logging}

Internal CmdLets code can call a WriteError method to report non-terminating errors when the cmdlet can continue processing the input objects. The script writer can then use -ErrorAction option to hide the messages, or use the $ErrorActionPreference to setup the entire script behaviour.


I had a similar problem when trying to resolve host names using [system.net.dns]. If the IP wasn't resolved .Net threw a terminating error.To prevent the terminating error and still retain control of the output, I created a function using TRAP.

E.G.

Function Get-IP {PARAM   ([string]$HostName="")PROCESS {TRAP              {"" ;continue}              [system.net.dns]::gethostaddresses($HostName)        }}