Editing an already imported module
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.
Farrukh Waheed
Updated on July 03, 2020Comments
-
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
, howeverT1
is still working. How can I edit my already imported module such that changes are available immediately.