Como ignorar um erro no Powershell e deixá-lo continuar?

32

Estou tentando ver se um processo está sendo executado em vários servidores e, em seguida, formatá-lo em uma tabela.

get-process -ComputerName server1,server2,server3 -name explorer | Select-Object processname,machinename

Essa é a parte fácil - quando o processo não existe ou se o servidor não está disponível, o PowerShell gera um erro grande e feio, atrapalha a tabela e não continua. Exemplo

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

Como faço para contornar isso? Se eu ainda gostaria de ser notificado se o processo não estiver disponível ou em execução.

    
por Jake 30.11.2011 / 09:32

2 respostas

36

Adicione -ErrorAction SilentlyContinue ao seu comando.

Quando não é um erro, mas uma exceção não tratada, você deve adicionar -EV Err -EA "SilentlyContinue" para capturar a exceção. ( EA é um alias para ErrorAction )

Você pode avaliar o erro no seu script lendo $Err[0]

    
por 30.11.2011 / 10:53
8

Resposta curta: Adicione $ErrorActionPreference = 'SilentlyContinue' no início do seu código para que você não precise adicionar -ErrorAction SilentlyContinue a todos os comandos

Resposta longa: link

    
por 12.04.2016 / 07:44