1

我刚刚阅读 PowerShell模块指南页面,我注意到该Import-Module部分有一行:

以下操作触发模块的自动导入,也称为“模块自动加载”。

  • 在命令中使用 cmdlet。例如,键入 Get-ExecutionPolicy 会导入包含 Get-ExecutionPolicy cmdlet 的 Microsoft.PowerShell.Security 模块。

既然如此,我们为什么要关心使用Import-Module?它不是总是自动照顾我们吗?在什么情况下我需要明确写出Import-Module

4

2 回答 2

4

您必须Import-Module在以下情况下使用:

  • 模块文件不在 Path 中包含的$PSModule路径中
  • 您有不同的模块名称相同但路径不同
  • 该模块已加载,您希望在对其进行修改后重新加载它。(带 -Force)
  • 仅从该模块导入特定的 cmdlet、函数或变量(分别使用-Cmdlet-Function-Variable参数)
  • 防止从模块加载 cmdlet 或函数,这些命令或函数会覆盖具有相同名称且已在当前会话 ( with -NoClobber)中加载的命令
  • 在此模块中为 cmdlet 的名词添加前缀 ( with -Prefix)
  • 从远程计算机导入模块(使用-PSSession参数 )

该列表并不完全详尽,但这些是Import-Modulecmdlet 的主要用例。

于 2015-03-11T16:57:12.973 回答
2

我知道已经有一个公认的答案,但我想加两分钱。

  • 显式记录脚本对模块的依赖关系
  • 如果 $PSModuleAutoloadingPreference 设置为“none”,则需要显式加载模块。您不知道用户是否已关闭此功能。
于 2015-03-11T18:01:40.527 回答