Private/New-DiscoveryFromJson.ps1

using module ..\Classes\Discovery.psm1
using module ..\Classes\DiscoveryTarget.psm1
using module ..\Classes\Schedule.psm1
function New-DiscoveryFromJson {
    Param(
        [PSCustomObject]$Discovery
    )

    $targets = @()
    foreach ($target in $Discovery.DiscoveryConfigModels[0].DiscoveryConfigTargets) {
        $targets += [DiscoveryTarget]@{
            NetworkAddressDetail = $target.NetworkAddressDetail
            SubnetMask = $target.SubnetMask
            AddressType = $target.AddressType
            Disabled = $target.Disabled
            Exclude = $target.Exclude
        }
    }

    $schedule = [Schedule]@{
        RunNow = $Discovery.Schedule.RunNow
        RunLater = $Discovery.Schedule.RunLater
        StartTime = $Discovery.Schedule.StartTime
        EndTime = $Discovery.Schedule.EndTime
        Cron = $Discovery.Schedule.Cron
    }

    return [Discovery]@{
        Id = $Discovery.DiscoveryConfigGroupId
        Name = $Discovery.DiscoveryConfigGroupName
        EmailRecipient = $Discovery.DiscoveryStatusEmailRecipient
        ConnectionProfile = $Discovery.DiscoveryConfigModels[0].ConnectionProfile
        DeviceType = $Discovery.DiscoveryConfigModels[0].DeviceType
        CreateGroup = $Discovery.CreateGroup
        TrapDestination = $Discovery.TrapDestination
        CommunityString = $Discovery.CommunityString
        Hosts = $targets
        Schedule = $schedule
    }
}