使用 module、Import-Module 和 #requires -Modules 之间的区别

Ste*_*eve 10 powershell

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

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

该脚本是否对导入语句的创建方式有异议,或者这些不同命令的工作方式是否存在记录差异?

rad*_*row 5

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

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。它接受参数的方式与 cmdlet 不同,并且不能与管道一起使用。简而言之,它是一个原始的。另一个限制是它必须放置在脚本之上,位于所有其他语句之前。

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

#Requires -Modules

这用于断言某些模块已加载(以及其他模块)。与其他命令相反,如果模块无法加载Import-Module. 另一个区别是它仅在脚本中工作——它在 shell 中不执行任何操作。