ps/Modules/Alkami.PowerShell.Common/Public/Copy-ObjectProperties.ps1
2023-05-30 22:51:22 -07:00

29 lines
936 B
PowerShell

function Copy-ObjectProperties {
<#
.SYNOPSIS
Copies properties from one object to another
#>
param(
[Parameter(Position = 0, Mandatory = $true)]
[Object]$SourceObject,
[Parameter(Position = 1, Mandatory = $true)]
[Object]$DestinationObject,
[Parameter(Position = 2, Mandatory = $false)]
[string[]]$PropertiesToSkip
)
foreach ($property in $SourceObject.PsObject.Properties) {
if (($PropertiesToSkip -notcontains $property.Name) -and
($null -ne $DestinationObject.PsObject.Properties.Match($property.Name)) -and
($DestinationObject.PsObject.Properties[$property.Name].TypeNameOfValue -eq $property.TypeNameOfValue) -and
($DestinationObject.PsObject.Properties[$property.Name].IsSettable)) {
$DestinationObject.PsObject.Properties[$property.Name].Value = $property.Value
}
}
$DestinationObject
}