public/ConvertTo-OktaYaml.ps1
function ConvertTo-OktaYaml { param ( [Parameter(Mandatory)] [string] $OutputFolder, [string] $AuthServerQuery, [string[]] $ApplicationQuery, [string] $OriginMatch = '.*', [string[]] $GroupQueries, [switch] $WipeFolder, [switch] $IncludeOkta ) try { Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" if (Test-Path $OutputFolder) { if ($WipeFolder ) { Get-ChildItem $OutputFolder -Recurse | Remove-Item -ErrorAction Continue -Force -Recurse } } else { $null = New-Item $OutputFolder -ItemType Directory } $params = @{} if ($AuthServerQuery) { $params['q'] = $AuthServerQuery } $activity = 'Generating Yaml' Write-Progress -Activity $activity -Status "Processing auth servers" $auth = Get-OktaAuthorizationServer @params $auth | ForEach-Object { Export-OktaAuthorizationServer -AuthorizationServerId $_.id -OutputFolder "$OutputFolder\$($_.name)" Write-Progress -Activity $activity -Status "Processing auth servers" -CurrentOperation $_.name } Get-ChildItem $OutputFolder -Directory -Exclude '.*' | ForEach-Object { ConvertTo-OktaAuthorizationYaml $_ | Out-File (Join-Path $_ auth.yaml) } Write-Progress -Activity $activity -Status "Processing applications" $params = @{} Write-Warning ">>>>>>>>>>>>>>>>>>>> $ApplicationQuery" if ($ApplicationQuery) { Write-Warning ">>>>>>>>>>>>>>>>>>>> $ApplicationQuery" foreach ($appQuery in $ApplicationQuery) { $params['q'] = $appQuery ConvertTo-OktaApplicationYaml @params -OutputFolder "$OutputFolder" -IncludeOkta:$IncludeOkta } } else { ConvertTo-OktaApplicationYaml -OutputFolder "$OutputFolder" } Write-Progress -Activity $activity -Status "Processing trusted origins" ConvertTo-OktaTrustedOriginYaml -OriginMatch $OriginMatch | Out-File (Join-Path $OutputFolder trustedOrigins.yaml) Write-Progress -Activity $activity -Status "Processing groups" foreach ($g in $GroupQueries) { Write-Progress -Activity $activity -Status "Processing groups" -CurrentOperation $g $groups = Get-OktaGroup -q $g if ($groups) { $groups | ForEach-Object { $_.profile.name } | Sort-Object | Out-File (Join-Path $OutputFolder "groups-$g.yaml") } } } catch { Write-Error "$_`n$($_.ScriptStackTrace)" } } |