Install-Module 是什么
Install-Module 从 PowerShell Gallery(NuGet 仓库)下载并安装模块,安装后 Import-Module 或在支持自动加载的场景下直接调用其中的命令。它让「ActiveDirectory 管理、Pester 测试、PSWindowsUpdate 打补丁」这类扩展能力变成一条命令。安装本身要考虑三件事:装到哪个作用域(谁能用)、网络能否访问仓库、来源是否可信。
基本信息
| 适用平台 | Windows PowerShell 5.1 与 PowerShell 7(默认仓库为 PSGallery) |
|---|---|
| 常用命令 | Find-Module 搜索、Install-Module 安装、Update-Module 更新、Uninstall-Module 卸载、Get-InstalledModule 列表 |
| 常用参数 | -Name、-Scope、-RequiredVersion、-Repository、-Force、-AllowClobber、-AcceptLicense |
| 作用域 | -Scope CurrentUser 免提权;-Scope AllUsers 需管理员。默认值随版本变化,脚本里显式指定最稳 |
| 前置条件 | 首次使用需 NuGet 提供程序(低版本可能提示安装) |
| 离线方案 | Save-Module -Path 下载到本地目录,拷贝到目标机后 Import-Module 使用 |
典型使用场景
- 补齐管理模块:域环境装 ActiveDirectory 模块后用一行命令批量查账号
- 测试脚本:装 Pester 后为自动化脚本添加单元测试
- 运维工具:装 PSWindowsUpdate 之类工具实现补丁巡检与安装
- 版本对齐:用 -RequiredVersion 安装与生产环境一致的模块版本,避免行为差异
- 离线交付:在联网机器 Save-Module,拷到隔离网机器再导入
常用示例
常用示例
Find-Module PSWindowsUpdate | Select-Object Name, Version # 搜索并确认版本
Install-Module PSWindowsUpdate -Scope CurrentUser -Force # 装到当前用户,免提权
Install-Module Pester -RequiredVersion 5.5.0 -Scope CurrentUser # 指定版本,保证环境一致
Get-InstalledModule # 列出已装模块与版本
Update-Module PSWindowsUpdate -Force # 升级到最新版
Install-Module ImportExcel -AllowClobber -Scope CurrentUser # 允许覆盖同名命令
Import-Module ActiveDirectory # 安装后显式导入
Get-Command -Module ActiveDirectory | Measure-Object # 核对命令是否可用参数与场景对照
| 参数 | 作用 | 什么时候用 |
|---|---|---|
| -Scope CurrentUser | 装到当前用户目录,无需管理员 | 个人排障与临时工具,权限受限环境 |
| -Scope AllUsers | 装到全机器目录,所有用户可用 | 服务器统一运维环境,需提权 |
| -Force | 跳过确认提示,覆盖已有安装 | 自动化脚本;首次信任仓库提示 |
| -RequiredVersion | 安装指定版本 | 与生产环境对齐,防止新版行为变更 |
| -AllowClobber | 允许覆盖已有同名命令 | 模块与内置命令重名时 |
| -Repository | 指定非默认仓库 | 内部私有仓库或镜像源 |
首次从 PSGallery 安装会提示「不受信任的存储库」,用 -Force 可跳过交互;也可以先用 Set-PSRepository -Name PSGallery -InstallationPolicy Trusted 把仓库标记为受信任,再执行安装。
受控网络常见两种做法:配置代理让 PowerShell 能访问 Gallery,或在一台联网机器上 Save-Module 下载后拷贝到目标机。隔离网环境不要指望 Install-Module 直接成功,提前准备离线包。
离线与私有源
离线与私有源
Save-Module -Name PSWindowsUpdate -Path D:\offline\modules # 联网机下载到目录
Copy-Item D:\offline\modules\* -Destination C:\Program Files\WindowsPowerShell\Modules -Recurse -Force
Import-Module PSWindowsUpdate -Verbose # 目标机导入
Get-PSRepository | Select-Object Name, SourceLocation # 查看可用仓库
Register-PSRepository -Name Corp -SourceLocation https://nuget.corp.local/v2 # 注册内部源从公共仓库安装模块等于在本机执行第三方代码,且模块通常以当前用户权限运行。生产服务器建议走内部仓库、固定版本并做来源审查,不要直接在服务器上安装来源不明的热门模块。