powershell-发布模块到gallery

前言

日常开发的powershell的函数,可以保存为脚本文件(.ps1)和模块文件(.psm1.psd1),方便后续导入使用。

参考官方文档

导入脚本文件

假设有个脚本文件Get-MrPSVersion.ps1,使用Dot-Sourcing函数导入命令如下:

#相对路径
. .\Get-MrPSVersion.ps1
#绝对路径
. C:\Demo\Get-MrPSVersion.ps1

导入模块文件

假设写了几个函数,并保存在MyScriptModule.psm1模块文件中,使用Import-Module函数导入模块如下:

Import-Module C:\MyScriptModule.psm1

要利用模块自动加载,需要将脚本模块保存在与.psm1文件具有相同基名称的文件夹中,并保存在 $env:PSModulePath中指定的位置。

$env:PSModulePath

模块清单

所有模块都应该有一个模块清单。New-ModuleManifest用于创建模块清单。 Path是所需的唯一值。 但是,如果未指定RootModule,则该模块将不起作用。 如果决定使用 PowerShellGet 将模块上传到 NuGet 存储库,最好指定AuthorDescription,因为该情况需要这些值 。Update-ModuleManifest用于更新清单。

New-ModuleManifest -Path $env:ProgramFiles\WindowsPowerShell\Modules\MyScriptModule\MyScriptModule.psd1 -RootModule MyScriptModule -Author 'Mike F Robbins' -Description 'MyScriptModule' -CompanyName 'mikefrobbins.com'

定义公共和专用函数

有两种方法定义公共和专用函数。

.psm1模块文件使用Export-ModuleMember函数

function Get-MrPSVersion {
    $PSVersionTable
}

function Get-MrComputerName {
    $env:COMPUTERNAME
}

Export-ModuleMember -Function Get-MrPSVersion

.psd1模块清单文件使用FunctionsToExport函数

FunctionsToExport = 'Get-MrPSVersion'

不需要在.psm1文件和模块清单的FunctionsToExport部分同时使用两个Export-ModuleMember
使用其中一个已足够。

发布脚本或者模块

在gallery上创建API Key

gallery上注册账户,然后在API Keys下面创建和复制API Key。

创建脚本或者模块的清单模板

New-ModuleManifestNew-ScriptFileInfocmdlet 将创建清单模板,内含所有清单元素的占位符。根据需要进行修改。

预验证项

Test-ModuleManifest 可捕获导致已安装的模块不可用的常见问题。 必须先对每个模块运行此命令,然后才能将其发布到 PowerShell 库中。同样,Test-ScriptFileInfo 可用于验证脚本中的元数据。必须先对与模块分开发布的每个脚本运行此命令,然后才能将其发布到 PowerShell 库中。

发布

必须使用 Publish-ScriptPublish-Module 将项发布到 PowerShell 库中。 这两个命令都需要:

  • 将发布的项的路径。 对于模块,使用为模块指定的文件夹。 如果指定的文件夹包含同一模块的多个版本,必须指定 RequiredVersion。
  • Nuget API 密钥。 这是 PowerShell 库的“我的帐户”页面上显示的 API 密钥。

为了避免出错,强烈建议在发布之前尝试使用 -WhatIf -Verbose 运行命令。 这将节省相当多的时间,因为每次将项发布到 PowerShell 库时,都必须更新项的清单部分中的版本号。

Publish-Module -Path ".\MyModule" -NugetAPIKey "GUID" -WhatIf -Verbose
Publish-Script -Path ".\MyScriptFile.PS1" -NugetAPIKey "GUID" -WhatIf -Verbose

仔细检查输出,如果没有看到任何错误或警告,请重复运行命令,而不使用 -WhatIf。

建议发布时使用最新的powershell和NuGet,否则可能发布失败。

最终效果

在这里插入图片描述
使用命令下载便可以使用了:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值