mit*_*mit 16 powershell uninstall powershell-module powershell-5.0
我们在一个部署PowerShell脚本中使用了一些PowerShell模块.使用以下命令,我们将模块(即XXXX)安装到"C:\ Program Files\WindowsPowerShell\Modules"中.
Install-Module -Name "XXXX" -AllowClobber -RequiredVersion "XXXX" -Repository "XXXX" -Scope AllUsers
Run Code Online (Sandbox Code Playgroud)
现在,一旦我们使用了此模块的功能,我们将使用以下命令在部署脚本结束时将其卸载.
Remove-Module -Name "XXXX" -force
Uninstall-Module -Name "XXXX" -AllVersions -force
Run Code Online (Sandbox Code Playgroud)
但是此卸载模块命令会出现以下错误.
WARNING: The version '###' of module 'XXXX' is currently in use. Retry the operation after closing the
applications.
PackageManagement\Uninstall-Package : Module 'XXXX' is in currently in use.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:2046 char:21
+ ... $null = PackageManagement\Uninstall-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power...ninstallPackage:UninstallPackage) [Uninstall-Packag
e], Exception
+ FullyQualifiedErrorId : ModuleIsInUse,Uninstall-Package,Microsoft.PowerShell.PackageManagement.Cmdlets.Uninstall
Package
Run Code Online (Sandbox Code Playgroud)
有人有任何想法解决这个问题吗?
小智 14
问题可能是您现有的PowerShell会话通过从中加载可能的元素(例如全局变量或常量)来"锁定"模块,即使您正在尝试卸载它(Remove-Module).
确保它未锁定的最简洁方法是退出PowerShell会话.如果你需要保持会话后再做"填充",尝试在使用模块之前启动一个新的PowerShell会话(嵌套会话),然后在结束时退出它.
Mar*_*łek 14
正如E Bekker的原始答案中提到的,模块可能会卡在会话中。关闭 PowerShell 会话并在新会话中运行卸载应该会有所帮助。
正如Keith 提到的,如果一个模块是自动加载的,它可能会被锁定。如果它是通过配置文件发生的,添加-NoProfile到卸载脚本应该会有所帮助:
powershell -NoProfile -Command "Uninstall-Module X"
Run Code Online (Sandbox Code Playgroud)
一些模块,比如 PSReadLine,即使在这样的会话中也会被加载,并且可能需要额外的-NonInteractive参数:
powershell -NoProfile -NonInteractive -Command "Uninstall-Module X"
Run Code Online (Sandbox Code Playgroud)
我还没有找到这种情况,但如果它仍然没有帮助,可以使用(Get-InstalledModule -Name X).InstalledLocation查找模块安装的位置,并通过其他方式(最后的手段)将其删除。如果模块的另一个/旧版本与 PowerShell 捆绑在一起,最好避免手动删除以免破坏它。
Update-InstalledModule在需要时更新它?Import-Module使用 .psd1 文件的路径可能会起作用。尽管如此,它并没有使Remove-Module工作 100%。Install-Module -Scope CurrentUser,和/或使用 限制 PowerShell 使用Set-ExecutionPolicy,也可以使用-Scope参数运行。小智 7
截至 2021 年底,我在 pwsh7.2 和 PSFzf 模块上遇到了同样的问题。对我有用的:
pwsh -NoProfileUninstall-Module -Name PSfzf -Force就我而言,我是这样解决的:
| 归档时间: |
|
| 查看次数: |
11730 次 |
| 最近记录: |