15/11/2024

Comment récupérer de nouveaux modules PowerShell DSC ?

I. Au paradis des modules

PowerShell DSC est un outil poussé par une communauté vivante et pour cause des dizaines de modules sont disponibles gratuitement sur la PowerShell Gallery. C’est par ce biais que dans la plupart des cas on obtiendra de nouveaux modules pour PowerShell DSC, à moins que vous développiez votre propre module ou que vous le téléchargiez depuis une autre source (exemple : GitHub).

Nous allons voir comment récupérer un module PowerShell DSC depuis la galerie PowerShell ou depuis GitHub, car les deux cas de figures sont différents biens que le résultat final soit le même.

Pour rappel, un module contient un ensemble de ressources, et ce sont les ressources que vous utilisez ensuite dans les scripts de configuration DSC, tout en important les bons modules pour rendre les ressources accessibles.

II. Comment rechercher un module ?

Pour rechercher des modules directement à partir de PowerShell, on va s’appuyer sur le commandlet « Find-Module » qui permet de rechercher nativement au sein de la PowerShell Gallery.

Voici une série d’exemple pour vous aider à rechercher un module :

- Rechercher à partir d’un mot clé

Si l’on recherche un module en rapport avec le rôle « IIS » on pourra utiliser la commande suivante :

Find-Module -Name *IIS*

Ce qui retournera plusieurs résultats :

powershell-dsc-find-module-1

Mais une autre manière intéressante et pertinente de faire, c’est de rechercher directement le mot clé dans la description, comme ceci :

Find-Module | ?{ $_.Description -like "*IIS*" }

powershell-dsc-find-module-2

- Lister les modules communautaires

Comme je vous l’ai dit précédemment, PowerShell DSC dispose d’une forte communauté, et l’ensemble des modules fournit « AS IS » et sur lesquels Microsoft ne fournit pas de support, ont un nom qui commence par « x » comme « Expérimental ».

Pour rechercher ces modules, c’est tout simple :

Find-Module -Name x*

powershell-dsc-find-module-3

Il y en a près d’une centaine référencé dans la PSGallery et ils balaient un nombre impressionnant de rôles et fonctionnalités Windows.

Vous pouvez aussi naviguer directement sur le site de la PowerShell Gallery.

- Rechercher directement une ressource

On peut aussi directement rechercher une ressource, ce qui nous donnera le nom du module auquel elle appartient, pour ensuite installer le module associé. Je vous rappelle qu’un module contient plusieurs ressources DSC.

On changera le commandlet « Find-Module » par « Find-DscResource » qui permet vraiment de rechercher du contenu exclusif à DSC. Voici un exemple, toujours IIS pour vous montrer que le résultat est différent qu’une simple recherche de modules :

Find-DscResource | ?{ $_.Name -like "*IIS*" }

powershell-dsc-find-module-4

III. Comment lister les ressources disponibles ?

Pour lister les ressources disponibles sur votre serveur, vous pouvez exécuter la commande ci-dessous, et vous verrez également le nom du module qui contient cette ressource.

Get-DscResource

Vous verrez ainsi les ressources locales, ce qui correspond à ce que contient votre repository de modules local.

powershell-dsc-find-module-5

IV. Comment installer un module ?

Dès lors que vous aurez identifié un module à installer, on va s’appuyer sur le commandlet « Install-Module » pour récupérer le module PowerShell. Prenons par exemple le module « cMDT » qui permet d’obtenir des ressources pour Microsoft Deployment Toolkit (MDT), on l’installera via cette commande :

Install-Module -Name cMDT

L’installation devrait se réaliser en quelques secondes, et ensuite peut lister nos ressources disponibles pour voir que nous avons bien de nouvelles ressources provenant du module cMDT :

powershell-dsc-find-module-6

V. Comment importer un module GitHub ?

Si vous avez repéré un module sur GitHub, ce qui peut être le cas du module cSNMP développé par Fabien Dibot, on peut l’installer depuis la PSGallery s’il est disponible, sinon il faudra tout d’abord le télécharger sur GitHub, vous obtiendrez une archive ZIP.

Télécharger le module cSNMP

Le fichier ZIP contient un répertoire nommé « master-cSNMP » il va falloir l’extraire dans le répertoire des modules PowerShell définit sur votre machine. Plutôt, j’aurais dû dire au sein d’un des répertoires définit pour le stockage des modules car il n’y en a généralement pas qu’un seul.

Dans une console PowerShell, vous pouvez lister les répertoires disponibles pour stocker vos modules avec :

$env:PSModulePath

Par défaut, il y a 3 emplacements différents, pour que soit accessibles par tous les utilisateurs du serveur, on pourra stocker les modules dans : C:\Program Files\WindowsPowerShell\Modules

powershell-dsc-find-module-7

Il suffit d’extraire le contenu du ZIP dans le répertoire, puis, dans le cas de ce module renommez le répertoire en « cSNMP » pour qu’il soit correctement reconnu. Vous remarquerez au passage que le module « cMDT » est également présent.

Finalement, l’installation d’un module consiste à télécharger le dossier contenant les fichiers du module, et de positionner le dossier dans un de vos répertoires disponibles pour stocker les modules (et référencés dans $PSModulePath).

Voilà, ce chapitre ce termine, vous êtes maintenant en mesure d’installer de nouveaux modules pour profiter de ressources DSC supplémentaires sur votre serveur.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail