是否有理由明确导入模块?

时间:2015-03-11 16:13:44

标签: powershell powershell-module import-module

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

  

以下操作也会触发模块的自动导入   称为"模块自动加载。"

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

我知道已有一个已接受的答案,但我想加两分钱。

  • 明确记录脚本对模块的依赖性
  • 如果$ PSModuleAutoloadingPreference设置为“none”,则需要显式加载模块。您不知道用户是否已关闭此功能。