Private/Resolve-W365CloudPCFromRow.ps1

function Resolve-W365CloudPCFromRow {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [object]$InputObject
    )

    begin { }

    process {
        if ($InputObject.PSObject.TypeNames -contains 'WindowsCloudPC.CloudPC') {
            return $InputObject
        }

        $cloudPcId = if ($InputObject.PSObject.Properties['CloudPcId']) { $InputObject.CloudPcId } elseif ($InputObject.PSObject.Properties['Id']) { $InputObject.Id } else { $null }
        if ($cloudPcId) {
            $resolved = Get-CloudPC -Id $cloudPcId
            if ($resolved) {
                return $resolved
            }
        }

        $cloudPcName = if ($InputObject.PSObject.Properties['CloudPcName']) { $InputObject.CloudPcName } elseif ($InputObject.PSObject.Properties['Name']) { $InputObject.Name } else { $null }
        if ($cloudPcName) {
            $matches = @(Get-CloudPC -Name $cloudPcName)
            if ($matches.Count -eq 1) {
                return $matches[0]
            }
        }

        $null
    }

    end { }
}