I am trying to see if a process is running on multiple servers and then format it into a table.
get-process -ComputerName server1,server2,server3 -name explorer | Select-Object processname,machinename
Thats the easy part - When the process does not exist or if the server is unavailable, powershell outputs a big ugly error, messes up the the table and doesn't continue. Example
Get-Process : Couldn't connect to remote machine.At line:1 char:12 + get-process <<<< -ComputerName server1,server2,server3 -name explorer | format-table processname,machinename
+ CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperatio nException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.Power Shell.Commands.GetProcessCommand
How do I get around this? If the I would still like to get notified if the process isn't available or Running.
Add
-ErrorAction SilentlyContinue
to your command.When it's not an error, but an unhandled Exception, you should add
-EV Err -EA SilentlyContinue
, in order to catch the exception. (EA
is an alias forErrorAction
)You can then evaluate the error in your script, by having a look at
$Err[0]
Short answer: Add
$ErrorActionPreference = 'SilentlyContinue'
at the start of your code so you don't need to add-ErrorAction SilentlyContinue
to every commandLong answer: Controlling Error Reporting Behavior and Intercepting Errors