20

Win10 laptop, in service for a couple years.

I have been stuck on this for a couple of days.

I try this command:

Install-Module –Name PowerShellGet –Force -AllowClobber

Which throws this error:

WARNING: The version '1.4.7' of module 'PackageManagement' 
is currently in use. Retry the operation after closing the applications.

I can see in task manager there are no other sessions of powershell running.

I can exit all the sessions, and run this from a plain cmd:

powershell -NoProfile -Command "Install-Module -Name PowerShellGet -Force -AllowClobber"

And I get the SAME error.

OK, so I exit all powershell instances (as seen in Details tab of taskmgr) and do this:

powershell -NoProfile -Command "Uninstall-Module PowerShellGet"
powershell -NoProfile -Command "Install-Module -Name PowerShellGet -Force -AllowClobber"

And I get the same error.

So I do the uninstall again, (which runs without messages or errors). And I take out the big guns... powershell.exe is not running, and I navigate to:

C:\Users\$user\Documents\WindowsPowerShell\Modules\PackageManagement\1.4.7

And I delete the 1.4.7 directory.

And the commands above run with the same behavior and same error.

How do I move past this?

Additional Background:

PS C:\WINDOWS\system32> Get-Module -ListAvailable PowerShellGet,PackageManagement


    Directory: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.4.7      PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
Binary     1.0.0.1    PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
Script     2.2.5      PowerShellGet                       {Find-Command, Find-DSCResource, Find-Module, Find-RoleCap...
Script     1.0.0.1    PowerShellGet                       {Install-Module, Find-Module, Save-Module, Update-Module...}


PS C:\WINDOWS\system32>  Get-Module -ListAvailable PowerShellGet,PackageManagement | % path
C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.4.7\PackageManagement.psd1
C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.0.0.1\PackageManagement.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\2.2.5\PowerShellGet.psd1
C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1

Also Tried

Limiting scope to current user:

PS C:\WINDOWS\system32> Install-Module -Name PowerShellGet -Force -Scope CurrentUser
WARNING: The version '1.4.7' of module 'PackageManagement' is currently in use. Retry the operation after closing the
applications.
PS C:\WINDOWS\system32> exit

# OK, check taskmgr that all powershell.exe have exited, and run the below
C:\WINDOWS\system32>powershell -command "Install-Module -Name PowerShellGet -Force -Scope CurrentUser"
WARNING: The version '1.4.7' of module 'PackageManagement' is currently in use. Retry the operation after closing the
applications.

SOLUTION

I did not track exactly the step, but one of the comments below led to a path that did resolve.

One of the tricks was to watch the process list, and to be sure that all vscode and other powershell-loading process were terminated prior to doing the update.

Apologies I cannot document the exact step that resolved. (I was kind of toast working on this.)

Jonesome Reinstate Monica
  • 6,618
  • 11
  • 65
  • 112
  • Curious. 2.2.5 and 1.4.7 are the current versions for PowerShellGet / PackageManagement. If you append `| % Path` to your `Get-Module` call, you'll see the module-manifest locations. Without `-ListAvailable`, it'll show you which versions are currently loaded. You can unload with `Remove-Module`, then load one _other_ than the one you're trying to update (pass the full manifest path to `Import-Module`), and try again. – mklement0 Feb 21 '21 at 18:21
  • @mklement0 OP updated with the path info thank you! – Jonesome Reinstate Monica Feb 21 '21 at 18:33
  • You can try to install in the scope of the current user, and optionally manually replace the directories in the all-users location later, manually. Try `Install-Module -Name PowerShellGet -Force -Scope CurrentUser`. That said - it looks like the installed versions are already current. – mklement0 Feb 21 '21 at 18:39
  • @mklement0 Thanks! Tried it. Get the same Warning. OP updated (See the bottom of the OP). I think I am giving up on this for now. – Jonesome Reinstate Monica Feb 21 '21 at 18:46
  • Intriguing; here are the official instructions, which say that you should run `Install-PackageProvider -Name NuGet -Force` first: https://learn.microsoft.com/en-us/powershell/scripting/gallery/installing-psget?view=powershell-7.1&viewFallbackFrom=powershell-6 - it also shows a _manual_ installation method, via `Save-Module`. – mklement0 Feb 21 '21 at 19:09
  • 1
    Upgrading/replacing these 2 modules is really a test of strength. What I've done is find and delete the modules in all locations, download the nuget packages for each from the psgallery website. Create the module folders in any of the $env:PSModulePath folder and version subfolder, and extract the contents of the nuget packages to those folders leaving me with only the newer versions that I've downloaded. Works as expected. – Daniel Feb 21 '21 at 21:15
  • @Daniel thank you - abandonning the powershell methods and just deleting and replacing module folders in explorer was the only thing that worked for me due to the bootstrapping involved otherwise. If you'd convert your comment to an answer I'd vote for it. – JonoB Sep 10 '21 at 11:02

4 Answers4

17

I was able to fix this by running the command below in an admin PowerShell:

Update-Module -Name PowerShellGet -RequiredVersion 2.2.5.1

Hope this helps others!
Source: https://github.com/PowerShell/PowerShellGetv2/issues/599 Updated the version to 2.2.5.1 as the latest version on PowerShellGet Source: https://github.com/PowerShell/PowerShellGetv2/blob/master/CHANGELOG.md

Eyal Cohen
  • 121
  • 6
James Graham
  • 529
  • 4
  • 7
2

I'm using PS 7 and was having the same problem.

Steps I followed to fix the issue...:

  1. Listed module folders using $env:PSModulePath -split ';'. Result was list of paths where modules are stored as per scope (read here for more on the topic).

List of Paths:

   - C:\Users\**USER**\OneDrive - Microsoft\Documents\PowerShell\Modules
   - C:\ProgramFiles\PowerShell\Modules
   - **c:\program files\powershell\7\Modules**
   - C:\Program Files\WindowsPowerShell\Modules
   - C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
   - C:\Program Files (x86)\Microsoft Azure Information Protection\Powershell
  1. look for the folder called PackageManagement (it was in C:\Program Files\PowerShell\7\Modules in my case)
  2. Rename it (don't recommend deleting!)
  3. Get-InstalledModule to make sure I PackageManagement is not there anymore
  4. Install-Module -name PowerShellGet -RequiredVersion 2.2.5 -Force to install PowerShellGet.

and job's a good'un! At least for me :)

Omar X
  • 31
  • 5
1

I don't have the rep to post a comment, but James Graham's post suggesting using the Update-Module worked for me too. Exact same issue, with the exact same version numbers, almost a year later. Yet, I just checked and there's now a 3.0.12 beta available which requires the code below:

Install-Module -Name PowerShellGet -AllowPrerelease -Force

I tried for a while to figure out the syntax highlighting but to no avail.

  • This does not really answer the question. If you have a different question, you can ask it by clicking [Ask Question](https://stackoverflow.com/questions/ask). To get notified when this question gets new answers, you can [follow this question](https://meta.stackexchange.com/q/345661). Once you have enough [reputation](https://stackoverflow.com/help/whats-reputation), you can also [add a bounty](https://stackoverflow.com/help/privileges/set-bounties) to draw more attention to this question. - [From Review](/review/late-answers/30884295) – Dennis Jan 25 '22 at 21:26
0

enter image description here

I had Two PowerShellGet Modules deployed to C:\Program Files\WindowsPowerShell\Modules\PowerShellGet , removing the 2.2.5 version fixed this for me