Avant d'importer mon module PowerShell (MyModule.psm1)
, J'y ai écrit une fonction:
Function T1()
{
Write-Host "T1 is just called" -ForegroundColor red
}
Dans mon MyModule.psd1
:
@{
PowerShellVersion = '2.0'
PowerShellHostName = ''
PowerShellHostVersion = '2.0'
RequiredModules = @()
ScriptsToProcess = @()
NestedModules = @()
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
ModuleList = @()
FileList = @()
}
C'est bien importé, quand j'ai copié les deux fichiers dans:
C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule
et je peux exécuter T1
dans ma session PowerShell. Mais maintenant, je voulais ajouter une nouvelle fonction dans le même module, à savoir:
Function T2()
{
Write-Host "Its now T2.." -ForegroundColor red
}
Même après avoir redémarré ma session PowerShell, il ne reconnaît jamais T2
, cependant T1
fonctionne toujours. Comment puis-je modifier mon module déjà importé de telle sorte que les modifications soient disponibles immédiatement.
Une fois qu'un module a été importé, les modifications ne sont pas reconnues car le module est chargé en mémoire. Cependant, j'ai toujours pu faire un Remove-Module foo
, suivi d'un Import-Module foo
pour charger de nouvelles fonctions.
Cela dit, votre fichier PSD1 ne semble pas correct. Il doit avoir un champ ModuleToProcess
défini sur 'MyModule.psm1'. Ensuite, lorsque vous faites Import-Module MyModule
ou Import-Module .\mymodule.psd1
, PowerShell trouvera et chargera le MyModule.psm1
fichier. Je me demande si cela vous amène à manquer de mise en cache de PowerShell?
Utilisez le -Force
avec la commande Import-Module
et il le rechargera.