helpers/New-CustomObject.ps1
function New-CustomObject { param ( [Parameter(ValueFromPipeline)] [Object] $InputObject, [Parameter()] [hashtable] $ExtraProperties, [Parameter()] [System.String[]] $ExcludedProperties, [Parameter()] [System.String] $TypeName ) PROCESS { $Properties = @{} foreach ($Property in $InputObject.PsObject.Properties) { $PropertyName = $Property.Name if ($PropertyName -notin $ExcludedProperties) { $Properties.$PropertyName = $Property.Value } } if ($ExtraProperties) { foreach ($Property in $ExtraProperties.GetEnumerator()) { $Properties.Add($Property.Name, $Property.Value) } } $Properties.PSTypeName = $TypeName New-Object -TypeName PSCustomObject -Property $Properties } } |