J'ai un script PowerShell qui doit s'exécuter sous plusieurs hôtes (PowerGUI, PowerShell ISE, etc ...), mais j'ai parfois un problème où une cmdlet n'existe pas sous l'un des hôtes. Existe-t-il un moyen de vérifier si une cmdlet existe pour que je puisse envelopper le code dans un bloc if et faire autre chose quand il n'existe pas?Comment vérifier si une applet de commande existe dans PowerShell à l'exécution via le script
Je sais que je pourrais utiliser le $host.name
pour sectionner le code supposé s'exécuter sur chaque hôte, mais je préférerais utiliser Feature Detection à la place au cas où la cmdlet serait ajoutée dans le futur.
Je pourrais aussi utiliser un bloc try/catch, mais étant donné qu'il s'exécute en code managé, je suppose qu'il y a loin de détecter si une cmdlet est installée via du code.
Je ne savais pas qu'il y avait un paramètre errorAction. Trouvé la liste de tous les paramètres communs ici: http://msdn.microsoft.com/en-us/library/dd901844(VS.85).aspx ce qui est bon à savoir. Merci! –
REMARQUE: vous pouvez également rechercher des modules en utilisant 'if (get-module | Where-Object {$ _. Nom -eq" ServerManager "}) {" Module existant "}'. Plus de détails: http://stackoverflow.com/questions/10027156/how-to-import-system-modules-automatically –
cmdlet peut exister, mais ne pas être disponible. Bon exemple: Get-WinEvent existe sur Windows 2003, mais il déclenche une exception NotImplemented. Comment gérez-vous cette situation? – Neolisk