向 Powershell Core 脚本添加默认参数

Aks*_*hay 0 powershell powershell-core

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

参数是

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

    [bool]
    $Deploy = 1
)
Run Code Online (Sandbox Code Playgroud)

所以当我这样做时,./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.
Run Code Online (Sandbox Code Playgroud)

但根据微软博客,这就是我正在做的。我不确定这里有什么错误。

更新 1:

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

The*_*heo 5

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

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

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

    [bool]
    $Deploy = 1
)

Write-Host "Using Build value:  $Build"
Write-Host "Using Deploy value: $Deploy"
Run Code Online (Sandbox Code Playgroud)

如果我像这样使用它:

& 'D:\script1.ps1'
Run Code Online (Sandbox Code Playgroud)

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

Using Build value:  production
Using Deploy value: True
Run Code Online (Sandbox Code Playgroud)

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

& 'D:\script1.ps1' -Build "something else"
Run Code Online (Sandbox Code Playgroud)

输出:

Using Build value:  something else
Using Deploy value: True
Run Code Online (Sandbox Code Playgroud)

希望这能解释