"排序"作为PowerShell动词的替代方案?

mhu*_*mhu 6 powershell

我有一个PowerShell功能Sort-VersionLabels.当我将此函数添加到模块时,Import-Module会抱怨:

WARNING: Some imported command names include unapproved verbs which might make 
them less discoverable.  Use the Verbose parameter for more detail or type
Get-Verb to see the list of approved verbs.
Run Code Online (Sandbox Code Playgroud)

根据,排序是"保留动词".

什么可能是一个好的(和批准的)替代品?

更新
该函数采用以下形式的版本号数组:<major>.<minor>.<revision>[-<milestone[nr]>].里程碑可以是dev,alpha,betastable(以该顺序).因此标准的Sort-Object功能不起作用.

它将排序的数组输出到管道线.

bri*_*ist 6

我认为ConvertTo-SortedVersionLabels,虽然有点尴尬,但使用经过批准和非保留的动词,但仍然很清楚.

您还可以将参数排序到不同的函数,例如Get-VersionLabels -Sorted.

你将如何工作取决于你的模块整体以及你是否有这样的功能来修改.目前的帖子还不清楚,但如果您使用更多详细信息进行编辑,我们可能会提供更多建议.


Mat*_*att 5

这个问题的核心将产生自以为是的结果.这会产生一个难题,因为您正在寻找当前答案无法解决的特定内容.我知道您正在寻找一种逻辑上适合您的功能的解决方案,同时处于标准动词列表中,这是令人钦佩的.为了继续我先前的评论,我将尝试为所有可能适合您情况的已批准动词说明一个案例.我将经常参考您的问题中链接的批准动词列表,并将使用"AVL"以简化未来.

  1. :对AVL的评论是指使用它来代替Arrange.作为Sort的同义词安排将是一个很好的选择.坚持推荐,我们应该使用Group
  2. Set:它是Sort的同义词.但是,在AVL中,它与写入,重置,分配或配置相关联,这与您的cmdlet无关.尽管如此,如果您愿意放弃使用现有PowerShell cmdlet创建的分解,它仍然在列表中.
  3. 我真的没有3号.
  4. 更新:这是一个弱的情况,但AVL将其用作维护[一个cmdlet]状态[和]准确性的方法.
  5. 命令/组织:不在AVL中,但我发现这些非常合适,并且目前不与任何现有动词冲突.

最终,AVL会被诅咒并做任何你想做的事情.Sort是一个非常好的适合你正在尝试做的.您也可以-DisableNameChecking在导入模块时使用.毕竟这只是一个警告.在我看来,布里亚特主义者的回答也很好.

来自评论的奖金

不是你要求它,但当你说我们必须启用名称检查时,我想到了这一点.纯娱乐!

$reservedVerbs = "ForEach","Format","Group","Sort","Tee"
$approvedVerbList = (Get-Verb).Verb

Get-Command -Module  Microsoft.WSMan.Management | ForEach-Object{
    If ($approvedVerbList -notcontains ($_.Name -split "-")[0]){
        Write-Warning "$($_.Name) does not use an approved verb."
    }

    If ($reservedVerbs -contains ($_.Name -split "-")[0]){
        Write-Warning "$($_.Name) is using a reserved verb."
    }
}
Run Code Online (Sandbox Code Playgroud)