private/get-SpOAadObjectId.ps1
function get-SpOAadObjectId{ Param( [Parameter(Mandatory=$true)][String]$loginName ) try{ $aadObjectId = $loginName.Split("|")[-1].Replace("_o","") #owner notation in SPO should be stripped as this invalidates the GUID }catch{ return $Null } if([guid]::TryParse($aadObjectId, $([ref][guid]::Empty))){ return $aadObjectId }elseif($aadObjectId -match '@.*\.'){ if(!$global:aadUserIdCache){ $global:aadUserIdCache = @{} } if($global:aadUserIdCache.Keys -contains $aadObjectId){ if($False -eq $global:aadUserIdCache.$aadObjectId){ return $null }else{ return $global:aadUserIdCache.$aadObjectId } }else{ $aadUserId = $Null; $aadUserId = try{(new-GraphQuery -Method GET -Uri "$($global:octo.graphUrl)/v1.0/users/$($aadObjectId.replace('#ext#',''))?`$select=id").id}catch{} if($aadUserId){ $global:aadUserIdCache.$aadObjectId = $aadUserId return $aadUserId }else{ $global:aadUserIdCache.$aadObjectId = $False return $null } } }elseif($loginName.StartsWith("c:0-.f")){ return "AllInternalUsers" }elseif($loginName.StartsWith("c:0(.s|true")){ return "AllUsers" }elseif($loginName -eq "Anonymous"){ return "Anonymous" }else{ return $null } } |