web-dev-qa-db-fra.com

Modification d'un module déjà importé

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.

28
Farrukh Waheed

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?

29
Keith Hill

Utilisez le -Force avec la commande Import-Module et il le rechargera.

47
Alex Kwitny