无网生产环境下如何用Install-Module安装PowerShell模块及搭建内部仓库
嘿,当然可以用Install-Module这类原生命令搞定离线安装!不用手动复制文件那么繁琐,我给你详细捋清楚操作步骤:
离线安装PowerShell模块的原生命令方案
第一步:在联网机器上准备离线模块包
先找一台能联网的机器,用Save-Module把目标模块(比如SqlServer)连同所有依赖项完整保存到本地文件夹:
# 保存SqlServer模块到指定目录,-Force会覆盖已存在的旧版本,确保拿到最新包 Save-Module -Name SqlServer -Path D:\OfflineModuleCache -Force
如果需要安装特定版本,加上-RequiredVersion参数就行,比如:
Save-Module -Name SqlServer -RequiredVersion 22.0.50 -Path D:\OfflineModuleCache -Force
这一步会把模块的完整文件结构(每个模块单独一个子文件夹)保存到你指定的路径里,包含所有必要的依赖组件。
第二步:在离线生产服务器上完成安装
把刚才的D:\OfflineModuleCache文件夹复制到离线服务器的任意路径(比如C:\Temp\OfflineModules),然后在服务器的PowerShell里运行以下命令:
# 从本地路径安装模块,-Force允许覆盖已安装的旧版本,-SkipPublisherCheck跳过发布者验证(离线场景必备) Install-Module -Name SqlServer -FromPath C:\Temp\OfflineModules -Force -SkipPublisherCheck
要是你要装指定版本,记得加上-RequiredVersion参数和对应的版本号。
这条命令会自动把模块安装到PowerShell的默认模块路径(就是你之前手动复制的C:\Program Files\WindowsPowerShell\Modules,或者用户级的模块路径),还会自动处理依赖项的安装,比手动复制更规范不容易出错。
小提醒
要确保离线服务器上的PowerShellGet版本至少是2.2.5以上,因为-FromPath参数是这个版本才新增的。如果服务器上的PowerShellGet版本太老,你可以先在联网机器上用Save-Module把PowerShellGet模块保存下来,先离线升级PowerShellGet,再安装其他模块。
内容的提问来源于stack exchange,提问作者jyao
相关产品推荐
相关产品推荐

