我对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
的值。
答案 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
希望这能解释