about_Modules
Description courte
Explique comment installer, importer et utiliser des modules PowerShell.
Description longue
PowerShell est un langage de script et un interpréteur de commandes. Le langage est composé de mots clés, qui fournissent la structure et la logique de traitement, et de commandes qui effectuent le travail. Les commandes dans PowerShell sont implémentées en tant que scripts, fonctions ou applets de commande.
Un module est une unité réutilisable autonome qui peut contenir des applets de commande, des fournisseurs, des fonctions, des variables et d’autres types de ressources pouvant être importées en tant qu’unité unique.
PowerShell est fourni avec un ensemble de modules de base. Vous pouvez également installer d’autres modules en fonction des besoins. Par défaut, les modules installés sont chargés automatiquement la première fois que vous utilisez une commande à partir d’un module. Utilisez la $PSModuleAutoloadingPreference
variable pour activer, désactiver et configurer le chargement automatique des modules. Pour plus d’informations, consultez about_Preference_Variables.
Vous pouvez décharger ou recharger pendant une session. Utilisez l’applet Remove-Module
de commande pour décharger un module de votre session. Utilisez l’applet Import-Module
de commande pour charger un module.
Les modules peuvent être créés en tant qu’assemblys .NET compilés écrits en C#, ou en tant que modules basés sur des scripts écrits dans PowerShell. Cette rubrique explique comment utiliser des modules PowerShell. Pour plus d’informations sur l’écriture de modules PowerShell, consultez Écriture d’un module PowerShell.
Notes
Avant PowerShell 3.0, les applets de commande et les fournisseurs étaient empaquetés dans des composants logiciels enfichables PowerShell. À compter de PowerShell 3.0, le composant logiciel enfichable Microsoft.PowerShell.Core est ajouté à chaque session par défaut. Il s’agit du seul composant logiciel enfichable restant dans PowerShell. Tous les autres composants logiciels enfichables ont été convertis en modules. La création de nouveaux composants logiciels enfichables n’est plus prise en charge.
Installer un module publié
Un module publié est un module disponible à partir d’un dépôt inscrit, tel que le PowerShell Gallery. Les modules PowerShellGet et Microsoft.PowerShell.PSResourceGet fournissent des applets de commande permettant de rechercher, d’installer et de publier des modules PowerShell dans un référentiel inscrit.
Le module PowerShellGet est inclus dans PowerShell 5.0 et versions ultérieures. Le module Microsoft.PowerShell.PSResourceGet est inclus dans PowerShell 7.4 et versions ultérieures. Microsoft.PowerShell.PSResourceGet est le nouveau gestionnaire de package préféré pour PowerShell et peut être installé sur les versions précédentes de PowerShell. Utilisez l’applet Install-Module
de commande ou Install-PSResource
pour installer des modules à partir du PowerShell Gallery.
Get-Command Install-Module, Install-PSResource
CommandType Name Version Source
----------- ---- ------- ------
Function Install-Module 2.9.0 PowerShellGet
Cmdlet Install-PSResource 1.0.0 Microsoft.PowerShell.PSResourceGet
Pour plus d’informations, consultez PowerShellGet Overview.
Installer manuellement un module
Si vous recevez un module en tant que dossier contenant des fichiers, vous devez l’installer sur votre ordinateur avant de pouvoir l’utiliser dans PowerShell.
PowerShell est fourni avec plusieurs modules préinstallés. Sur les ordinateurs Windows, de nombreuses fonctionnalités Windows incluent des modules pour la gestion de la fonctionnalité. Ces modules sont installés lorsque la fonctionnalité est installée. D’autres modules peuvent être fournis dans un programme d’installation ou d’installation qui installe le module.
Par défaut, le Modules
dossier de l’utilisateur actuel n’existe pas. Si vous avez installé un module dans l’étendue à l’aide CurrentUser
Install-Module
de ou Install-PSResource
, ces applets de commande créent le Modules
dossier pour l’utilisateur actuel. Si le dossier n’existe pas, vous pouvez le créer manuellement.
Utilisez la commande suivante pour créer un Modules
dossier pour l’utilisateur actuel :
$folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules
Copiez l’intégralité du dossier de module dans le nouveau dossier créé. Dans PowerShell, utilisez l’applet de Copy-Item
commande . Par exemple, exécutez la commande suivante pour copier le MyModule
dossier à partir du C:\PSTest
dossier que vous venez de créer :
Copy-Item -Path C:\PSTest\MyModule -Destination $folder
Vous pouvez installer vos modules n'importe où, mais nous vous recommandons de les installer dans un emplacement de module par défaut pour faciliter leur gestion. Pour plus d’informations sur les emplacements de module par défaut, consultez about_PSModulePath.
Chargement automatique des modules
La première fois que vous exécutez une commande à partir d’un module installé, PowerShell importe automatiquement (charge) ce module. Le module doit être stocké dans les emplacements spécifiés dans la variable d’environnement $env:PSModulePath
. Les modules dans d’autres emplacements doivent être importés à l’aide de l’applet de Import-Module
commande.
Le chargement automatique des modules vous permet d’utiliser des commandes dans un module sans configuration de configuration ou de profil. Il n’est pas nécessaire de gérer les modules après les avoir installés sur votre ordinateur.
Chacun des exemples suivants entraîne l’importation du module CimCmdlets , qui contient Get-CimInstance
, dans votre session.
Exécuter la commande
Get-CimInstance Win32_OperatingSystem
Obtenir la commande
Get-Command Get-CimInstance
Obtenir de l’aide pour la commande
Get-Help Get-CimInstance
Vous pouvez utiliser la Get-Command
liste des commandes dans tous les modules installés, même si elles ne sont pas encore dans la session. Lorsque vous utilisez Get-Command
avec un caractère générique (*
), PowerShell n’importe aucun module. Vous pouvez utiliser des caractères génériques pour la découverte de commandes sans charger les modules dont vous n’avez peut-être pas besoin dans votre session.
En outre, les commandes qui utilisent des fournisseurs PowerShell n’importent pas automatiquement un module. Par exemple, si vous utilisez une commande qui nécessite le WSMan:
lecteur, comme l’applet Get-PSSessionConfiguration
de commande, vous devrez peut-être exécuter l’applet de Import-Module
commande pour importer le module Microsoft.WSMan.Management qui inclut le WSMan:
lecteur.
Importer manuellement un module
L’importation manuelle d’un module est requise lorsqu’un module n’est pas installé dans les emplacements spécifiés par la $env:PSModulePath
variable d’environnement, ou lorsque le module est fourni en tant que fichier ou .psm1
autonome.dll
, plutôt qu’un module empaqueté.
Vous pouvez également modifier la façon dont le module est importé dans votre session. Par exemple, le paramètre Préfixe de Import-Module
ajoute un préfixe distinctif à la partie substantif des applets de commande importées à partir du module. Le paramètre NoClobber empêche le module d’ajouter des commandes qui masqueraient ou remplaceraient des commandes existantes dans la session. Pour plus d’informations, consultez Gérer les conflits de noms.
Vous pouvez importer un module installé dans votre $env:PSModulePath
en spécifiant le nom du module. Par exemple, la commande suivante importe le module BitsTransfer dans la session active.
Import-Module BitsTransfer
Pour importer un module qui n’est pas dans votre $env:PSModulePath
, utilisez le chemin complet du dossier du module. Par exemple, pour ajouter le module TestCmdlets dans le C:\ps-test
répertoire à votre session, tapez :
Import-Module C:\ps-test\TestCmdlets
Pour importer un fichier de module qui n’est pas contenu dans un dossier de module, utilisez le chemin complet du fichier de module dans la commande . Par exemple, pour ajouter le module TestCmdlets.dll dans le C:\ps-test
répertoire à votre session, tapez :
Import-Module C:\ps-test\TestCmdlets.dll
Pour plus d’informations sur l’ajout de modules à votre session, consultez Import-Module.
Importer un module au début de chaque session
La Import-Module
commande importe des modules dans votre session PowerShell actuelle. Pour importer un module dans chaque session PowerShell que vous démarrez, ajoutez la Import-Module
commande à votre profil PowerShell.
Pour plus d'informations sur les profils, consultez about_Profiles.
Rechercher les modules installés
L’applet Get-Module
de commande obtient les modules PowerShell qui ont été importés dans votre session.
Get-Module
Les modules répertoriés peuvent inclure des modules qui ont été importés à partir de n’importe quel emplacement, pas seulement à partir de $env:PSModulePath
.
Utilisez la commande suivante pour répertorier les modules installés dans :$env:PSModulePath
Get-Module -ListAvailable
Cette commande obtient tous les modules installés dans $env:PSModulePath
, pas seulement les modules importés dans la session active. Cette commande ne répertorie pas les modules installés à d’autres emplacements.
Pour plus d’informations, consultez Get-Module.
Répertorier les commandes d’un module
Utilisez l’applet de Get-Command
commande pour rechercher toutes les commandes disponibles. Vous pouvez utiliser les paramètres de l’applet Get-Command
de commande pour filtrer des commandes telles que par module, nom et nom.
Pour trouver toutes les commandes dans un module, tapez :
Get-Command -Module <module-name>
Par exemple, pour rechercher les commandes dans le module BitsTransfer , tapez :
Get-Command -Module BitsTransfer
Pour plus d’informations sur l’applet de Get-Command
commande, consultez Get-Command.
Supprimer un module
Quand vous supprimez un module, les commandes ajoutées par le module sont supprimées de la session. Par exemple, la commande suivante supprime le module BitsTransfer de la session active.
Remove-Module BitsTransfer
Le fait de supprimer un module annule l'opération d'importation d'un module. La suppression d’un module ne désinstalle pas le module. Pour plus d’informations, consultez Remove-Module.
Des commandes peuvent être ajoutées à votre session à partir de modules et de composants logiciels enfichables. Les modules peuvent ajouter tous les types de commandes, y compris les applets de commande, les fournisseurs et les fonctions, ainsi que les éléments, tels que les variables, les alias et les lecteurs PowerShell. Les composants logiciels enfichables peuvent uniquement ajouter des applets de commande et des fournisseurs.
Avant de supprimer un module de votre session, utilisez les commandes suivantes pour déterminer le module à supprimer.
Par exemple, utilisez la commande suivante pour rechercher la source des applets de Get-Date
commande et Get-Help
:
Get-Command Get-Date, Get-Help -All |
Select-Object -Property Name, CommandType, Module ,PSSnapIn
La sortie suivante montre que l’applet Get-Help
de commande se trouve dans le composant logiciel enfichable Microsoft.PowerShell.Core . Ce composant logiciel enfichable ne peut pas être supprimé de la session.
Name CommandType Module PSSnapIn
---- ----------- ------ --------
Get-Date Function
Get-Date Cmdlet Microsoft.PowerShell.Utility
Get-Help Cmdlet Microsoft.PowerShell.Core
Il existe deux sources pour Get-Date
. L’une est une fonction et l’autre est une applet de commande dans le module Microsoft.PowerShell.Utility . Vous pouvez supprimer le module à l’aide de Remove-Module
. Pour supprimer la fonction, vous pouvez la supprimer du Function:
lecteur.
Remove-Item Function:Get-Date
Pour plus d’informations sur le Function:
lecteur, consultez about_Function_Provider.
Gérer les conflits de noms
Des conflits de noms se produisent quand plusieurs commandes portent le même nom dans la session. Quand vous importez un module, un conflit survient si les noms des commandes de ce module sont identiques à ceux de commandes ou d'éléments présents dans la session.
Import-Module
peut ajouter des commandes qui masquent et remplacent des commandes dans la session active. Les conflits de noms peuvent entraîner le masquage ou le remplacement de commandes. Le remplacement de commande se produit lorsque le module importé contient une commande portant le même nom qu’une commande existante dans la session. La commande nouvellement importée remplace est prioritaire sur la commande existante.
Par exemple, lorsqu’une session inclut une fonction et une applet de commande portant le même nom, PowerShell exécute la fonction par défaut. Quand la session inclut des commandes du même type avec le même nom, par exemple deux applets de commande avec le même nom, la commande la plus récemment ajoutée est exécutée par défaut.
Pour plus d’informations, notamment une explication des règles de priorité et des instructions pour l’exécution de commandes masquées, consultez about_Command_Precedence.
Vous pouvez exécuter une commande qui a été masquée ou remplacée en qualifiant le nom de la commande. Pour qualifier le nom de la commande, ajoutez le nom du module que contient la version de la commande souhaitée. Par exemple :
Microsoft.PowerShell.Utility\Get-Date
L’exécution Get-Date
avec le préfixe de nom de module garantit que vous exécutez la version à partir du module Microsoft.PowerShell.Utility .
Pour détecter les conflits de noms, utilisez le paramètre All de l’applet Get-Command
de commande. Par défaut, Get-Command
obtient uniquement les commandes qui s’exécutent lorsque vous tapez le nom de la commande. Le paramètre All obtient toutes les commandes portant le nom spécifique dans la session.
Pour éviter les conflits de noms, utilisez les paramètres NoClobber ou Préfixe de l’applet Import-Module
de commande. Le paramètre Préfixe ajoute un préfixe aux noms des commandes importées afin qu’elles soient uniques dans la session. Le paramètre NoClobber n’importe aucune commande qui masque ou remplace des commandes existantes dans la session.
Vous pouvez également utiliser les paramètres Alias, Applet de commande, Fonction et Variable de Import-Module
pour sélectionner uniquement les commandes à importer, et vous pouvez exclure les commandes qui provoquent des conflits de noms dans votre session.
Les auteurs de module peuvent empêcher les conflits de noms en utilisant la propriété DefaultCommandPrefix du manifeste du module pour ajouter un préfixe par défaut à tous les noms de commandes. La valeur du paramètre Prefix est prioritaire sur la valeur de DefaultCommandPrefix.