#发布到 PSGallery
#简介
PowerShell Gallery(PSGallery)是 Microsoft 托管的公共模块仓库。发布到 PSGallery 后,其他用户可以直接通过 Install-Module 安装。发布前需要注册账号、获取 API Key,并准备好带清单的模块目录。
#查看和注册仓库
查看当前仓库,必要时注册默认仓库并设为受信任:
Get-PSRepository
Register-PSRepository -Default
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
#获取 API Key
- 登录 PowerShell Gallery。
- 进入账户的 API Keys 页面。
- 创建一个新的 API Key,并妥善保存。
API Key 只应在发布时使用,不要写入脚本、配置文件或提交到版本控制。可以放在环境变量或密钥管理工具中:
$apiKey = $env:PSGALLERY_API_KEY
#发布模块
Publish-Module 的 -Path 指向包含模块清单的目录:
Publish-Module -Path ./MyModule `
-NuGetApiKey $apiKey `
-Repository PSGallery `
-Verbose
-Path 也可以指向 .psd1 文件。发布时 PowerShellGet 会读取清单中的模块名、版本、作者和依赖信息。
#更新版本
PSGallery 不允许覆盖已发布的同一版本。修改代码后,必须先提升 ModuleVersion 再发布。
版本号建议遵循语义化版本:
1.0.0:首个稳定版本。1.1.0:新增向后兼容的功能。1.1.1:修复问题。2.0.0:包含不兼容变更。
预发布版本通过清单的 PrivateData.PSData.Prerelease 标记:
@{
ModuleVersion = '1.3.0'
PrivateData = @{
PSData = @{
Prerelease = 'beta1'
}
}
}
#发布前检查
建议至少完成以下检查:
Test-ModuleManifest ./MyModule/MyModule.psd1
Invoke-ScriptAnalyzer -Path ./MyModule -Recurse
Invoke-Pester -Path ./tests
确认无误后,可以给 Publish-Module 加上 -WhatIf 参数预览发布操作。
还应检查:
- 模块名称在 PSGallery 上是否已被占用。
Description、Author、Tags等元数据是否完整。- 是否包含测试文件、临时文件或敏感信息。
- 依赖模块是否能在目标环境中安装。
#注意事项
- API Key 等同于发布权限,泄露后应立即在账户中撤销并重新生成。
- 已发布的版本号不能重复使用,发布前务必确认版本。
- 发布需要网络连接,首次使用可能提示安装 NuGet 提供程序。
- 发布前先用
Test-ModuleManifest和 PSScriptAnalyzer 排除明显问题。 - 预发布版本在安装时需要显式允许预发布,例如
Install-Module -AllowPrerelease。