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

Art*_*ian 2 convention parameters powershell naming consistency

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

Get-ChildItem -Recurse
Run Code Online (Sandbox Code Playgroud)

但相反,我写道:

Get-ChildItem -Re
Run Code Online (Sandbox Code Playgroud)

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

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

除非你当然知道我不知道的事情.感谢您的见解!

Mat*_*sen 11

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

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

是!

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

在交互式使用PowerShell时,自动解析部分参数名称,别名和其他快捷方式非常方便.它让我们开火powershell.exe并做:

ls -re *.ps1|% FullName
Run Code Online (Sandbox Code Playgroud)

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

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

Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName
Run Code Online (Sandbox Code Playgroud)

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


注意:GitHub上目前有三个 解决的问题是在PSScriptAnalyzer中为此添加警告规则- 我确信项目维护者会喜欢这个:-)