Lors de l’élaboration de différents scripts en PowerShell, j’ai mis du temps avant de trouver comment nous pouvions faire appel à un fichier regroupant un ensemble de fonctions écrites, et ainsi simplifier et factoriser notre code.

Le but étant « d’appeler » (et non d’exécuter) ce fichier à chaque fois que l’on fait référence à une fonction, dans son « programme principal » par exemple.

Après quelques heures de recherche sur le net, je suis enfin parvenu à trouver un tutoriel clair et concis qui faisait exactement ce que je souhaitais.

Pour ce faire il faut passer par deux étapes :

  • Créer un fichier functions.psm1

En effet, vous ne pouvez pas passer par un fichier classique PowerShell (.ps1), car celui-ci serait alors « Interprété », ce que nous voulons surtout pas.

  • Inclure dans vo(s) programme(s) le lien vers ce fichiers regroupant vos fonctions.

Nous allons pouvoir réaliser cela par l’intermédiaire de la variable d’environnement : $PSScriptRoot

Démonstration

Créons un répertoire « monApplication » sur le bureau :

Puis, créons le fichier functions.psm1, ainsi que le fichier main.ps1 qui représenteras notre programme principal.

Puis éditer les deux fichiers par le biais de votre IDE préféré :

  • Ecrivez une fonction basique comme ci-dessous :
  • Dans le fichier main.ps1, je vais faire référence à la fonction que j’ai écrite dans le fichier functions.psm1

Enregistrez, puis exécuter le fichier main.ps1

Voilà, votre fichier main.ps1 « appel » bien le fichier functions.psm1 qui contient notre fonction que nous avons écrite message($texte).

++

Brlndtech


Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"