首页/系统/Windows 运维速查/模块管理与 Get-Module
PowerShell 基础66 条

模块管理与 Get-Module

模块是命令的集装箱:Get-Module 查看已加载、Import-Module 显式加载、Remove-Module 卸载;定位命令来源与版本差异的入口。

Windows 运维速查系统更新于 2026-10-13

命令是干什么的

模块是 PowerShell 命令的集装箱:它把相关 cmdlet、函数与类型打包并附带版本信息。Get-Module 查看已加载的模块,Get-Module -ListAvailable 列出可加载模块,Import-Module 显式加载,Remove-Module 卸载。定位命令来源、排查版本差异都从这里入手。

为什么要在入口检查

模块被卸载后其中的命令会立即不可用,依赖它的脚本也随之失败;模块目录被清理或版本被替换,往往要等到下一次调度执行才以“命令找不到”的形式暴露。在脚本入口先做模块可用性检查,能把环境问题提前到执行开始前,而不是跑到中途才中断。

基本信息

适用平台PowerShell 2.0 及以后,3.0 起支持模块自动加载
语法Get-Module -ListAvailable;Import-Module 名称;Remove-Module 名称
搜索路径由 $env:PSModulePath 决定,多路径以分号分隔
要点同名命令可能来自不同模块,用 Get-Command -All 查全部来源

典型使用场景

  • 确认域管理命令是否可用:检查 ActiveDirectory 模块是否已安装
  • 脚本开头显式 Import-Module,避免依赖隐式自动加载
  • 排查命令冲突:同名 cmdlet 来自多个模块时确认实际生效的那个
  • 查看模块版本,判断目标机上是否具备所需功能
  • 长驻会话里卸载旧模块再加载新版本,验证更新是否生效

常用示例

常用示例
Get-Module -ListAvailable | Select-Object Name, Version   # 列出可用模块与版本
Import-Module ActiveDirectory                             # 显式加载域管理模块
Get-Command Get-ADUser -All                               # 查看该命令的全部来源
Get-Command Get-ADUser | Select-Object Name, Source, Version
Remove-Module ActiveDirectory                             # 在当前会话卸载
Import-Module D:\mods\MyMod.psm1 -Force                  # 指定路径强制重新加载

常用命令读法

命令作用注意
Get-Module查看已加载模块只显示当前会话已导入的
Get-Module -ListAvailable列出可加载模块结果多时用 Select-Object 精简
Import-Module显式加载模块可用 -RequiredVersion 指定版本
Get-Command -All列出同名命令的所有来源排查冲突的关键手段
Import-Module -Force强制重新加载模块文件更新后使用
$env:PSModulePath模块搜索路径路径缺失会让自动加载失效
要确认某个命令来自哪里,最直接的是 Get-Command 名称 | Select-Object Source,比逐个试 Import-Module 快得多。
PowerShell 3.0 起支持自动加载:首次使用某命令时会自动导入其所在模块;自动加载失败通常是模块未安装,或 $env:PSModulePath 不含其目录。

易错点

  • 自动加载失败多因模块未安装,或 $env:PSModulePath 未包含安装目录
  • 32 位与 64 位 PowerShell 的模块路径不同,混用时会提示命令不存在
  • 同名命令来自多个模块,不查 Source 就下结论,可能一直在调用旧版本
  • 更新模块文件后未重新加载(或未加 -Force),会话里仍执行旧代码

数据来源与参考

  • Microsoft Learn:about_Modules

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌