J'essaie de voir si un processus s'exécute sur plusieurs serveurs, puis le formater dans un tableau.
get-process -ComputerName server1,server2,server3 -name Explorer | Select-Object processname,machinename
C'est la partie facile - Lorsque le processus n'existe pas ou si le serveur n'est pas disponible, PowerShell génère une grosse erreur laide, gâche la table et ne continue pas. Exemple
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
Comment puis-je contourner cela? Si je souhaite toujours être informé si le processus n'est pas disponible ou en cours d'exécution.
Ajouter -ErrorAction SilentlyContinue
à votre commande.
Lorsqu'il ne s'agit pas d'une erreur, mais d'une exception non gérée, vous devez ajouter -EV Err -EA SilentlyContinue
, pour intercepter l'exception. (EA
est un alias pour ErrorAction
)
Vous pouvez ensuite évaluer l'erreur dans votre script, en consultant $Err[0]
Réponse courte: Ajouter $ErrorActionPreference = 'SilentlyContinue'
au début de votre code, vous n'avez donc pas besoin d'ajouter -ErrorAction SilentlyContinue
à chaque commande
Réponse longue: https://www.gitbook.com/book/devopscollective/the-big-book-of-powershell-error -manipulation/détails