PowerShell est un langage de script phénoménal et robuste. Cependant, pour libérer son potentiel, vous devez savoir comment importer les modules appropriés.
Dans ce tutoriel, vous apprendrez tout ce dont vous avez besoin pour importer des modules PowerShell comme un professionnel. Avec une compréhension approfondie des cmdlets, des paramètres et des modules, vous pouvez créer des scripts plus rapides, plus efficaces et plus performants que jamais.
Lisez la suite pour améliorer considérablement vos compétences PowerShell et élever votre jeu de script à de nouveaux sommets!
Prérequis
Ce tutoriel sera une démonstration pratique. Pour suivre, assurez-vous d’avoir un système avec PowerShell installé. Ce tutoriel utilise Windows 10 et PowerShell 5.1 comme exemple, mais les mêmes commandes devraient fonctionner avec la plupart des versions de Windows et de PowerShell.
Importation d’un seul module
Les modules PowerShell contiennent du code pré-construit que vous pouvez utiliser dans vos scripts PowerShell, vous faisant gagner du temps et des efforts. Lorsque vous importez des modules PowerShell, vous tirez parti de codes pré-construits au lieu de partir de zéro.
Mais comment importe-t-on des modules PowerShell? Le Import-Module
est la principale commande pour importer des modules dans PowerShell. Importer un seul module est l’une des utilisations les plus basiques de la commande Import-Module
, ce qui est la première chose que vous apprendrez dans ce tutoriel.
Ouvrez PowerShell en tant qu’administrateur, et exécutez la commande Import-Module
ci-dessous pour rechercher le module PSDiagnostics
et le charger en mémoire. Si cela réussit, le module sera importé, mais la commande ne produira pas de sortie.
Importer des modules à partir de dépôts en ligne via la commande Install-Module est vivement recommandé dès que possible. Cette commande prend en charge les dépendances et la gestion des versions pour vous.
Une fois que vous avez importé le module, vous pouvez utiliser n’importe quelles des cmdlets ou fonctions du module pour vous aider à diagnostiquer et résoudre les problèmes. La cmdlet Enable-PSTrace
est juste un exemple des cmdlets fournies par le module PSDiagnostics, qui permet de faire du suivi de diagnostic dans PowerShell.
Maintenant, exécutez la commande Enable-PSTrace
suivante pour effectuer un suivi de diagnostic et enregistrer les résultats dans le -TraceFilePath
spécifié (C:\\MyTrace.log
). Cette commande ne fournit pas de sortie à la console car les résultats sont enregistrés dans un fichier.
Certains modules peuvent nécessiter une configuration ou une installation supplémentaire avant de pouvoir les utiliser. Assurez-vous de lire la documentation fournie avec le module pour comprendre les prérequis ou les exigences.
Importation de plusieurs modules à la fois
L’importation d’un seul module fonctionne bien. Mais lorsque vous avez souvent besoin d’importer plusieurs modules en une seule fois, la tâche est également à la portée de la cmdlet Import-Module
.
L’importation de plusieurs modules est un excellent moyen d’économiser du temps et des efforts dans PowerShell. Mais comment exactement? Vous spécifierez les noms des modules séparés par des virgules.
Exécutez la commande ci-dessous pour rechercher plusieurs modules (Dism, PowerShellGet, PSReadline
) et chargez-les en mémoire. Tout comme l’importation d’un seul module, cette commande ne fournit pas de sortie.
Affichage des détails d’importation de module
Comme mentionné précédemment, l’importation réussie d’un module ne fournit pas de sortie. Mais avouez-le. Vous seriez sceptique quant à savoir si le module a effectivement été importé ou non.
Le paramètre -Verbose
est une option utile que vous pouvez utiliser avec de nombreux cmdlets et fonctions PowerShell, y compris le cmdlet Import-Module
. Ce paramètre indique à PowerShell d’afficher des informations détaillées sur la commande pendant son exécution. En retour, vous obtenez des commentaires précieux que vous pouvez utiliser pour le dépannage et le débogage.
Exécutez la commande suivante pour importer le module \href{https://learn.microsoft.com/en-us/powershell/module/smbshare}{SmbShare}, en ajoutant le paramètre \code{-Verbose} pour afficher les détails de l’importation du module.
Comme vous pouvez le voir ci-dessous, le paramètre \code{-Verbose} fournit des informations détaillées sur le fichier de module chargé et les différentes fonctions importées à partir du module. Ces informations peuvent aider à comprendre le fonctionnement interne du module.
Dans ce cas, le module \code{SmbShare} fournit des cmdlets pour gérer les partages SMB sur les machines Windows. Ces cmdlets comprennent, entre autres, \href{https://learn.microsoft.com/en-us/powershell/module/smbshare/new-smbshare}{New-SmbShare} (création de nouveaux partages) et \href{https://learn.microsoft.com/en-us/powershell/module/smbshare/remove-smbshare}{Remove-SmbShare} (suppression de partages existants).

Réimportation d’un module dans la même session
Que votre module rencontre des problèmes ou que vous souhaitiez simplement vous assurer d’utiliser la version la plus récente de votre module, réimporter un module PowerShell est bénéfique. Comment ? En ajoutant le paramètre \code{-Force} à la commande \code{Import-Module}.
Cette option -Force
vous permet de continuer à utiliser les cmdlets et les fonctions fournies par le module sans avoir à fermer et rouvrir votre session PowerShell.
Un cas d’utilisation courant pour réimporter un module est lors du développement et de la modification d’un module. Vous pouvez réimporter le module dans votre session en cours pour tester ces modifications avant de les finaliser.
Exécutez la commande suivante pour forcer PowerShell à supprimer et réimporter le module SmbShare
depuis son emplacement d’origine.
Le paramètre -Prefix
vous permet de spécifier un préfixe pour les cmdlets et les fonctions importées à partir du module. Dans ce cas, tous les cmdlets et fonctions importés seront précédés de New
. Ce paramètre peut être utile pour éviter les conflits avec les cmdlets ou fonctions existants dans votre session.
Par exemple, le cmdlet Get-SmbShare
dans le module d’origine deviendra Get-NewSmbShare
dans le module réimporté.
Maintenant, exécutez la commande Get-Command ci-dessous pour récupérer une liste de tous les cmdlets et fonctions fournis par le module SmbShare sélectionné (Select-Object) par Nom.
Ci-dessous, vous pouvez voir que les cmdlets du module SmbShare ont maintenant le préfixe New ajouté à leur nom. Cette sortie confirme que le module a été réimporté avec succès.

Utilisation de packages NuGet pour importer manuellement des modules PowerShell
Jusqu’à présent, vous avez importé avec succès des modules depuis la galerie PowerShell. Mais que faire si le module que vous recherchez n’est pas là ?
Vous pouvez installer et importer manuellement des modules PowerShell à partir d’un package NuGet. Dans le contexte PowerShell, un package NuGet est une collection de fichiers qui incluent un module PowerShell ainsi que tous les modules ou bibliothèques dépendants nécessaires au fonctionnement du module.
Pour importer un module à partir d’un package NuGet, vous devez télécharger, extraire et installer manuellement le package NuGet avec les étapes suivantes :
1. Accédez à la page de la galerie PowerShell Azure PowerShell Gallery du module Az.Automation.
2. Ensuite, cliquez sur l’onglet Téléchargement manuel → Télécharger le fichier nupkg brut pour télécharger le package. Ce tutoriel utilise le module Az.Automation 1.9.1 de la galerie PowerShell Azure à titre d’exemple. Mais les mêmes étapes s’appliquent à d’autres packages NuGet.

3. Une fois téléchargé, exécutez la commande Unblock-File
ci-dessous, qui ne fournit pas de sortie, mais débloque le fichier .nupkg téléchargé. Assurez-vous de modifier le chemin d’accès du fichier avec celui où vous avez téléchargé le package.
Débloquer le package est nécessaire. Pourquoi ? PowerShell peut ne pas autoriser l’exécution de fichiers téléchargés depuis Internet comme mesure de sécurité pour éviter l’exécution de scripts potentiellement dangereux
4. Maintenant, décompressez le fichier .nupkg téléchargé dans un dossier sur votre machine locale. Vous pourriez avoir besoin d’un outil de compression/décompression tel que 7-zip ou WinRAR pour décompresser le package. Un package NuGet est une archive ZIP contenant une collection de fichiers qui constituent un module.
5. Supprimez les contenus suivants du dossier extrait.
Les contenus extraits d’un package NuGet comprennent des métadonnées et des fichiers qui ne sont pas nécessaires pour l’installation manuelle du module.
Name | Type |
---|---|
_rels | Folder |
Package | Folder |
[Content_Types].xml | XML File |
Az.Automation.nuspec | XML Manifest File |

6. Renommez votre dossier extrait avec un nom plus descriptif tel que az.automation pour éviter tout erreur éventuelle. N’oubliez pas de garder toutes les lettres en minuscules et d’éviter d’utiliser des caractères spéciaux dans son nom.
7. Ensuite, exécutez la commande $env:PSModulePath
ci-dessous pour trouver les chemins de vos modules shell actuels. Cette commande renvoie une liste de tous les chemins de modules par défaut sur votre système. PowerShell recherche ces chemins pour charger automatiquement les modules lorsque le nom du module est spécifié dans un script ou une commande.
Prenez note des chemins, car vous en aurez besoin à l’étape suivante.

8. Copiez le dossier nouvellement nommé (az.automation) dans l’un des répertoires que vous avez notés à l’étape sept. Ce faisant, vous définissez la portée du module (spécifique ou tous les utilisateurs).
Path | Function |
---|---|
C:\Users\admin\Documents\WindowsPowerShell\Modules | Makes the module available for the specific user account (admin). This tutorial uses this location as an example. |
C:\Program Files\WindowsPowerShell\Modules | Makes the module available for all user accounts on your local machine. |
9. Maintenant, exécutez la commande ci-dessous pour installer et importer le module (az.automation) dans votre session PowerShell. Assurez-vous de remplacer az.automation par le nom réel de votre module.

10. Enfin, exécutez la commande suivante Get-Module pour vérifier si le module (az.automation) a été importé avec succès.

Peut-être ne voulez-vous pas vous fier à la découverte automatique. Si tel est le cas, spécifiez l’emplacement exact du fichier (C:\az.automation) lors de l’importation du module.

Conclusion
Avec des fonctions conjoignes ou du code regroupé, les modules PowerShell changent la donne. Et dans ce tutoriel, vous avez appris de nombreuses façons d’importer des modules PowerShell dans vos sessions, y compris l’importation manuelle de modules à partir d’un package NuGet. Vous avez également abordé différents paramètres contrôlant le processus d’importation.
En maîtrisant ces techniques, vous pouvez facilement importer et utiliser des modules pour améliorer vos scripts d’automatisation. Mais l’apprentissage ne doit pas s’arrêter là. Pourquoi ne pas pousser vos compétences en gestion de modules PowerShell au niveau supérieur en apprenant à exporter les membres du module?
Source:
https://adamtheautomator.com/import-powershell-modules/