我有一个包含多个参数的脚本,并且我已经记录了适当的帮助注释(例如.SYNOPSIS、.DESCRIPTION、.PARAMETER)。我的组织中的几个不同的用户将使用这个 powershell 脚本,一些知道 powershell 并且会从具有特定参数值的 powershell 调用它,还有一些不知道 powershell 并且只需在 Windows 资源管理器中右键单击脚本文件并选择使用 PowerShell 运行(因此参数将使用其默认值)。
我的难题是在没有一堆重复代码的情况下,在 powershell 中执行此操作的最佳方法是什么。在我看来,这些是我的选择:
1 - 只需编写一个为所有参数提供默认值的 DoStuff.ps1 脚本。这允许它直接从 Windows 资源管理器运行,但对于想要将其用作自己脚本中的函数的 powershell 用户来说感觉很笨重,因为而不是编写:
Do-Stuff param1 param1
他们将做:
.\DoStuff.ps1 param1 param2
2 - 在 DoStuff.ps1 中,将它执行的操作移动到 DoStuff 函数中,并在函数声明之后调用 DoStuff 函数,并将参数传递到脚本中。这仍然允许从 Windows 资源管理器运行脚本,以及开发人员将脚本点源到他们自己的脚本中,以便他们可以访问该函数。不利的是,当开发人员点源脚本时,脚本将使用默认参数调用函数(除非我允许他们为脚本提供可选的 Switch 参数以触发函数不被调用)。尽管如此,这意味着我必须复制所有脚本帮助文本,以便它同时显示脚本和函数(描述、参数描述等)。
我想不出任何其他选择。理想情况下,我只能在 .ps1 文件中编写函数并使用“default”关键字标记函数,这样如果调用脚本,则默认运行该函数;但我不认为 PowerShell 提供这样的东西。
您认为在这种情况下最好的方法是什么。有什么我忽略或不知道的吗?谢谢。