В приведенном ниже упрощенном коде PS я не понимаю, почему массив $MyPeople
изменяется после вызова функции changeData
. Эта переменная массива должна быть просто скопирована, и я ожидаю, что функция вернет другую переменную массива в $UpdatedPeople
и не коснется $MyPeople
:
function changeData {
Param ([PSCustomObject[]]$people)
$changed_people = $people
$changed_people[0].Name = "NEW NAME"
return $changed_people
}
# Original data:
$Person1 = [PSCustomObject]@{
Name = "First Person"
ID = 1
}
$Person2 = [PSCustomObject]@{
Name = "Second Person"
ID = 2
}
$MyPeople = $Person1,$Person2
"`$MyPeople[0] =`t`t" + $MyPeople[0]
"`n# Updating data..."
$UpdatedPeople = changeData($MyPeople)
"`$UpdatedPeople[0] =`t" + $UpdatedPeople[0]
"`$MyPeople[0] =`t`t" + $MyPeople[0]
Вывод на консоль:
$MyPeople[0] = @{Name=First Person; ID=1}
# Updating data...
$UpdatedPeople[0] = @{Name=NEW NAME; ID=1}
$MyPeople[0] = @{Name=NEW NAME; ID=1}
Спасибо!