【问题标题】:Unload the system loaded module in PowerShell在 PowerShell 中卸载系统加载的模块
【发布时间】:2016-10-25 10:48:04
【问题描述】:

如果系统已经安装了模块,请说“servicefabric”,并且在运行我的脚本时我想删除这个模块,因为它可能是以前的版本。我想导入我最新的 servicefabric 模块。我可以知道怎么做吗?

我试过这个:

if(Get-Module -Name "ServiceFabric") 
{
    Remove-Module -Name "ServiceFabric"
}

但它不会删除系统安装的服务结构模块。

下面的命令列出了相同的模块

Get-Module -ListAvailable -Name "ServiceFabric"

当我再次尝试时。所以,我只想删除系统加载的模块。

【问题讨论】:

  • 您要删除还是卸载该模块? Remove-Module 只是卸载模块。
  • 我不想卸载模块。我想从我当前的会话中删除它,我只想使用我的最新服务结构模块,我将从我的代码中导入它。
  • Get-Module -ListAvailable 列出了可用的模块,而不是实际加载的模块。后者是 Get-Module 没有 -ListAvailable 所做的。

标签: powershell azure-service-fabric


【解决方案1】:

如果模块是在程序集中定义的,或者如果模块包含程序集,则无法卸载它。 cmdlet 名称将被删除,但程序集将保留在内存中。

这不是 Powershell 问题 - .Net 不允许卸载程序集。相反,您必须卸载包含程序集的 AppDomain。

【讨论】:

  • 如果我必须卸载包含程序集的 AppDomain,那么在这种情况下,我该如何卸载它。下班后,能不能重新加载AppDomain。
  • 我非常怀疑您是否能够卸载属于 Powershell 的 AppDomain,并且尝试这样做可能会影响环境。你能避免一开始就加载模块吗?
  • 嗯....我必须把它放在上面,因为我必须连接到集群,然后需要部署应用程序/升级/覆盖。那么,我是否还有其他选择,比如加载我的特定版本的 Service Fabric dll 并使用 powershell 继续部署。
  • 有人可以帮忙吗?因为我必须进一步这样做。
【解决方案2】:

你试过了吗? Remove-Module -Name "ServiceFabric" -Force -ErrorAction SilentlyContinue。您无需检查模块是否已加载。如果发现任何内容,请将其删除。

【讨论】:

  • 我试过上面的那个。当我执行它时,它没有给出错误。但是,由于我必须导入新模块,并且基于导入的模块,我编写的代码并没有被执行。当我不导入新模块时,我遇到的错误与导入最新模块后遇到的相同错误。我已将 Remove-Module 代码放在 powershell 脚本页面的顶部。
猜你喜欢
  • 2010-11-23
  • 2013-01-29
  • 2016-05-15
  • 2015-12-14
  • 2018-07-03
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多