我是PowerShell的新手,试图了解Param block
,我有一个简单的程序来获取两个值并打印出来,但是当我运行以下代码时,它要求输入secondvalue
但跳过了first value
?
为什么不要求输入firstvalue
作为输入?
function print {
Param(
[Parameter(mandatory = $true)] $firstvalue,
[Parameter(mandatory = $true)] $secondvalue
)
write-host first : $firstvalue
write-host second : $secondvalue
}
print($firstvalue, $secondvalue)
示例输出:
./first.ps1
cmdlet print at command pipeline position 1
Supply values for the following parameters:
secondvalue: second data
first :
second : second data
谢谢, 任何帮助表示赞赏。
答案 0 :(得分:1)
您的参数块对我来说有用。
我认为问题在于您如何调用该函数。由于这两个参数都是强制性的,因此您只能按名称调用该函数。
function print {
Param(
[Parameter(mandatory = $true)] $firstvalue,
[Parameter(mandatory = $true)] $secondvalue
)
write-host first : $firstvalue
write-host second : $secondvalue
}
print
这可能会有所帮助。 about_Functions
答案 1 :(得分:1)
核心问题是调用print
时要传递数组。
print($firstvalue, $secondvalue)
括号创建一个包含两个元素的数组; $ firstvalue和$ secondvalue。该数组被解释为为$ firstvalue提供的值,但$ secondvalue却一无所有。由于需要$ secondvalue,因此会发生错误。尝试使用:
print $firstvalue $secondvalue