PowerShell 模块清单 - 自动加载所需模块

2023-11-21

我正在创建一个模块,该模块依赖于我需要加载到全局环境中的其他几个模块。我尝试创建一个脚本并使用 ScriptsToProcess 导入模块,但看起来对RequiredModules 的检查发生在 ScriptstoProcess 运行之前。

模块清单中是否有一种漂亮、干净的方法来要求模块并在尚未加载时自动加载它?如果无法加载模块,则RequiredModule将抛出错误。


在 PowerShell 3 及更高版本中,RequiredModulesare自动加载

这也是确保人们使用 PowerShellGet(即PowerShell 画廊)如果您要分发该模块,请安装您的依赖项。

如果缺少所需的模块,它仍然会失败,但否则会完全按照您希望的方式工作。

在PowerShell 2中,无法自动加载RequiredModules

在任何一种情况下,用户都可以通过键入手动加载需求Import-Module RequiredModule, YourModule-- 如果已经导入,他们将不会获得第二个实例......

您还可以在 NestedModules 中指定模块。即使在 PowerShell 2 中,这些也会加载到模块“内部”,但不会seem当资源已经加载时会对资源产生负面影响。然而,正如@JasonMArcher提醒我的那样,在PowerShell 2中,如果您的模块被卸载(通过Remove-Module),NestedModules会与您的模块一起卸载,并且会发生这种情况即使它们是单独预加载的由用户创建,这最终可能会产生非常奇怪的错误报告,因为您的用户不会想到这一点。

另一种选择,适用于所有版本的 PowerShell, 是调用Import-Module在模块的顶部(在 psm1 脚本中,检查确保模块尚未加载后)-ErrorAction Stop设置为,如果依赖模块的导入失败,则您的模块的导入也会失败。

if (!(Get-Module Dependency)) { ## Or check for the cmdlets you need
    ## Load it nested, and we'll automatically remove it during clean up
    Import-Module Dependency -ErrorAction Stop
}

实际上,如果您想检查版本......

if (!(Get-Module Dependency | Where { $_.Version -ge "2.5" )) { 
    ## Load version 2.5 (or newer), or die 
    Import-Module Dependency -Version 2.5 -ErrorAction Stop
}

请记住,这并不作为文档,因此如果您分发该模块,您的用户将不知道依赖项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell 模块清单 - 自动加载所需模块 的相关文章

随机推荐

  • 动态生成的 HTML 的格式 - 没人关心吗?

    I have veryWeb开发经验很少 所以这可能是一个非常基本的问题 只是 以我有限的经验来看do有 一点PHP 一点Ruby on Rails 动态生成HTML的方式似乎是格式化的只是 没关系 它最终变得丑陋 有奇怪的缩进 没有人关心
  • 流式传输 xml-conduit 解析结果

    我想用xml conduit 具体来说Text XML Stream Parse为了从大型 XML 文件中延迟提取对象列表 作为测试用例 我使用最近重新发布的 StackOverflow 数据转储 为了简单起见 我打算从中提取所有用户名st
  • 理解范围和数组中的 ruby​​ splat

    我试图理解之间的区别 1 9 and 1 9 如果我将它们分配给变量 它们的工作方式是相同的 splat1 1 9 splat1 1 2 3 4 5 6 7 8 9 splat2 1 9 splat2 1 2 3 4 5 6 7 8 9 但
  • 如何启用/禁用 FloatingActionButton 行为

    我正在开发一些片段中的应用程序 我想隐藏浮动操作按钮 当我设置android 可见性 消失 当我上下滑动时 行为动画向我显示浮动操作按钮 有什么方法可以禁用 启用 FloatingActionButton 行为 谢谢你提前 这是我的代码 Q
  • 使用 JavaScript 算出 DIV 可以容纳多少个字符

    有谁知道使用 JavaScript 计算出 HTML 中的 DIV 块可以容纳多少个字符的最佳方法是什么 任何建议都会有很大帮助 您可以迭代地将字符添加到隐藏的 div 中并检查其宽度 不确定是否有更好的方法 编辑 类似这样的事情 var
  • 查找与所有给定字符串匹配的最简单的正则表达式

    是否有一种算法可以从一组字符串生成正则表达式 可能仅限于简化语法 以便对与正则表达式匹配的所有可能字符串进行求值 从而重现初始字符串集 为具有非常 复杂 语法 包括任意重复 断言等 的正则表达式语法找到这样一种算法可能是不现实的 所以让我们
  • 如何解决 Angular“已达到 10 $digest() 迭代”错误

    已达到 10 次 digest 迭代 流产 有很多 在最近 5 次迭代中触发的观察者 等意义上的支持文本 但其中很多文本是来自各种函数的 Javascript 代码 是否有诊断此问题的经验法则 这是一个总是可以缓解的问题 还是存在足够复杂的
  • 在 Firefox 中使用 History.pushState 使我的图标消失

    使用类似的东西 history pushState null document title 在我的网站中 我的网站图标在 Firefox 中消失 但它在 chrome 中有效 这是在页面加载时添加 favicon 的 javascript
  • 为什么我的 D2009 exe 会生成带有名为 ATTnnnnn.DAT 的附件的电子邮件

    为什么我的 D2009 exe 会生成带有名为 ATTnnnnn DAT 的附件的电子邮件 而在 D2007 中编译的相同源代码会生成带有正确命名为原始文件名的附件的电子邮件 我正在使用 D2007 和 D2009 附带的相应 Indy 库
  • Android - 按住按钮重复操作

    我会立即承认我是开发新手 并且正在尝试 Android 我一直在尝试在网络上搜索 以找到有关如何实现一些 按住按钮重复操作 的建议 我已经从按钮创建了一个自定义数字键盘 并且想要类似退格的行为 到目前为止 我拜访了一位以前没有编写过 And
  • 异步 lambda 中的参数[重复]

    这个问题在这里已经有答案了 我试图同时运行多个任务 但遇到了一个我似乎无法理解或解决的问题 我曾经有一个这样的功能 private void async DoThings int index bool b await SomeAsynchr
  • 优化 postgres 相似性查询(pg_trgm + gin 索引)

    我定义了以下索引 CREATE INDEX users search idx ON auth user USING gin username gin trgm ops first name gin trgm ops last name gi
  • 将 System.Json 用于非 Silverlight 项目?

    关于如何做有什么想法吗 如果不可能 什么是 C 的好的 JSON 库 System Json现在可通过以下方式在非 Silverlight 项目中使用NuGet Net 的包管理系统 并有望作为 vnext 核心框架的一部分发布 NuGet
  • 在 if 语句中使用按位 &

    在C中 我可以写一个if语句 if firstInt 1 但是当我尝试在 Java 中做同样的事情时 编译器告诉我 不兼容的类型 并说我需要一个boolean而不是int 有没有办法用Java编写C代码 以下任何一项都应该适合您 if fi
  • 带有字符串值的 Jquery ui 滑块?

    我正在与jQuery UI 滑块 这是我正在使用的代码 function slider slider value 1 min 0 max 5 step 1 slide function event ui amount val ui valu
  • java.io.IOException:无效常量类型:19 at 5

    我有一个project 它用spring boot 2 java 9和行家 它可以使用成功构建mvn clean package To run spring boot应用程序我使用了命令 java jar java cloud rest a
  • 缩放图像以最大程度地适合可用空间并将其居中

    我正在构建一个单页应用程序 在其中一个视图中 我想显示一张图像 该图像必须占用尽可能多的可用空间 最重要的 它必须保持纵横比 它不能被裁剪 它必须水平和 或垂直拉伸 不改变纵横比 以覆盖最大可能的空间 图像和视口的大小未知 它必须居中 不需
  • 有什么好的参考资料或工具可用于将 ASP 转换为 ASP.NET? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 您在转换过程中使用了哪些工具 实践或文档 您会推荐给其他人 你可以试试微软的 ASP 到 ASP NET 1 x 迁移助手 ASP 到 ASP NE
  • 如何使用 RDCOMClient 从辅助帐户发送 Outlook 电子邮件 - 翻译现有的 VBA 代码?

    我正在尝试使用辅助电子邮件地址发送电子邮件RDCOMClient 我接受了以下建议如何使用 R RDCOMClient 检索 Outlook 收件箱电子邮件 并尝试用 VBA 编写并翻译 但无法获得正确的命令 注意 我不能使用SentOnB
  • PowerShell 模块清单 - 自动加载所需模块

    我正在创建一个模块 该模块依赖于我需要加载到全局环境中的其他几个模块 我尝试创建一个脚本并使用 ScriptsToProcess 导入模块 但看起来对RequiredModules 的检查发生在 ScriptstoProcess 运行之前