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.
Use the
-Force
command with theImport-Module
and it will reload it.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 anImport-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 doImport-Module MyModule
orImport-Module .\mymodule.psd1
, PowerShell will find & load the associatedMyModule.psm1
file. I wonder if that is causing you to run afoul of some caching PowerShell does?