即使在环境变量中定义了模块路径后,Powershell模块也未加载

时间:2014-04-19 07:27:41

标签: powershell environment-variables powershell-v3.0

我在我创建的文件夹中有一个模块,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。可能有什么不对?

2 个答案:

答案 0 :(得分:17)

根据现有文件here

  

“格式良好”的模块是存储在目录中的模块,该目录与模块目录中至少一个文件的基本名称相同。如果模块格式不正确,则Windows PowerShell不会将其识别为模块。

     

文件的“基本名称”是没有文件扩展名的名称。在格式良好的模块中,包含模块文件的目录名必须与模块中至少一个文件的基本名称匹配。

这就是您创建名为mod的目录(与文件mod.psm1相同的基本名称)并将模块放入其中的原因,您可以访问您的cmdlet。

答案 1 :(得分:3)

我明白了。我需要将我的mod.psm1文件添加到名为“mod”的文件夹中。现在,当我启动PowerShell时,我可以直接访问我的cmdlet write-hello或write-bye。