如何让我的模块在 PowerShell 会话启动时自动加载

问题描述 投票:0回答:1

我创建了我的模块,现在我的目标是在 PowerShell 会话启动时自动加载它,另外我希望每个用户都拥有它。

基于一些教程和这个 Microsoft Docu 我将模块的所有目录复制到路径:

C:\ProgramFiles\WindowsPowerShell\Modules\

不幸的是,我的模块并未成功加载 - 我的意思是无法识别存储在该模块中的调用函数(在 Windows 11 24H2、PowerShell 5.1 上测试)。

对我来说更不清楚 - 如果我只是列出模块中所有可用的命令,那么它们都会显示出来,并且下一个再次调用的函数将被正常执行:

PowerShell session

命令“Get-Module”这次也会显示我的模块。

这是我的模块在 Program Files 目录中的样子: enter image description here

是我做错了什么,还是没理解?

将 TestModul 存储在本地配置文件目录(“$HOME\Documents\WindowsPowerShell\Modules”)中时得到的结果相同 在我从模块中查询所有命令之前,PowerShell 的当前会话中将无法识别其中的任何函数。

powershell function module
1个回答
0
投票

Get-Command -Module <moduleName>
工作的事实表明模块自动加载不是问题。

更可能的解释是附加到模块的清单没有明确将

TestFunction
列为导出命令,因此 PowerShell 在导入模块之前无法识别两者之间的链接。

在模块清单中,确保

FunctionsToExport
键显式列出导出的函数名称,例如:

FunctionsToExport = @("TestFunction")

要更新现有清单,请使用

Update-ModuleManifest
:

Update-ModuleManifest -Path path\to\TestModul_1.01.psd1 -FunctionsToExport TestFunction
© www.soinside.com 2019 - 2024. All rights reserved.