60

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.

2 Answers 2

73

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 for ErrorAction)

You can then evaluate the error in your script, by having a look at $Err[0]

2
  • I'm afraid that doesnt work unless I'm sticking it in the wrong place. get-process -ComputerName server1, server2, server3 -name explorer -ErrorAction SilentlyContinue | Select-Object processname,machinename
    – Jake
    Nov 30, 2011 at 11:53
  • Add it to get-process or take a look at my updated answer above. Nov 30, 2011 at 12:04
25

Short answer: Add $ErrorActionPreference = 'SilentlyContinue' at the start of your code so you don't need to add -ErrorAction SilentlyContinue to every command

Long answer: Controlling Error Reporting Behavior and Intercepting Errors

4

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.