Arrays Powershell将数组传递到函数错误为空
我使用以下代码创建了一个自定义对象数组:Arrays Powershell将数组传递到函数错误为空,arrays,function,powershell,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 (afte
$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
传递到我编写的一个函数中,如果存在多个GondorGroupType
,该函数将进行比较。下面是检查数组是否成功通过的函数
function Comparison {
param ({[Parameter(Mandatory-=$True)[string[]]$myarray})
write-host $myarray
}
我的问题是,当我试图传递$LOTR
时,我得到一个错误无法将参数绑定到参数“myarray”,因为它是一个空数组
我做错了什么?我尝试过使用强制函数来接受空数组,但它是空的。但是在powershell命令行上打印$LOTR
会返回我输入的所有值。我不确定我会错在哪里 如果我对您的语法做一些更改,您的代码(某种程度上)可以正常工作
$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}
这里的空格
-Value
是打字错误吗?您的函数也有问题。谢谢您的修复,错误消失了。但是,当我从函数内部打印$myarray时,它仍然是空的。我应该使用字符串数组以外的其他对象吗?@HeyJude这完全取决于您对数据的处理方式。由于$LOTR是自定义对象数组,请从比较函数中删除[string[]]
,因为它不是字符串数组。如果您确实需要类型声明(您不需要),请使用[System.Array]
或[System.Object[]]