gpt4 book ai didi

function - 编写等效的 powershell 脚本和函数的最佳实践

转载 作者:行者123 更新时间:2023-12-03 01:20:36 25 4
gpt4 key购买 nike

我有一个包含多个参数的脚本,并且我已经记录了适当的帮助注释(例如 .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 提供这样的东西。

您认为在这种情况下最好的方法是什么。有什么我忽略或不知道的吗?谢谢。

最佳答案

but feels clunky for the powershell users that want to use it as a function from their own scripts



根据您的描述,默认参数似乎是最好的(或者至少是最差的)方法。

但不是命名你的脚本 DoStuff.ps1命名它并调用它,这样它就可以更像一个内部函数来调用:
  • 用破折号命名:Do-Stuff.ps1
  • 请记住,您不需要指定 ps1
  • 如果脚本位于 $env:Path 的文件夹中那么您不需要指定路径。

  • 还要考虑脚本可以从相对路径加载模块:您可以将大部分代码放在前端(右键单击它)脚本加载并调用的脚本模块中。脚本作者自己加载模块。

    关于function - 编写等效的 powershell 脚本和函数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397763/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com