首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清理不良的Azure PowerShell卸载?

如何清理不良的Azure PowerShell卸载?
EN

Stack Overflow用户
提问于 2015-12-10 14:27:29
回答 6查看 27K关注 0票数 13

背景:我通过MSI安装了Azure-PowerShell 1.x,随后通过命令提示符添加了一些Azure资源管理模块。一切正常,然后昨天下午,ISE莫名其妙地消失了。为了补救这个问题,我计划卸载MSI &然后重新安装。(我不知道有必要首先取消手动添加的模块。)卸载似乎运行良好,但它没有删除手动安装的模块,也没有警告我。

结果:该机器不再安装Azure-PowerShell。我无法安装、卸载或修复安装,因为有些模块仍然存在:

这台机器上安装了来自PowerShell库的Azure模块。请在安装此MSI之前删除这些模块。

有办法“修复”这个安装吗?或者手动删除文件/清理注册表,或者强制MSI安装在任何东西上?

这都是在Azure上的VM上运行的。如果有必要,我可以删除整个VM &从零开始,但如果有相对简单的修复,我更愿意避免这一点。

谢谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-12-16 01:45:03

这只是一个开发虚拟机。我把它炸了然后重新开始。经验教训:卸载MSI之前先卸载PowerShell库组件。

票数 2
EN

Stack Overflow用户

发布于 2017-11-06 20:08:15

好的,我尝试了上面的项目来删除窗口powershell,并发现实际上它并没有完全删除powershell。

这至少在windows 7上是不正确的。

如果您运行uninstall-module AzureUninstall-Module AzureRM,它会卸载一些东西,看上去就像我认为的基本模块。

如果你这样做了:

Get-Module AzureRM -ListAvailable

它什么都不会回来。所以就这么做了对吧?

不,不太好。

如果你那么做了:

Get-Module -ListAvailable AzureRM*

你会发现任意数量的子模块仍在那里。(出于某种原因,通配符可以用于Get模块,但不能用于卸载模块)

好的,但是接下来只做卸载模块AzureRm*对吗?不,不完全是

根据您的powershell版本(或者可能不是,我不确定),Install只是抱怨您不能在卸载模块命令中使用通配符。(天知道为什么没有通配符有什么意义呢?但这就是窗户,所以我只好把它吸进去)。

如果您查看%System-root%\Program \windowspowershell\模块,您仍然会看到那里的模块。

为什么会这样呢?我不确定,但这是我必须做的,以清理所有的老版本和更新版本的Azure powershell,我必须回到一个干净的板子。因此,为了解决缺乏通配符支持的问题,我只使用了一个foreach循环:

foreach ($module in (Get-Module -ListAvailable AzureRM*).Name |Get-Unique) { write-host "Removing Module $module" Uninstall-module $module }

请注意,不要尝试将其作为Visual代码或visual运行,因为取决于您的锁,您可能会得到错误,因为它倾向于预加载模块并锁定打开的东西。将其放入名为Removeold-AzureRM.ps1的文件中,并从powershell控制台窗口运行它,如下所示:\Remo-AzureRM.ps1

还请确保在尝试之前关闭Visual代码和Visual,否则仍可能会收到类似的错误消息。

如果您在卸载AzureRM之后运行此操作,您将发现事情停止工作,您只有最后一种手段。删除%System%\Program\windowspowershell\ AzureRM中的所有模块

我已经对编辑进行了重新测试,如果您已经安装了azurerm5.0.1,并且已经删除了azurerm,那么上面的代码似乎仍然有效,所以我可能对其他版本也有错误。

现在,您肯定会对此进行排序,现在可以使用Install重新安装AzureRM。

如果你不小心犯了像我这样的核弹的错误,不要费心用WMF 5.1或5.0重新安装它,因为它会安装得很好,但你仍然不会有powershellget,为什么我不确定,这是窗口,所以让我们直接吸取它。

好吧,那怎么解决呢?

您唯一的办法是下载动力壳的发行版。

并将PowerShellGet-1.5.0.0\PowerShellGet复制到模块文件夹中。然后安装-模块将再次工作。

是的,我知道我们都在说重新安装不是更安全吗?

是的,很有可能,但对你们中像我这样的人来说,因为这样或那样的原因,这不是一个选择,以上是你最好的选择。我希望这能帮助到一些人,因为这至少花了我3天的时间来解决为什么在我确信我已经删除了所有东西的情况下,我一直在执行旧的模块。

票数 37
EN

Stack Overflow用户

发布于 2018-05-11 17:01:47

为了加快速度,您可以并行卸载:

代码语言:javascript
复制
workflow Uninstall-AzureModules
{
    $Modules = (Get-Module -ListAvailable Azure*).Name |Get-Unique
    Foreach -parallel ($Module in $Modules)
    { 
        Write-Output ("Uninstalling: $Module")
        Uninstall-Module $Module -Force
    }
}
Uninstall-AzureModules
Uninstall-AzureModules   #second invocation to truly remove everything
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34204373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档