Private/Resolve-PSUPrincipalDisplayFromCache.ps1
function Resolve-PSUPrincipalDisplayFromCache { param( [string] $PrincipalId, [object] $UserObj, [array] $GroupObjs, [hashtable] $Cache # cache: id -> @{ DisplayName = '', Type = '' } ) if ($PrincipalId -eq $UserObj.Id) { return [PSCustomObject]@{ PrincipalId = $PrincipalId; PrincipalType = 'User'; PrincipalDisplayName = $UserObj.DisplayName } } if ($GroupObjs) { $g = $GroupObjs | Where-Object { $_.Id -eq $PrincipalId } if ($g) { return [PSCustomObject]@{ PrincipalId = $PrincipalId; PrincipalType = 'Group'; PrincipalDisplayName = $g.DisplayName } } } if ($Cache.ContainsKey($PrincipalId)) { $entry = $Cache[$PrincipalId] return [PSCustomObject]@{ PrincipalId = $PrincipalId; PrincipalType = $entry.Type; PrincipalDisplayName = $entry.DisplayName } } # fallback unknown return [PSCustomObject]@{ PrincipalId = $PrincipalId; PrincipalType = 'Unknown'; PrincipalDisplayName = $null } } |