我在模块中将其定义为defblah.ps1
$defblah= @{
first = "aaa";
seconf = "bbb";
}
我在模块中也有这个作为Blah.ps1
Function Blah
{
Write-Host $defblah.first;
}
我做了Export-ModuleMember
和Import-Module
,所以模块定义(导出、导入(的一切都很好。
然后,在导入之后,我运行Blah
,它打印";aaa";,这正是我所期望的。
问题是当我输入时
Write-Host $defblah.first;
它什么也不回。我如何才能使我的最后一句话发挥作用并返回"aaa"?
通常,我建议不要从模块导出变量,即使它在技术上是受支持的。
模块的隐式导出行为确实排除了变量-在PSv5+中,默认情况下仅导出函数和别名,这意味着不存在控制导出的Export-ModuleMember
和/或模块清单(*.psd1
(。
通常的期望是,模块导出命令(函数/Cmdlet,可能还有别名(,而不是数据(变量(-仅凭命令就足以引发名称冲突。
如果您确实希望从模块中导出变量,请使用带有-Variable
参数的Export-ModuleMember
调用和/或-如果模块附带清单文件-则通过VariablesToExport
键导出变量。