Editing an already imported module

20,225

Solution 1

Once a module has been imported, changes to it are not recognised since the module is loaded into memory. However, I've always been able to do a Remove-Module foo, followed by an Import-Module foo to load new functions.

All that said, your PSD1 file doesn't look right. It should have a ModuleToProcess field set to 'MyModule.psm1'. Then when you do Import-Module MyModule or Import-Module .\mymodule.psd1, PowerShell will find & load the associated MyModule.psm1 file. I wonder if that is causing you to run afoul of some caching PowerShell does?

Solution 2

Use the -Force command with the Import-Module and it will reload it.

Share:
20,225
Farrukh Waheed
Author by

Farrukh Waheed

Updated on July 03, 2020

Comments

  • Farrukh Waheed
    Farrukh Waheed almost 4 years

    Before importing my powershell module (MyModule.psm1), I have written one function in it:

    Function T1()
    {
        Write-Host "T1 is just called" -ForegroundColor red
    }
    

    In my MyModule.psd1:

    @{
        PowerShellVersion = '2.0'
        PowerShellHostName = ''
        PowerShellHostVersion = '2.0'
        RequiredModules = @()
        ScriptsToProcess = @()
        NestedModules = @()
        FunctionsToExport = '*'
        CmdletsToExport = '*'
        VariablesToExport = '*'
        ModuleList = @()
        FileList = @()
    }
    

    This is imported fine, when I copied both files in:

    C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule

    and I'm able to run T1 in my PowerShell session. But now I wanted to add a new function in same module i.e.:

    Function T2()
    {
        Write-Host "Its now T2.." -ForegroundColor red
    }
    

    Even after restarting my PowerShell session, it never recognize T2, however T1 is still working. How can I edit my already imported module such that changes are available immediately.