Public/Okta/Get-OktaAppUserReport.ps1
function Get-OktaAppUserReport { Param ( [Parameter()] [string] $SearchString, [Parameter()] [string] $Filter, [Parameter()] [string] $Id ) $Url = $OKTACredential.GetNetworkCredential().username $Token = $OKTACredential.GetNetworkCredential().Password $Headers = @{ "Authorization" = "SSWS $Token" "Accept" = "application/json" "Content-Type" = "application/json" } if (-not $Filter -and (-not $SearchString) -and (-not $Id)) { $RestSplat = @{ Uri = "https://$Url.okta.com/api/v1/users/" Headers = $Headers Method = 'Get' } } if ($id) { $RestSplat = @{ Uri = 'https://{0}.okta.com/api/v1/users/?filter=id eq "{1}"' -f $Url, $id Headers = $Headers Method = 'Get' } } if ($SearchString) { $RestSplat = @{ Uri = "https://$Url.okta.com/api/v1/users/?q=$SearchString" Headers = $Headers Method = 'Get' } } $User = Invoke-RestMethod @RestSplat foreach ($CurUser in $User) { $Id = $CurUser.Id $FirstName = $CurUser.Profile.FirstName $LastName = $CurUser.Profile.LastName $Login = $CurUser.Profile.Login $Email = $CurUser.Profile.Email $RestSplat = @{ Uri = 'https://{0}.okta.com/api/v1/apps?filter=user.id+eq+"{1}"' -f $Url, $Id Headers = $Headers Method = 'Get' } $AppsInUser = Invoke-RestMethod @RestSplat foreach ($App in $AppsInUser) { [pscustomobject]@{ FirstName = $FirstName LastName = $LastName Login = $Login Email = $Email AppName = $App.Name AppStatus = $App.Status AppSignOnMode = $App.SignOnMode } } } } |