Vérifier si un élément existe sans une erreur s'il n'existe pas
Je voudrais utiliser PowerShell pour vérifier si une Application Web IIS existe (ou éventuellement un autre type de l'élément). Je peux le faire avec Get-Item
, mais qui signale une erreur si l'élément n'existe pas, ce qui est trompeur pour l'utilisateur qui exécute le script, il ressemble à quelque chose n'allait pas quand en fait, tout est bien.
Comment puis-je le faire sans une erreur?
Vous devez vous connecter pour publier un commentaire.
Utilisez la commande ...
get-item blah -ErrorAction SilentlyContinue
-ErrorAction SilentlyContinue
peut être raccourcie à-ea si
,dir app_offline.htm -ea si | del
L'applet de commande
Test-Path
est spécifiquement conçu pour cela, il détermine si les éléments d'un chemin d'accès existent. Elle renvoie une valeur Booléenne et ne génère pas d'erreur.L'applet de commande
Get-Item
(et similaire) peut être utilisé, aussi, mais pas directement. Une façon est d'ores et déjà proposé: utilisation-ErrorAction SilentlyContinue
. Il peut être important de savoir qu'en fait il génère encore une erreur; il n'a tout simplement pas le montrer. Vérifier l'erreur de la collection$Error
après la commande, l'erreur est là.Juste pour information
Il y a une drôle de façon d'éviter cette erreur (il fonctionne aussi avec certaines autres applets de commande comme
Get-Process
qui n'ont pas deTest-Path
alternative). Supposons que nous sommes sur le point de vérifier l'existence d'un élément "MyApp.exe" (ou un processus "MyProcess"). Ces commandes ne retournent rien sur les cibles ne sont pas et, en même temps qu'elles génèrent pas d'erreurs:Ces applets de commande ne génère pas d'erreurs de joker cibles. Et nous nous servons de ces drôles de caractères génériques effectivement correspondre à des éléments uniques.