How to install PowerShell modules

A PowerShell module is a grouping of various functions that operate as a single mini program. Modules are used to interact with various applications such as Windows, VMWare, Active Directory, Office365, SANS, and so on.

Each module is stored in a folder where it contains the necessary files for the PowerShell commands.

Although PowerShell comes with several built in modules there will be times when you need to load additional ones.

In this post, I will show you two methods for installing modules

Method 1: Install Module from PowerShell Gallery

Installing PowerShell modules from the PowerShell Gallery is the easiest way to install modules. The PowerShell Gallery is an online central repository for PowerShell content. These are Microsoft authored modules. Check out the PowerShell Gallery website for more details and to search the available modules.

In this example, I will install the AzureAD module. This module is used for Managing Office365 and azure with Powershell.

Open PowerShell and enter the command below. This command will install AzureAD from the PowerShell Gallery.

install-module -Name AzureAD

Depending on your settings you may get the pop up below. Click Yes.

After clicking yes the install should start.

To very it installed run this command:

Get-Module -ListAvailable

In the screenshot above you can see the AzureAD module is listed. The install is complete. Now let’s see what commands are available in this module.

Get-Command -module AzureAD

The above command will list all the available commands available with this module.

Troubleshooting

You may need to change your computer’s execution policy for modules to install properly. Use this command to check the execution policy.

Get-ExecutionPolicy

If you need a less restrictive policy you can use the Set-ExecutionPolicy to change it.

Method 2: Manually installing modules

If the module is not available in the PowerShell gallery you will need to use this method.

Step 1: Determine the install Path

You want to install new modules in a path that is listed in the PSModulePath environment variable.  To see the value of PSModulePath run the following command.

$Env:PSModulePath

Here is the result of running that command on my computer. You should see similar results.

$EnvProgramFiles\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

There may be several paths listed but there are two main paths you should use, they are:

  1. C:\Users\userprofile\Documents\WindowsPowerShell\modules
  2. C:\program files\WindowsPowerShell\Modules\<Module Folder>\<Module Files>

Use the first path if you want the module to be available for a specific user. Use the second path to make the module available for all users.

So, what are the other paths for?

The path below is reserved for modules that ship with Windows. Microsoft recommends not use this location.

$PSHome\Modules (%Windir%\System32\WindowsPowerShell\v1.0\Modules)

You can also add your own paths but unless you have a specific need then just stick with the two I listed.

If you see other paths listed in your environment variable it may be from programs that you have installed. Some programs will install PowerShell commands and automatically add those to the variable.

Now that we know where to put new modules let’s move to step 2.

Step 2: Copy new module to path

So I’ve downloaded a new module and the next step is to copy it into one of the two paths identified in step 1. I’m going to make it available to all users so I’ll copy it here

C:\Program Files\WindowsPowerShell\Modules

Powershell Module Install

There it is, just copy and past the module into the path.

Basically, that is it for installing new modules. Let’s verify the new module is visible to PowerShell, run the following command:

Get-Module -ListAvailable

This command will check the paths that are set in the environment variable for modules.

The screenshot below is what returns when I run this command. I can see that the new module (NTFSSecurity) is now visible to PowerShell.

Now that the new module is installed we still have one final step before we can use the new commands.

Step 3: Import new module

Importing loads the module into active memory so that we can access the module in our session.

To import run the following command

Import-module -name ModuleName

For the module I’m using in this example it would look like,

Import-module NTFSSecurity

That will do it, the new module is now ready to use.

I hope you found this tutorial helpful if you have questions or comments please leave them below.

See Also: How to Connect to Office 365 with PowerShell

Recommended Tool: Permissions Analyzer for Active Directory

This FREE tool lets you get instant visibility into user and group permissions and allows you to quickly check user or group permissions for files, network, and folder shares.

You can analyze user permissions based on an individual user or group membership.

This is a Free tool, download your copy here.

7 thoughts on “How to install PowerShell modules”

  1. hi,
    I copied the module to the folder and ran the command to see it on powershell but it didnt show up, do you know what the issue might be?

    Reply
    • What module did you copy? What OS are you on?

      Reply
    • The name of the modules folder and the name of the module have to be the same. For example, if installing to

      C:\Program Files\WindowsPowerShell\Modules\MyPowershellModule\

      The module file (.psm1 or .psd1) must be named MyPowershellModule.psm1 or MyPowershellModule.psd1.

      HTH

      Reply
  2. # Install All PowerShell Modules :

    $Modules = Get-Module -ListAvailable | Select-Object Name -ExpandProperty Name

    Foreach ($mod in $Modules) {
    Import-module -name $mod
    }

    Reply
    • # Install all powershell Module in one line
      Get-Module -ListAvailable | Import-Module

      Reply
  3. This is a wonderful article and incredibly helpful. Thank you for showing a PowerShell newbie, aka me, how to import my company’s PSModules and start using them locally!

    Reply
    • No problem, glad it helped.

      Reply

Leave a Comment