PowerShell ISE : purger les variables sans redémarrer
Sommaire
I. Présentation
J'ai l'habitude de coder des scripts avec PowerShell ISE notamment quand je me trouve directement sur un serveur puisqu'il est intégré directement à Windows Server. Ceux qui connaissent cet éditeur de code savent qu'il est contraignant dans sa façon de gérer les variables et clairement, ça peut être gênant pour du debug.
En effet, lorsqu'un script est exécuté, PowerShell ISE va garder en mémoire les variables et leurs valeurs d'une exécution à l'autre. Autrement dit, une exécution du script peut, potentiellement, impacter la prochaine : de quoi ajouter une complexité supplémentaire lorsqu'il s'agit de faire un troubleshooting...
La solution : fermer PowerShell ISE et le rouvrir. Mouais, c'est un peu pénible car il faut rouvrir le script, voire mêmes les scripts... Pas très pratique. Il y a une autre solution : supprimer toutes les variables de la session PowerShell ISE en cours à l'aide d'une commande. Voyons ça ensemble...
II. Supprimer les variables dans PowerShell ISE
Au sein de la console de PowerShell ISE, nous allons exécuter la commande suivante :
Remove-Variable * -ErrorAction SilentlyContinue
Elle va tout simplement supprimer toutes les variables, et donc par extension, les valeurs associées. Manipulation simple mais radicale.
En fait, il y a deux autres choses que l'on peut purger au sein de la session PowerShell ISE : les erreurs et les modules chargés. Voyons comment faire également.
III. Purger les erreurs et les modules chargés dans PowerShell ISE
Pour aller plus loin supprimer également les modules chargés dans la session PowerShell ISE, nous pouvons exécuter la commande suivante :
Remove-Module * -ErrorAction SilentlyContinue
Enfin, pour se débarrasser de l'historique des erreurs de la session en cours, nous allons exécuter cette commande :
$error.Clear()
En résumé, vous pouvez repartir à blanc en exécutant les trois commandes suivantes sans fermer l'éditeur de code :
Remove-Variable * -ErrorAction SilentlyContinue Remove-Module * -ErrorAction SilentlyContinue $error.Clear()
Bon, maintenant il faut continuer le troubleshooting...