scripts/Get-IdentityNowCertCampaign.ps1
function Get-IdentityNowCertCampaign { <# .SYNOPSIS Get IdentityNow Certification Campaign(s). .DESCRIPTION Get IdentityNow Certification Campaign(s). .PARAMETER campaignID An IdentityNow Certification Campaign(s). .PARAMETER completed (boolean) Completed only campaigns. Defaults to True .PARAMETER limit Number of campaigns to retrieve .EXAMPLE Get-IdentityNowCertCampaign -completed $false .EXAMPLE Get Certification Campaign using ID of the campaign (ID not campaignFilterId) Get-IdentityNowCertCampaign -campaignID 2c9180856708ae38016709f4812345c3 .LINK http://darrenjrobinson.com/sailpoint-identitynow #> [cmdletbinding()] param( [Parameter(Mandatory = $false, ValueFromPipeline = $true)] [string]$campaignID, [Parameter(Mandatory = $false, ValueFromPipeline = $true)] [boolean]$completed = $true, [Parameter(Mandatory = $false, ValueFromPipeline = $true)] [string]$limit = '999999' ) # IdentityNow Admin User $adminUSR = [string]$IdentityNowConfiguration.AdminCredential.UserName.ToLower() $adminPWDClear = [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($IdentityNowConfiguration.AdminCredential.Password)) # Generate the password hash # Requires Get-Hash from PowerShell Community Extensions (PSCX) Module # https://www.powershellgallery.com/packages/Pscx/3.2.2 $passwordHash = Get-Hash -Algorithm SHA256 -StringEncoding utf8 -InputObject ($($adminPWDClear) + (Get-Hash -Algorithm SHA256 -StringEncoding utf8 -InputObject ($adminUSR)).HashString.ToLower()) $adminPWD = $passwordHash.ToString().ToLower() $clientSecretv3 = [System.Runtime.InteropServices.marshal]::PtrToStringAuto([System.Runtime.InteropServices.marshal]::SecureStringToBSTR($IdentityNowConfiguration.v3.Password)) # Basic Auth $Bytesv3 = [System.Text.Encoding]::utf8.GetBytes("$($IdentityNowConfiguration.v3.UserName):$($clientSecretv3)") $encodedAuthv3 = [Convert]::ToBase64String($Bytesv3) $Headersv3 = @{Authorization = "Basic $($encodedAuthv3)" } # Get v3 oAuth Token # oAuth URI $oAuthURI = "https://$($IdentityNowConfiguration.orgName).api.identitynow.com/oauth/token" $v3Token = Invoke-RestMethod -Method Post -Uri "$($oAuthURI)?grant_type=password&username=$($adminUSR)&password=$($adminPWD)" -Headers $Headersv3 $utime = [int][double]::Parse((Get-Date -UFormat %s)) if ($v3Token.access_token) { try { if ($campaignID) { $IDNCertCampaigns = Invoke-RestMethod -Method Get -Uri "https://$($IdentityNowConfiguration.orgName).api.identitynow.com/cc/api/campaign/getCertifications?_dc=$($utime)&campaignId=$campaignID" -Headers @{Authorization = "$($v3Token.token_type) $($v3Token.access_token)" } return $IDNCertCampaigns.items } else { $IDNCertCampaigns = Invoke-RestMethod -Method Get -Uri "https://$($IdentityNowConfiguration.orgName).api.identitynow.com/cc/api/campaign/list?_dc=$($utime)&completedOnly=$($completed)&start=0&limit=$($limit)" -Headers @{Authorization = "$($v3Token.token_type) $($v3Token.access_token)" } return $IDNCertCampaigns.items } } catch { Write-Error "Failed to retrieve Certifcation Campaigns. $($_)" } } else { Write-Error "Authentication Failed. Check your AdminCredential and v3 API ClientID and ClientSecret. $($_)" return $v3Token } } |