Dado: PowerShell 5.1
Estou recebendo um "Acesso negado" para alguns dos computadores da matriz. Como posso fazer com que algum erro seja executado na parte "else" da condição onde NÃO está sendo executado? No momento, está apenas exibindo uma mensagem de erro inteira e não quero que o usuário veja tudo isso.
Invoke-Command -ComputerName $computers {
$rstest = Get-Service -Name MyService1
if ($rstest.Status -eq 'Running') {
"Service $($rstest.Name) is running"
}
else{
"Service $($rstest.Name) is NOT running"
}
}
Os erros de "Acesso negado" não são devidos a
Get-Service
, se o serviço não estivesse lá, você receberia um erro diferente, ou seja: "Não é possível encontrar nenhum serviço com o nome do serviço...". Isso ocorre porque você não consegue se conectar aos computadores remotos por falta de permissões ou talvez os servidores não tenham o PSRemoting habilitado.A maneira mais fácil de lidar com isso provavelmente é usar
-ErrorAction SilentlyContinue
suaInvoke-Command
instrução junto-ErrorVariable
e verificar se a variável de erro está preenchida: