将默认参数添加到 Powershell Core 脚本

Adding default parameter to Powershell Core script

我对 Powershell 非常陌生,我正在尝试为脚本文件中的两个参数添加默认值,但在执行时仍然要求我输入缺少的参数。

参数为

param(
    [string]
    $Build = "production",

    [bool]
    $Deploy = 1
)

所以当我做 ./script.ps1 -Build 时,我得到一个错误

/Users/akshayrajgollahalli/GitHub/gollahalli.com/script.ps1 : Missing an argument for parameter 'Build'. Specify a parameter of type 'System.String' and try again.

但是根据 Microsoft blog 这就是我正在做的事情。我不确定这里有什么错误。

更新 1:

另一种情况是我可能想要像 ./script.ps1 -Build local 这样的东西,它应该覆盖 production 值。

使用默认值定义可选参数时,您可以在调用中省略参数以使脚本使用此默认值,或使用它让脚本使用其他值而不是默认值。

举个例子。该脚本将简单地输出用于 $Build$Deploy 参数的任何内容:

param(
    [string]
    $Build = "production",

    [bool]
    $Deploy = 1
)

Write-Host "Using Build value:  $Build"
Write-Host "Using Deploy value: $Deploy"

如果我这样使用它:

& 'D:\script1.ps1'

它没有接收到 $Build 和 $Deploy 的任何替代值,因此输出将是:

Using Build value:  production
Using Deploy value: True

每当您想 运行 脚本使用默认值以外的值时,您可以将参数和值添加到调用中,如下所示:

& 'D:\script1.ps1' -Build "something else"

输出:

Using Build value:  something else
Using Deploy value: True

希望这能解释