我正在编写一个powershell脚本模块。它做的第一件事就是进行一些检查以确保某些必需的值可用。如果不是,则模块不应继续加载和初始化。但是,我不知道模块可以“移除”自己的方法。我尝试调用remove-module(来自模块内部)但不出意外它没有用。有没有其他方法让模块自行卸载?
我意识到从模块外部的脚本做这件事是微不足道的。但我正在编写这个模块,以便与其他不太精明的用户共享。我不想包含模块PLUS另一个脚本,然后向他们解释“这是一个例外,你不能使用普通的import-module,你必须总是记得找到并运行这个其他脚本” 。除此之外,如果用户只使用import-module(正如他们合理期望的那样)而不是使用额外的脚本,它将没有用处。
答案 0 :(得分:2)
如果检查未通过,您可能会在模块中抛出错误 - 这将阻止模块加载。例如,尝试将其保存为Test.psm1:
throw "Could not load module.";
尝试使用Import-Module。\ Test.psm1加载它。您将收到错误,如果您之后调用Get-Module,您将看到模块尚未加载。
答案 1 :(得分:0)
这不是你问题的确切答案,但它仍然是一个解决方案。在你描述的场景中,我会采取另一种方式。创建一个外部脚本(不是模块的一部分),它可以检查先决条件本身,如果缺少某些内容或者总是加载模块,则根本不加载模块,检查成功/失败 - 模块公开的内容并卸载模块以防万一失败然后使用此脚本代替Import-Module
。