通过模块访问哈希表



我在模块中将其定义为defblah.ps1

$defblah= @{
first = "aaa";
seconf = "bbb";
}

我在模块中也有这个作为Blah.ps1

Function Blah 
{
Write-Host $defblah.first;
}

我做了Export-ModuleMemberImport-Module,所以模块定义(导出、导入(的一切都很好。

然后,在导入之后,我运行Blah,它打印";aaa";,这正是我所期望的。

问题是当我输入时

Write-Host $defblah.first;

它什么也不回。我如何才能使我的最后一句话发挥作用并返回"aaa"?

通常,我建议不要从模块导出变量,即使它在技术上是受支持的。

模块的隐式导出行为确实排除了变量-在PSv5+中,默认情况下仅导出函数别名,这意味着不存在控制导出的Export-ModuleMember和/或模块清单(*.psd1(。

通常的期望是,模块导出命令(函数/Cmdlet,可能还有别名(,而不是数据(变量(-仅凭命令就足以引发名称冲突。

如果您确实希望从模块中导出变量,请使用带有
-Variable参数Export-ModuleMember调用和/或-如果模块附带清单文件-则通过VariablesToExport键导出变量。

最新更新