PowerShell : Tester la présence d’un module

I. Présentation

Être capable de tester la présence d'un module sur une machine avant d'exécuter un script qui doit l'utiliser, ça me semble important. Directement au sein de votre script, ceci peut vous permettre de déclencher l'installation d'un module si ce dernier est manquant.

Je vous propose une méthode simple et fonctionnelle au sein de cet article, mais je suis sûr qu'il y en a d'autres... Alors n'hésitez pas à partager en commentaire la votre 🙂

II. Utiliser PowerShell pour tester la présence d'un module

Un commandlet nommé "Get-Module" permet d'obtenir différentes informations sur les modules. Si l'on exécute cette commande sans option, on obtient la liste des modules chargés dans la session courante. Ce qui est intéressant c'est de l'exécuter avec le paramètre ListAvailable pour obtenir la liste des modules chargés ainsi que les autres disponibles sur le système.

Get-Module -ListAvailable

Ce qui retournera une sortie de ce type :

ModuleType Version Name ExportedCommands 
---------- ------- ---- ---------------- 
Manifest 1.0.0.0 AppBackgroundTask {Disable-AppBackgroundTaskDiagnosticLog, Enable-AppBackgroundTaskDiagnosticLog, Set-AppBackgroundTaskResourc...
Manifest 2.0.0.0 AppLocker {Get-AppLockerFileInformation, Get-AppLockerPolicy, New-AppLockerPolicy, Set-AppLockerPolicy...} 
Manifest 1.0.0.0 AppvClient {Add-AppvClientConnectionGroup, Add-AppvClientPackage, Add-AppvPublishingServer, Disable-Appv...} 
Manifest 2.0.0.0 Appx {Add-AppxPackage, Get-AppxPackage, Get-AppxPackageManifest, Remove-AppxPackage...} 
Script 1.0.0.0 AssignedAccess {Clear-AssignedAccess, Get-AssignedAccess, Set-AssignedAccess} 
Manifest 1.0.0.0 BitLocker {Unlock-BitLocker, Suspend-BitLocker, Resume-BitLocker, Remove-BitLockerKeyProtector...} 
Manifest 2.0.0.0 BitsTransfer {Add-BitsFile, Complete-BitsTransfer, Get-BitsTransfer, Remove-BitsTransfer...} 
Manifest 1.0.0.0 BranchCache {Add-BCDataCacheExtension, Clear-BCCache, Disable-BC, Disable-BCDowngrading...}

Maintenant si l'on veut exploiter cette commande pour vérifier la présence d'un module spécifique, on va ajouter le paramètre "Name". Admettons que l'on cherche à vérifier la présence du module "NTFSSecurity", voici la commande :

Get-Module -ListAvailable -Name NTFSSecurity

Si le module n'est pas présent sur la machine, il n'y aura pas d'erreur visible retournée, alors que s'il est présent vous aurez un tableau en retour.

Enfin, si l'on veut tester la présence d'un module de manière conditionnelle, on exécutera ce bout de code :

if (Get-Module -ListAvailable -Name NTFSSecurity) {
    Write-Output "Module exists"
} else {
    Write-Output "Module does not exist"
}

On peut très bien ajouter à la suite de "Module does not exist" la commande pour l'installer au cas où il est manquant. Par exemple, cette commande permet de l'installer en toute transparence :

Install-Module NTFSSecurity -Confirm:$false -Force

Ensuite, si vous ré-exécutez le bloc script qui permet de vérifier la présence du module, il devrait vous dire qu'il est désormais disponible 🙂

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian a publié 1592 articles sur IT-Connect.See all posts by florian

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *