我在我创建的文件夹中有一个模块,C:\ PowerShellScripts \ Modules。我叫这个mod.psm1。该文件包含两个简单的函数:Write-hello和Write-bye。
现在,我已将此路径(C:\ PowerShellScripts \ Modules)添加到我的PSModulePath环境变量路径中。
因此,我应该在启动PowerShell时自动加载模块。正确的吗?
但是当我运行PowerShell并尝试Write-hello或Write-bye时会出现错误
write-hello:术语' write-hello'不被认为是的名称 cmdlet,函数,脚本文件或可操作程序
PowerShell不加载mod.psm1文件,即使$ ENV:PSModulePath显示我的路径(C:\ PowerShellScripts \ Modules)
我需要再次手动使用Import-Module。可能有什么不对?
答案 0 :(得分:17)
根据现有文件here:
“格式良好”的模块是存储在目录中的模块,该目录与模块目录中至少一个文件的基本名称相同。如果模块格式不正确,则Windows PowerShell不会将其识别为模块。
文件的“基本名称”是没有文件扩展名的名称。在格式良好的模块中,包含模块文件的目录名必须与模块中至少一个文件的基本名称匹配。
这就是您创建名为mod
的目录(与文件mod.psm1
相同的基本名称)并将模块放入其中的原因,您可以访问您的cmdlet。
答案 1 :(得分:3)
我明白了。我需要将我的mod.psm1文件添加到名为“mod”的文件夹中。现在,当我启动PowerShell时,我可以直接访问我的cmdlet write-hello或write-bye。