我正在从命令行工作。假设我的示例如下所示:
Param(
[Parameter()] [string]$greeting="HelloWorld"
)
从命令行我可以这样做:mygreeting
它将输出HelloWorld
或者我可以这样做:mygreeting -greeting="whatever"
它将输出whatever
为什么我不能输入这个?:
mygreeting -greeting
没有得到参数丢失的错误?
在代码中,我希望能够基本上说:
如果指定了问候但没有值,则根据其他事项有条件地设置值
如果未指定问候语,请使用默认值
答案 0 :(得分:1)
这是设计使然。在PowerShell中,您通过传递参数,指定参数的名称,后跟您要传递的值(除非它是一个开关)或者您使用仅传递值的位置参数。)
答案 1 :(得分:1)
你可以用这个:
function test-test {
[CmdletBinding()]
Param (
[parameter(Position = 0)]
[string]$greetings = "hi world"
)
$greetings
}
设置有关参数的值 你可以这样称呼它:
test-test "something"
或
test-test -greetings "something"
但你不能像parameter="value"
如果你想使用它,你应该使用:
test-test ($greetings = "ssss")
像这样。
但实际上这个$greetings
与函数中的变量不同,因为oscope比你的函数更重要。