我有一个 psake 任务,如下所示(为清楚起见,已简化):
Task Invoke-Deploy {
Import-Module "somefunctions.psm1"
Import-Module "morefunctions.psm1"
Set-Something #This is a function defined in morefunctions.psm1
}
函数 Set-Something(在模块 morefunctions.psm1 中定义)尝试调用函数 Get-Something(在 somefunctions.psm1 中定义)。当它发生时,我得到一个错误:
术语“Get-Something”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
有趣的是,我将“morefunctions.psm1”修改为“Import-Module”somefunctions.psm1”,此时一切正常。但是,我宁愿不必这样做,因为我希望我的模块是“松散耦合”的,因为它们不需要依赖其他模块的存在。
我对 Powershell 中函数/变量范围的了解有限,但我认为两个不同导入模块中的函数位于同一范围内,因此其中一个模块中的函数将能够调用另一个模块中的函数。
我怀疑该范围受到我在 psake 任务中这一事实的影响,我希望这里的人可以确认这一点,并建议我应该如何解决这个问题。TIA。