web-dev-qa-db-fra.com

Comment forcer powershell à recharger un module personnalisé?

J'ai créé un module 'ActiveDirectory.psm1' qui contient une classe dans powershellv5. J'importe ce module dans un autre fichier appelé 'test.ps1', puis j'appelle une méthode de la classe.

test.ps1 contient les éléments suivants:

using module '\\ser01\Shared\Scripts\Windows Powershell\modules\ActiveDirectory\ActiveDirectory.psm1'

Set-StrictMode -version Latest;

$AD = [ActiveDirectory]::New('CS');
$AD.SyncGroupMembership($True);

Tout fonctionne comme prévu MAIS lorsque je modifie ActiveDirectory.psm1 et enregistre les modifications qui ne sont pas reflétées immédiatement. c'est-à-dire si ActiveDirectory.psm1 contient:

write-verbose 'do something';

Si je change cela en 

write-verbose 'now the script does something else';

la sortie reste "faire quelque chose"

J'imagine qu'il a stocké le module en mémoire et ne le recharge pas. Par conséquent, il manque les modifications apportées. Quelle commande dois-je exécuter pour charger la version sauvegardée la plus récente du module?

20
S. Mitchell

Comme suggéré par wOxxOm try Import-Module ... -Force ou si cela ne fonctionne pas, essayez de le supprimer explicitement avec Remove-Module et de le réimporter.

Je viens de créer la réponse afin que la question puisse être fermée si elle est résolue - si wOxxOm créera une réponse, je supprimerai celle-ci.

35
DAXaholic

Pour toute autre personne rencontrant ce problème, voir https://github.com/PowerShell/PowerShell/issues/2505

Il semble qu’il existe depuis longtemps un bogue concernant l’importation de modules dont la complexité est supérieure au niveau rudimentaire (par exemple, j’ai un module avec une classe et une méthode de classe qui ne parvient pas à se mettre à jour). 

2
Matthew Heimlich

Module d'importation 'E:\xxx.ps1' -Force

1