微软在 PowerShell CmdLet 参数命名方面的一致性
Microsoft's Consistency in PowerShell CmdLet Parameter Naming
假设我编写了一个包含此命令的 PowerShell 脚本:
Get-ChildItem -Recurse
但是我写了:
Get-ChildItem -Re
为了节省时间。过了一段时间后,我升级了 PowerShell 版本,Microsoft 决定向 Get-ChildItem 添加一个名为“-Return”的参数,例如 returns True 或 False,具体取决于是否找到任何项目.
在那个虚拟场景中,我是否必须编辑我以前的所有脚本以确保脚本按预期运行?我理解 Microsoft 试图节省我的打字时间,但这是我的担忧,因此我可能总是会尝试写下完整的参数名称。
当然,除非你知道一些我不知道的事情。感谢您的见解!
这听起来更像是咆哮而不是问题,但要回答:
In that virtual scenario, do I have I to edit all my former scripts to ensure that the script will function as expected?
是的!
您应该始终在脚本(或任何其他可重用代码片段)中使用完整的参数名称。
自动解析部分参数名称、别名和其他快捷方式非常方便以交互方式使用 PowerShell。它让我们启动 powershell.exe
并执行:
ls -re *.ps1|% FullName
当我们想要找到配置文件中所有脚本的路径时。非常适合探索!
但如果我要将该功能合并到脚本中,我会这样做:
Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName
不仅仅是因为您提到的原因,还因为一致性和可读性 - 如果我的一位同事出现并且可能不熟悉我正在使用的快捷方式,他仍然能够辨别管道的含义和预期输出。
注意:目前有 three open issues on GitHub to add warning rules for this in PSScriptAnalyzer - 我相信项目维护者会喜欢这个:-)
假设我编写了一个包含此命令的 PowerShell 脚本:
Get-ChildItem -Recurse
但是我写了:
Get-ChildItem -Re
为了节省时间。过了一段时间后,我升级了 PowerShell 版本,Microsoft 决定向 Get-ChildItem 添加一个名为“-Return”的参数,例如 returns True 或 False,具体取决于是否找到任何项目.
在那个虚拟场景中,我是否必须编辑我以前的所有脚本以确保脚本按预期运行?我理解 Microsoft 试图节省我的打字时间,但这是我的担忧,因此我可能总是会尝试写下完整的参数名称。
当然,除非你知道一些我不知道的事情。感谢您的见解!
这听起来更像是咆哮而不是问题,但要回答:
In that virtual scenario, do I have I to edit all my former scripts to ensure that the script will function as expected?
是的!
您应该始终在脚本(或任何其他可重用代码片段)中使用完整的参数名称。
自动解析部分参数名称、别名和其他快捷方式非常方便以交互方式使用 PowerShell。它让我们启动 powershell.exe
并执行:
ls -re *.ps1|% FullName
当我们想要找到配置文件中所有脚本的路径时。非常适合探索!
但如果我要将该功能合并到脚本中,我会这样做:
Get-ChildItem -Path $Home -Filter *.ps1 -Recurse |Select-Object -ExpandProperty FullName
不仅仅是因为您提到的原因,还因为一致性和可读性 - 如果我的一位同事出现并且可能不熟悉我正在使用的快捷方式,他仍然能够辨别管道的含义和预期输出。
注意:目前有 three open issues on GitHub to add warning rules for this in PSScriptAnalyzer - 我相信项目维护者会喜欢这个:-)