使用模块、导入模块和#requires-Modules之间的区别



有没有关于导入PowerShell模块的这三种不同方法如何工作的详细参考?我目前在脚本中看到using moduleImport-Module的不同行为。

导入依赖项的工作方式似乎有所不同。按照依赖关系的顺序使用Import-Module可以解决这个问题,但使用using module似乎无法解决依赖关系。

这个脚本是如何创建导入语句的被告,还是这些不同命令的工作方式存在文档中的差异?

我也没有找到任何指导方针,但我进行了以下比较,以了解什么是什么。

Import-Module

这是一个cmdlet。这意味着它是

  • 接受管道:'PSReadLine','PSColor' | Import-Module
  • 接受飞溅:$params = @{Name = 'PSReadLine'; OutBuffer = 1} ; Import-Module @params
  • 支持标志和参数:Import-Module -PassThru PSReadLine
  • 几乎可以在任何地方调用:function Load {Import-Module PSReadLine}

因此,它非常适合于自组织模块加载和动态重新加载。

using module

using是一个关键字,所以它不是像Import-Module那样可以传递的东西。它不像cmdlets那样接受参数,也不适用于管道。简而言之,它是一个原始的。另一个限制是,它必须放在脚本的顶部,在所有其他语句之前。

需要使用using module的一种情况是要加载类和枚举。Import-Module#Requires都不会将模块中定义的类添加到您的作用域中。一般来说,它是为随意的模块加载而设计的。

#Requires -Modules

这用于断言某些模块已加载(以及其他模块(。与其他命令不同,如果模块无法加载Import-Module,则此命令将失败。另一个区别是,它只在脚本中工作,而在shell中不起任何作用。

最新更新