首页 > 解决方案 > 将默认参数添加到 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.

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

更新1:

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

标签: powershellpowershell-core

解决方案


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

举个例子。该脚本将简单地输出用于$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

希望这能解释


推荐阅读