从 How to Write a PowerShell Module Manifest - PowerShell | Microsoft Docs 中了解到,可以使用VariablesToExport = '*',导出模块中的所有变量,但实际使用之后发现无法导出任何变量。通过写脚本测试确认以及阅读更多的文档,都没有发现具体的原因,我可能忽略了某些重要的东西。
这是怎么回事?
# TestModule.psm1
0..9 | ForEach-Object { "v_$_" | New-Variable -Value $_ }
# TestModule.psd1
@{ModuleVersion = '1.0';VariablesToExport = '*'}
# TestModule.Tests.ps1
0..9 | ForEach-Object { "variable:v_$_" | Test-Path | Should -BeFalse }
VariablesToExport项是清单文件中的一种静态导出机制,它在代码文件中的Cmdlet动态导出之上执行拾取操作。默认值为*,表示默认为无二次拣选。
因为它是在原始导出成员的顶部拾取的,所以单独使用它是无用的。
还有就是上文的清单模块中不小心漏了 RootModule 项,如果那个没有的话是不会执行模块脚本文件的,这是个错误。但将这个错误修复之后,之前的测试结果仍然是有效的。