我使用以下代码创建了一个自定义对象数组:
$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
会返回我输入的所有值。我不确定我哪里出错了。
答案 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}