Public/Okta/Get-OktaAppGroupReport.ps1
function Get-OktaAppGroupReport { 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/groups/" Headers = $Headers Method = 'Get' } } if ($id) { $RestSplat = @{ Uri = 'https://{0}.okta.com/api/v1/groups/?filter=id eq "{1}"' -f $Url, $id Headers = $Headers Method = 'Get' } } if ($SearchString) { $RestSplat = @{ Uri = "https://$Url.okta.com/api/v1/groups/?q=$SearchString" Headers = $Headers Method = 'Get' } } $Group = Invoke-RestMethod @RestSplat foreach ($CurGroup in $Group) { $Id = $CurGroup.Id $GName = $CurGroup.Profile.Name $GDescription = $CurGroup.Profile.Description $RestSplat = @{ Uri = 'https://{0}.okta.com/api/v1/apps?filter=group.id+eq+"{1}"' -f $Url, $Id Headers = $Headers Method = 'Get' } $AppsInGroup = Invoke-RestMethod @RestSplat foreach ($App in $AppsInGroup) { [pscustomobject]@{ GroupName = $GName GroupDesc = $GDescription GroupId = $CurGroup.Id AppName = $App.Name AppStatus = $App.Status AppSignOnMode = $App.SignOnMode } } } } |