I would be most grateful if somebody could assist in solving this issue for me. I have created a rather complex module, with many properties, methods etc. I create arrays of these objects and have the need to clone one. As the objects are referenced by the array, I am really struggling to get this to work. Here is some sample code:
Function MyModule {
param(
[Parameter(Position=0,ValueFromPipeline=$false,Mandatory=$true)][System.String]$MyVariable
)
Begin{
New-Module -AsCustomObject -ArgumentList $MyVariable -ScriptBlock {
param(
[Parameter(Position=0,ValueFromPipeline=$false,Mandatory=$true)][System.String]$test
)
Export-ModuleMember -Variable test
}
}
}
$MyArray = @()
$MyArray += MyModule -MyVariable "Member1"
$MyArray += MyModule -MyVariable "Member2"
$MyArray += MyModule -MyVariable "Member3"
Write-Host "Initial MyArray:"
$MyArray
$MyArray += $MyArray[0]
$MyArray[-1].Test = "Member4"
$MyArray += $MyArray[1].PsObject.Copy()
$MyArray[-1].Test = "Member5"
$MyArray += $MyArray[2].PsObject.Copy()
$MyArray[-1].Test = "Member6"
Write-Host
Write-Host "Duplicated Elements MyArray:"
$MyArrayHere is the output:
Initial MyArray: test ---- Member1 Member2 Member3 Duplicated Elements MyArray: Member4 Member5 Member6 Member4 Member5 Member6
As you can see, members 4, 5 & 6 are still the same object as what was members 1, 2, 3.
Thank you in advance for any assistance/solutions.
Regards,
Mark Rhoades-Brown