Sophie vous montre un poste équipé d’une machine très spécialisée, absente du reste de l’atelier : « Certains outils ne sont pas installés partout par défaut. Il faut les faire venir avant de pouvoir s’en servir. » C’est exactement le rôle d’un module en PowerShell : un ensemble de fonctions et de cmdlets, packagées ensemble, qu’on charge à la demande.
Un module, c’est quoi concrètement
Un module regroupe des fonctions (comme celles écrites en section 5), des cmdlets, parfois des variables et des données de configuration, le tout dans un ou plusieurs fichiers. Les fonctions natives que vous utilisez depuis le début de cette formation (Get-Process, Get-Service…) appartiennent elles-mêmes à des modules déjà chargés par défaut au démarrage de PowerShell.
Pour lister les modules actuellement chargés dans votre session :
Get-ModulePour lister tous les modules disponibles sur votre machine, même ceux pas encore chargés :
Get-Module -ListAvailableImporter un module
La plupart des modules se chargent automatiquement dès qu’on utilise une de leurs cmdlets, grâce à un mécanisme appelé auto-loading, actif depuis PowerShell 3.0. Mais on peut aussi forcer le chargement explicitement :
Import-Module -Name ActiveDirectoryOn utilisera cette cmdlet dès la prochaine leçon avec le module ActiveDirectory, indispensable pour automatiser la gestion des comptes à l’échelle de toute l’entreprise Nordika, au-delà des comptes locaux vus en 4.4.
Où PowerShell cherche-t-il ses modules ?
PowerShell explore automatiquement une liste de dossiers définie dans la variable d’environnement $env:PSModulePath — un bon prolongement concret du Provider Env: vu en 4.1 :
$env:PSModulePath -split ";"Sous Windows, on y retrouve généralement trois emplacements principaux : les modules système (C:\Program Files\WindowsPowerShell\Modules), les modules installés pour tous les utilisateurs, et un dossier propre à l’utilisateur courant (Documents\WindowsPowerShell\Modules).
Installer un module depuis la PowerShell Gallery
Au-delà des modules déjà présents sur votre machine, la PowerShell Gallery est le dépôt officiel Microsoft de modules communautaires et professionnels, un peu l’équivalent du PyPI pour Python ou du npm pour JavaScript :
Install-Module -Name Az -Scope CurrentUser-Scope CurrentUser installe le module uniquement pour votre compte, sans nécessiter de droits administrateur — recommandé pour l’apprentissage, avant de généraliser à toute une machine en environnement de production.
Source officielle : la PowerShell Gallery référence plusieurs dizaines de milliers de modules publics, chacun avec son nombre de téléchargements et ses versions publiées — un bon indicateur de fiabilité avant d’installer un module tiers sur un poste de production. Pour un module publié par Microsoft lui-même (comme
AzouMicrosoft.Graph), l’éditeur apparaît explicitement comme vérifié sur la fiche du module.
Retirer un module de la session
Remove-Module -Name ActiveDirectoryCette action décharge le module de la session en cours, sans le désinstaller de la machine (pour ça, Uninstall-Module).
Un exemple concret Nordika
if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
Write-Warning "Le module ActiveDirectory n'est pas installé sur ce poste."
Write-Warning "Installez les RSAT (Remote Server Administration Tools) avant de continuer."
} else {
Import-Module -Name ActiveDirectory
Write-Output "Module ActiveDirectory chargé avec succès"
}Retour d’expérience terrain : un piège fréquent chez les administrateurs qui débutent avec
ActiveDirectoryen particulier : le module ne s’installe pas viaInstall-Module, mais dépend de l’installation des RSAT (Remote Server Administration Tools) sur un poste Windows client, ou du rôle AD DS sur un serveur. Un script qui suppose queInstall-Module ActiveDirectoryva fonctionner échouera systématiquement — c’est le sujet précis de la prochaine leçon.
Retenez le principe général : un module, c’est un ouvrier spécialisé qu’on fait venir dans l’atelier Nordika seulement quand le ticket du jour en a besoin — inutile de charger tous les outils disponibles en permanence, PowerShell ne charge que ce qui est réellement utilisé.
Dans la prochaine leçon, on s’attaque au module le plus stratégique pour un service IT d’entreprise : ActiveDirectory.