internal/functions/format/ConvertFrom-RestUserGuest.ps1

function ConvertFrom-RestUserGuest {
    <#
    .SYNOPSIS
        Converts user objects from REST response to UserGuest objects.

    .DESCRIPTION
        Converts user objects from REST response to a structured format
        using the PSMicrosoftEntraID.Users.UserGuest type.

    .PARAMETER InputObject
        The REST response representing a user or an array of users.

    .EXAMPLE
        PS C:\> Invoke-RestRequest -Service 'graph' -Path users -Query $query -Method Get -ErrorAction Stop | ConvertFrom-RestUserGuest

        Retrieves Guest users and converts them into a user-friendly format.

    .NOTES
        Author: Your Name
        Last Updated: 2025-03-06
    #>


    [CmdletBinding()]
    param (
        $InputObject
    )

    if (-not $InputObject) { return }

    $jsonString = $InputObject | ConvertTo-Json -Depth 4

    $type = if ($InputObject -is [array]) {
        [PSMicrosoftEntraID.Users.UserGuest[]]
    }
    else {
        [PSMicrosoftEntraID.Users.UserGuest]
    }

    [byte[]] $byteArray = [System.Text.Encoding]::UTF8.GetBytes($jsonString)
    [System.IO.MemoryStream] $stream = [System.IO.MemoryStream]::new($byteArray)

    $byteArray = [System.Text.Encoding]::UTF8.GetBytes($jsonString)
    $stream = [System.IO.MemoryStream]::new($byteArray)
    $serializer = [System.Runtime.Serialization.Json.DataContractJsonSerializer]::new($type)
    return $serializer.ReadObject($stream)
}