Nous utilisons certains modules PowerShell dans un script PowerShell de déploiement. En utilisant la commande suivante, nous installons le module (c'est-à-dire XXXX) dans "C:\Program Files\WindowsPowerShell\Modules".
Install-Module -Name "XXXX" -AllowClobber -RequiredVersion "XXXX" -Repository "XXXX" -Scope AllUsers
Maintenant, une fois que nous avons utilisé la fonctionnalité de ce module, nous le désinstallons à la fin du script de déploiement à l'aide de la commande suivante.
Remove-Module -Name "XXXX" -force
Uninstall-Module -Name "XXXX" -AllVersions -force
Mais cette commande de désinstallation du module donne l'erreur suivante.
WARNING: The version '###' of module 'XXXX' is currently in use. Retry the operation after closing the
applications.
PackageManagement\Uninstall-Package : Module 'XXXX' is in currently in use.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2046 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Packag
e], Exception
+ FullyQualifiedErrorId : ModuleIsInUse,Uninstall-Package,Microsoft.PowerShell.PackageManagement.Cmdlets.Uninstall
Package
Quelqu'un at-il une idée pour résoudre ce problème?
Le problème pourrait être que votre session PowerShell existante "verrouille" le module en chargeant des éléments possibles de celui-ci (tels que des variables globales ou des constantes) même si vous essayez de le décharger (Remove-Module
).
Le moyen le plus propre de vous assurer qu'il n'est pas verrouillé est de quitter la session PowerShell. Si vous devez conserver la session pour faire des "trucs" par la suite, essayez de démarrer une nouvelle session PowerShell (session imbriquée) juste avant d'utiliser le module, puis quittez-le à la fin.