有没有关于导入PowerShell模块的这三种不同方法如何工作的详细参考?我目前在脚本中看到using module
和Import-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中不起任何作用。