Microsoft在PowerShell CmdLet参数命名方面的一致性

时间:2016-12-31 11:02:02

标签: powershell parameters naming convention consistency

假设我写了一个包含此命令的PowerShell脚本:

Get-ChildItem -Recurse

但我写道:

Get-ChildItem -Re

节省时间。经过一段时间后,我升级了PowerShell版本,Microsoft决定向Get-ChildItem添加一个名为“-Return”的参数,例如,根据是否找到任何项目,返回True或False。

在那个虚拟场景中,我是否可以编辑所有以前的脚本以确保脚本按预期运行?我理解微软试图节省我的打字时间,但这是我的担忧,因此我可能总是会尝试编写完整的参数名称。

除非你知道我不知道的事情。谢谢你的见解!

1 个答案:

答案 0 :(得分:11)

这听起来更像是一个咆哮而不是一个问题,但要回答:

  

在那个虚拟场景中,我是否可以编辑所有以前的脚本以确保脚本按预期运行?

是!

您应 始终 使用脚本中的完整参数名称(或任何其他可重复使用代码段)。

在交互式使用PowerShell时,自动解析部分参数名称,别名和其他快捷方式非常方便。它让我们启动ls -re *.ps1|% FullName 并执行:

Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName

当我们想要找到配置文件中所有脚本的路径时。非常适合探索!

但如果我要将该功能合并到脚本中,我会这样做:

SELECT f.*
FROM foods f
INNER JOIN food_ingredients i
ON f.food_id = i.food_id
INNER JOIN descriptions d
ON i.description_id = d.description_id
GROUP BY f.food_id, f.NAME
HAVING sum(CASE WHEN d.description = 'FAT' THEN per_100_g ELSE 0 END) = 10
AND sum(CASE WHEN d.description = 'Protein' THEN per_100_g ELSE 0 END) = 20;

不仅仅是因为你提到的原因,而且还因为一致性和可读性 - 如果我的同事出现并且可能不熟悉我正在使用的捷径,他仍然能够辨别其含义和管道的预期产量。

注意:GitHub上目前有three open issuesPSScriptAnalyzer中为此添加警告规则 - 我确信项目维护者会喜欢这样做: - )