parts/TssSecretObject.ps1

<#
.Synopsis
    Creates a TssSecret object to output the SecretModel object
.Description
    Creates an instance of the TssSecret class to output the SecretModule object
#>

param(
    [pscustomobject]$SecretRecord
)

begin {
    $secretProperties = $SecretRecord.PSObject.Properties.Where({$_.Name -notin 'responseCodes'}).Name
    $itemProperties = $SecretRecord.items[0].PSObject.Properties.Name
}

process {
    $items = @()
    foreach ($i in $SecretRecord.items) {
        $item = [TssSecretItem]::new()
        foreach ($iProp in $itemProperties) {
            if ($iProp -in $item.PSObject.Properties.Name) {
                $item.$iProp = $i.$iProp
            } else {
                Write-Warning "Property $sProp does not exists on the TssSecret class. Please create a bug report at https://github.com/thycotic-ps/thycotic.secretserver/issues/new/choose"
            }
        }
        $items += $item
    }

    foreach ($s in $SecretRecord) {
        $outSecret = [TssSecret]::new()
        foreach ($sProp in $secretProperties) {
            if ($sProp -eq 'items') {
                $outSecret.Items = $items
            }
            if ($sProp -in $outSecret.PSObject.Properties.Name) {
                $outSecret.$sProp = $s.$sProp
            } else {
                Write-warning "Property $sProp does not exist in the TssSecret class. Please create a bug report at https://github.com/thycotic-ps/thycotic.secretserver/issues/new/choose"
            }
        }
    }
    return $outSecret
}