I have a module in a folder that I have created, C:\PowerShellScripts\Modules. I call this mod.psm1. This file contains two simple functions: Write-hello and Write-bye.

Now, I have added this path(C:\PowerShellScripts\Modules) to my PSModulePath Environment variables path.

Accordingly, this should auto load the module when I start PowerShell. Correct?

But when I run PowerShell and try Write-hello or Write-bye it gives an error

write-hello : The term 'write-hello' is not recognized as the name of a cmdlet, function, script file, or operable program

PowerShell does not load the mod.psm1 file even though $ENV:PSModulePath shows my path (C:\PowerShellScripts\Modules)

And I need to manually use Import-Module again. What could be wrong?

有帮助吗?

解决方案 2

I figured it out. I needed to add my mod.psm1 file to a folder named "mod". Now I can directly access my cmdlets write-hello or write-bye when i start PowerShell.

其他提示

According to documentation available here:

A "well-formed" module is a module that is stored in a directory that has the same name as the base name of at least one file in the module directory. If a module is not well-formed, Windows PowerShell does not recognize it as a module.

The "base name" of a file is the name without the file name extension. In a well-formed module, the name of the directory that contains the module files must match the base name of at least one file in the module.

This is the reason when you made a directory named mod (same base name as the file mod.psm1) and put the module inside it, you could access your cmdlets.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top