PowerShell自定义模块能否为单个函数设置独立版本?
为PowerShell模块中单个函数设置独立版本
实现步骤
1. 为目标函数添加独立版本属性
修改Add-Border函数的定义,在[CmdletBinding()]中指定Version参数,示例如下:
function Add-Border { [CmdletBinding(Version='1.2.0.0')] param( # 保留原函数的参数定义 [Parameter(Mandatory=$true)] [string]$InputString ) # 函数原有逻辑 Write-Output "`n+$('-' * $InputString.Length)+`n| $InputString |`n+$('-' * $InputString.Length)+`n" }
该设置会让Add-Border拥有独立版本,其他未指定Version参数的函数仍会继承模块清单的版本号。
2. 验证函数版本
执行以下命令查看Add-Border的独立版本:
Get-Command Add-Border | Select-Object Name, Version
也可直接获取版本对象用于后续对比:
$addBorderVersion = (Get-Command Add-Border).Version
3. 检查用户是否使用更新版本
编写简单逻辑判断当前Add-Border版本是否符合要求:
# 定义要求的最低版本 $requiredVersion = [version]'1.2.0.0' $currentVersion = (Get-Command Add-Border -ErrorAction SilentlyContinue).Version if ($null -eq $currentVersion) { Write-Warning "未检测到Add-Border函数" } elseif ($currentVersion -ge $requiredVersion) { Write-Host "当前使用的Add-Border版本为 $currentVersion,符合要求" -ForegroundColor Green } else { Write-Warning "当前Add-Border版本为 $currentVersion,低于要求的 $requiredVersion,请更新" }
4. 更新函数版本
后续只需修改Add-Border函数中[CmdletBinding(Version='x.x.x.x')]的版本号,无需改动模块清单(.psd1)的版本,其他函数的版本仍会与模块清单保持同步。
内容的提问来源于stack exchange,提问作者Fitzgery
相关产品推荐
相关产品推荐

