在 PowerShell 中定义模块
模块是一组相关的 PowerShell 功能,它们被捆绑在一起形成一个单元。 出于本课堂的目的,可以将它们视为托管多个 cmdlet 的容器。 模块有助于将 cmdlet 组织到可分发单元中。 Microsoft和其他软件公司作为其应用程序和服务的管理工具的一部分提供模块。
可以通过运行以下命令来检查可用模块的列表:
Get-Module -ListAvailable
若要使用模块的 cmdlet,必须将该模块加载到当前的 PowerShell 会话中。 这通常会自动进行,但根据配置,可能需要通过运行 Import-Module cmdlet 显式加载模块。 一些服务器产品(如 Microsoft Exchange Server)提供了一个快捷方式,可以通过它访问一个似乎专用的管理 shell。 但是,这确实是一个正常的 PowerShell 控制台会话,其中已加载特定于应用程序的模块。
自动加载
在 Windows PowerShell 版本 3.0 及更新版本中,如果运行属于该模块的 cmdlet,模块会自动加载。 如果包含 cmdlet 的模块位于模块加载路径下的文件夹中,则这一点有效。 默认情况下,这些文件夹包括 %systemdir%\WindowsPowerShell\v1.0\Modules 和 %userprofiles%\Documents\WindowsPowerShell\Modules。 文件夹列表存储在环境变量中 $env:PSModulePath 。 按名称显式导入模块时,PowerShell 会检查该环境变量引用的位置。
对于 PowerShell 7,PSModulePath 包含以下位置:
C:\Users\<user>\Documents\PowerShell\ModulesC:\Program Files\PowerShell\ModulesC:\Program Files\PowerShell\7\ModulesC:\Program Files\WindowsPowerShell\ModulesC:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
注释
使用 Windows PowerShell 时,通常使用 环境变量(指向 %systemdir%\WindowsPowerShell\v1.0)和模块路径(即使用 $PSHome 表示法)的组合来引用 %systemdir%\WindowsPowerShell\v1.0\Modules 路径$PSHome\Modules。 对于 PowerShell 7.0, $PSHome 环境变量引用 C:\Program Files\PowerShell\7。