在Powershell中将对象添加到对象数组中

时间:2012-06-29 17:05:18

标签: arrays powershell scripting

我有这个脚本,我希望在每个foreach中为一个名为$Target的数组添加一个对象。

foreach ($Machine in $Machines)
{
  $TargetProperties = @{Name=$Machine}  
  $TargetObject = New-Object PSObject –Property $TargetProperties
  $Target= @()
  $Target =  $TargetObject
}

我知道它不起作用,因为$Target = $TargetObject使它等同于同一个对象。

如何附加到数组而不是替换?

2 个答案:

答案 0 :(得分:68)

要附加到数组,只需使用+=运算符。

$Target += $TargetObject

此外,您需要在循环之前声明$Target = @(),否则,它将在每个循环中清空数组。

答案 1 :(得分:0)

通常情况下,人们这样做时不会使用低效的“+=”,每次都会创建一个新的数组副本:

$Target = foreach ($Machine in $Machines)
{
  $TargetProperties = @{Name=$Machine}  
  $TargetObject = New-Object PSObject –Property $TargetProperties
}