Powershell参数无法按预期工作

时间:2018-09-24 15:30:25

标签: powershell powershell-v3.0

我是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

谢谢, 任何帮助表示赞赏。

2 个答案:

答案 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