Private/Copy-ColorScriptHashtable.ps1
|
function Copy-ColorScriptHashtable { param([System.Collections.IDictionary]$Source) if (-not $Source) { return @{} } $clone = @{} foreach ($key in $Source.Keys) { $value = $Source[$key] switch ($true) { { $value -is [System.Collections.IDictionary] } { $clone[$key] = Copy-ColorScriptHashtable $value break } { $value -is [System.Array] } { $clone[$key] = $value.Clone() break } { $value -is [System.ICloneable] -and $value -isnot [string] } { $clone[$key] = $value.Clone() break } { $value -is [System.Collections.IEnumerable] -and $value -isnot [string] } { $buffer = New-Object System.Collections.Generic.List[object] foreach ($item in $value) { $null = $buffer.Add($item) } $clone[$key] = $buffer.ToArray() break } default { $clone[$key] = $value } } } return $clone } |