Private/Get-PSUAssignmentPrincipalId.ps1
function Get-PSUAssignmentPrincipalId { [CmdletBinding()] param( [Parameter(Mandatory = $true)] $Assignment ) # Try normal path first $principalId = $Assignment.PrincipalId $principalType = $Assignment.PrincipalType $assignmentId = if ($Assignment.Id) { $Assignment.Id } else { $Assignment.RoleAssignmentName } # Fallback if PrincipalId is missing if (-not $principalId -and $Assignment.ObjectId) { $principalId = $Assignment.ObjectId if (-not $principalType -and $Assignment.ObjectType) { $principalType = $Assignment.ObjectType } } # If still blank, mark explicitly if (-not $principalId) { Write-Warning "Assignment [$assignmentId] has no PrincipalId or ObjectId." } [PSCustomObject]@{ PrincipalId = $principalId PrincipalType = $principalType AssignmentId = $assignmentId } } |