Powershell在数组中传递到函数错误空

时间:2014-12-02 16:59:31

标签: arrays function powershell

我使用以下代码创建了一个自定义对象数组:

$LOTR = @()
$myObject = new-object PSObject
$myObject | Add-Member -type NoteProperty -name GroupName - Value $city.name
$myObject | Add-Member -type NoteProperty -name GroupType - Value $city.type
$LOTR += $myObject

$LOTR (after iterations):

GroupName      GroupType
----------     ----------
Aragon          Gondor
Arwen           Rivendell

我想将$LOTR传递给我编写的函数,该函数可以比较多个Gondor GroupType是否存在。下面是一个功能,用于检查数组是否成功通过。

function Comparison {
    param ({[Parameter(Mandatory-=$True)[string[]]$myarray})
    write-host $myarray
}

我的问题是,当我尝试通过$LOTR时,我收到错误Cannot bind argument to parameter 'myarray' because it is an empty array

我做错了什么?我试过使用强制函数接受空数组,它是空的。但是在powershell命令行上打印$LOTR会返回我输入的所有值。我不确定我哪里出错了。

1 个答案:

答案 0 :(得分:0)

如果我对您的语法进行了一些更改

,您的代码可以正常工作(排序
$myObject | Add-Member -type NoteProperty -name GroupName - Value $city.name

如果在Value

之前移除了空格,则应如下所示
$myObject | Add-Member -type NoteProperty -name GroupName -Value $city.name

我更新了这个功能。在强制和花括号后删除连字符。格式化仅用于提高可读性

function Comparison{
    param (
        [Parameter(Mandatory=$True)]
        [string[]]$myarray)
    write-host $myarray
}

至于你为什么要投射到一个我不知道的字符串数组。

我的测试数据

得到以下输出
@{GroupName=Aragon; GroupType=Gondor} @{GroupName=Arwen; GroupType=Rivendell}