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

时间:2019-04-06 10:40:41

标签: powershell powershell-core

我对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的值。

1 个答案:

答案 0 :(得分:2)

在使用默认值定义可选参数时,您可以在调用中省去该参数以使脚本使用该默认值,也可以使用它使脚本使用其他内容代替默认值。

作为一个例子。该脚本将仅输出用于$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

希望这能解释