我应该对函数/脚本调用的所有参数使用冒号吗?

jul*_*gon 5 powershell parameter-passing

我最近开始使用 PowerShell,并注意到我可以使用参数名称和值之间的空格或使用冒号来传递参数值,如下所示:

MyFunction -Parameter value
or
MyFunction -Parameter:value
Run Code Online (Sandbox Code Playgroud)

我开始使用冒号是因为它可以更好地区分该行(出于可读性原因),但从我所见,大多数人不使用它。

我还阅读了一些关于使用switch类型化参数时这些方法之间的差异的信息,这些方法通常不需要值。在这种情况下,需要使用冒号,否则该命令将不起作用。这是出于一致性原因我倾向于对每个参数使用冒号的另一个原因。

还有什么我应该记住的吗?

Bac*_*its 4

一般来说,当我需要执行一个开关参数设置为 false 的函数时,我只需省略该开关即可。这就是开关参数的设计意图。我认为我会在参数中使用冒号的唯一一次是当我需要以编程方式确定开关的值时。

例如,假设我需要在偶数天获取常规目录列表,在奇数天获取递归目录列表:

Get-ChildItem -Path $Path -Recurse:$((Get-Date).Day % 2 -eq 1) | ForEach-Object {...}
Run Code Online (Sandbox Code Playgroud)

除此之外,我个人不会打扰冒号,除非它显着增加了给定语句的可读性。这不是常用的语法,因此稍后阅读您的代码的人更有可能对其感到困惑。