Powershell:无法更新 PowerShellGet,错误:模块“PackageManagement”的版本“1.4.7”当前正在使用中

Jon*_*ica 7 powershell

Win10 笔记本电脑,使用了几年。

我已经坚持了几天。

我试试这个命令:

Install-Module –Name PowerShellGet –Force -AllowClobber
Run Code Online (Sandbox Code Playgroud)

这引发了这个错误:

WARNING: The version '1.4.7' of module 'PackageManagement' 
is currently in use. Retry the operation after closing the applications.
Run Code Online (Sandbox Code Playgroud)

我可以在任务管理器中看到没有其他 powershell 会话正在运行。

我可以退出所有会话,并从一个普通的 cmd 运行它:

powershell -NoProfile -Command "Install-Module -Name PowerShellGet -Force -AllowClobber"
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误。

好的,所以我退出所有 powershell 实例(如 taskmgr 的详细信息选项卡中所示)并执行以下操作:

powershell -NoProfile -Command "Uninstall-Module PowerShellGet"
powershell -NoProfile -Command "Install-Module -Name PowerShellGet -Force -AllowClobber"
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误。

所以我再次卸载,(运行时没有消息或错误)。我拿出大枪…… powershell.exe 没有运行,我导航到:

C:\Users\$user\Documents\WindowsPowerShell\Modules\PackageManagement\1.4.7
Run Code Online (Sandbox Code Playgroud)

我删除了 1.4.7 目录。

并且上面的命令以相同的行为和相同的错误运行。

我如何通过这个?

附加背景:

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
Run Code Online (Sandbox Code Playgroud)

也试过

将范围限制为当前用户:

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.
Run Code Online (Sandbox Code Playgroud)

解决方案

我没有准确跟踪该步骤,但下面的评论之一导致了一条确实解决的路径。

技巧之一是查看进程列表,并确保在执行更新之前终止所有 vscode 和其他 powershell 加载进程。

抱歉,我无法记录解决的确切步骤。(我有点为这件事干杯。)

小智 18

我可以通过在管理 PowerShell 中运行以下命令来解决此问题:

Update-Module -Name PowerShellGet -RequiredVersion 2.2.5.1
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助!
来源: https: //github.com/PowerShell/PowerShellGetv2/issues/599 将版本更新为 2.2.5.1,作为 PowerShellGet 来源上的最新版本:https://github.com/PowerShell/PowerShellGetv2/blob/master/CHANGELOG。 MD