如何卸载模块以便 Get-Module 不再报告找到该模块?
> Get-Module -list -Name Pester
ModuleType Version Name
---------- ------- ----
Script 3.4.0 Pester
> Uninstall-Module -Name Pester
PackageManagement\Uninstall-Package : No match was found for the specified search criteria and module names 'Pester'.
答案1
下面的操作很好地删除了 pester 3.4.0。
下面操作需要使用参数运行-RunAsAdministrator
:
$modulePath = "C:\Program Files\WindowsPowerShell\Modules\Pester"
if (-not (Test-Path $modulePath)) {
"There is no Pester folder in $modulePath, doing nothing."
break
}
takeown /F $modulePath /A /R
icacls $modulePath /reset
icacls $modulePath /grant Administrators:'F' /inheritance:d /T
Remove-Item -Path $modulePath -Recurse -Force -Confirm:$false
解决方案已采取来自 GitHub。
然后我就可以运行以下命令......
Install-Module Pester -Force -Scope CurrentUser
...然后验证。
附言:
的输出C:\WINDOWS\system32> get-installedmodule
是:
Version Name Repository Description
------- ---- ---------- -----------
1.1.183.17 MSOnline PSGallery Microsoft Azure Active Directory Module for Wind...
4.9.0 Pester PSGallery Pester provides a framework for running BDD styl...
希望有帮助:)
答案2
您所提到的特定软件包的问题在于它非常特殊。纠缠是电源外壳用于测试的模块电源外壳模块。
您在示例中提到的版本3.4.0
也可能是随附的版本微软 视窗 电源外壳集成 Shell 脚本环境 (IS-SE),并且也可以更新。
因此,摘录中出现的错误消息由Uninstall-Module
微软 视窗 电源外壳Command-Let 可能会产生误导。这并不意味着纠缠模块不存在,但微软 视窗 电源外壳环境不允许卸载它。它已被这样编码。
答案3
如果你正在使用 OneDrive,你可能会遇到这个错误:https://github.com/PowerShell/PowerShellGet/issues/509
似乎 Get-InstalledModule 和 Uninstall-Module 不能正确处理指向 OneDrive 的 Documents 文件夹并报告未安装模块。