Installing PowerShell module persistently for all users Installing PowerShell module persistently for all users powershell powershell

Installing PowerShell module persistently for all users


PowerShell can only "see" modules installed in one of the directories listed in $env:PSModulePath. Otherwise you'll have to import the module with its full path.

To make a new module visible to all users you basically have two options:

  1. Install the module to the default system-wide module directory (C:\Windows\system32\WindowsPowerShell\v1.0\Modules).
  2. Modify the system environment so that PSModulePath variable already contains your custom module directory (e.g. via a group policy preference).

The latter will only become effective for PowerShell sessions started after the modification was made, though.


This profile applies to all users and all shells.

%windir%\system32\WindowsPowerShell\v1.0\profile.ps1


After taking the steps you spelled out in your question (which I think is the general way to go), I found two ways to get the new module source recognized by Powershell:

  • Restart the machine. (Works every time.)
  • Reset the PSModulePath in each open session.

    $env:PSModulePath=[Environment]::GetEnvironmentVariable("PSModulePath", "Machine")

    I found this was necessary to run in both normal and elevated prompts to get this to work without restarting in each type of prompt. (See also the conversation @ Topic: PSModulePath.)