Powershell import-module doesn't find modules

267,866

Solution 1

The module needs to be placed in a folder with the same name as the module. In your case:

$home/WindowsPowerShell/Modules/XMLHelpers/

The full path would be:

$home/WindowsPowerShell/Modules/XMLHelpers/XMLHelpers.psm1

You would then be able to do:

import-module XMLHelpers

Solution 2

1.This will search XMLHelpers/XMLHelpers.psm1 in current folder

Import-Module (Resolve-Path('XMLHelpers'))

2.This will search XMLHelpers.psm1 in current folder

Import-Module (Resolve-Path('XMLHelpers.psm1'))

Solution 3

I think that the Import-Module is trying to find the module in the default directory C:\Windows\System32\WindowsPowerShell\v1.0\Modules.

Try to put the full path, or copy it to C:\Windows\System32\WindowsPowerShell\v1.0\Modules

Solution 4

I experienced the same error and tried numerous things before I succeeded. The solution was to prepend the path of the script to the relative path of the module like this:

// Note that .Path will only be available during script-execution
$ScriptPath = Split-Path $MyInvocation.MyCommand.Path

Import-Module $ScriptPath\Modules\Builder.psm1

Btw you should take a look at http://msdn.microsoft.com/en-us/library/dd878284(v=vs.85).aspx which states:

Beginning in Windows PowerShell 3.0, modules are imported automatically when any cmdlet or function in the module is used in a command. This feature works on any module in a directory that this included in the value of the PSModulePath environment variable ($env:PSModulePath)

Solution 5

I had this problem, but only in Visual Studio Code, not in ISE. Turns out I was using an x86 session in VSCode. I displayed the PowerShell Session Menu and switched to the x64 session, and all the modules began working without full paths. I am using Version 1.17.2, architecture x64 of VSCode. My modules were stored in the C:\Windows\System32\WindowsPowerShell\v1.0\Modules directory.

Share:
267,866
Serge Weinstock
Author by

Serge Weinstock

Updated on May 16, 2020

Comments

  • Serge Weinstock
    Serge Weinstock almost 4 years

    I'm learning PowerShell and I'm trying to build my own module library.

    I've written a simple module XMLHelpers.psm1 and put in my folder $home/WindowsPowerShell/Modules.

    When I do:

     import-module full_path_to_XMLHelpers.psm1
    

    It works. But when I do:

    import-module XMLHelpers
    

    It doesn't work and I get the error:

    Import-Module : The specified module 'xmlhelpers' was not loaded because no valid module file was found in any module directory.

    I've checked that the environment variable PSModulePath contains this folder. As it is a network folder, I've also tried to move it to a local folder and to modify PSModulePath but without success

     $env:PSModulePath=$env:PSModulePath+";"+'C:\local'
    

    Any idea on what could cause this issue?