在导入我的powershell模块(MyModule.psm1)
之前,我已经写了一个函数:
Function T1()
{
Write-Host "T1 is just called" -ForegroundColor red
}
在我的MyModule.psd1
:
@{
PowerShellVersion = '2.0'
PowerShellHostName = ''
PowerShellHostVersion = '2.0'
RequiredModules = @()
ScriptsToProcess = @()
NestedModules = @()
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
ModuleList = @()
FileList = @()
}
当我将两个文件复制到:
时,导入正常 C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule
我可以在PowerShell会话中运行T1
。但现在我想在同一个模块中添加一个新功能,即:
Function T2()
{
Write-Host "Its now T2.." -ForegroundColor red
}
即使在重新启动PowerShell会话后,它也永远无法识别T2
,但T1
仍然有效。如何编辑已导入的模块,以便立即进行更改。
答案 0 :(得分:46)
将-Force
命令与Import-Module
一起使用,然后重新加载。
答案 1 :(得分:29)
导入模块后,由于模块已加载到内存中,因此无法识别对模块的更改。但是,我始终能够执行Remove-Module foo
,然后使用Import-Module foo
来加载新功能。
所有这一切,你的PSD1文件看起来不正确。它应该将ModuleToProcess
字段设置为“MyModule.psm1”。然后当您执行Import-Module MyModule
或Import-Module .\mymodule.psd1
时,PowerShell会找到&加载关联的MyModule.psm1
文件。我想知道这是否会导致您与PowerShell的某些缓存相冲突?
答案 2 :(得分:0)
以下是到目前为止唯一对我有用的解决方案,在configure vscode to run a new session on each debug中,我没有找到其他解决方案来工作和调试Powershell类。