Private/Get-ABMEnvironment.ps1
function Get-ABMEnvironment { [CmdletBinding( SupportsShouldProcess = $False, ConfirmImpact = "None", SupportsPaging = $False, PositionalBinding = $True) ] param ( [Parameter(Mandatory = $true)] [ValidateSet("Business Manager", "School Manager")] [String] $Environment, [Parameter(Mandatory = $true)] [ValidateScript({ Test-Path $_ })] [String] $KeyPath, [Parameter(Mandatory = $false)] [ValidateSet("v1")] [String] $APIVersion = "v1", [Parameter(Mandatory = $true)] [Switch] $UseSecretManagement ) switch ($Environment) { "Business Manager" { $Instance = "ABM" $Scope = "business.api" $BaseUrl = "https://api-business.apple.com" } "School Manager" { $Instance = "ASM" $Scope = "school.api" $BaseUrl = "https://api-school.apple.com" } } # Set client_id, key_id needed to get JWT $client_id = Get-ABMSecret -Name "$($Instance)-CLIENT-ID" -AsPlainText -UseSecretManagement:$UseSecretManagement $key_id = Get-ABMSecret -Name "$($Instance)-KEY-ID" -AsPlainText -UseSecretManagement:$UseSecretManagement # Get JWT $client_assertion = Get-ABMJWT -ClientId $client_id -KeyId $key_id -KeyPath $KeyPath $sessiontokendata = @{ tokenUrl = "https://account.apple.com/auth/oauth2/token" clientId = $client_id jwt = $client_assertion scope = $Scope } $SessionToken = Get-ABMSessionToken @sessiontokendata $output = [PSCustomObject]@{ Instance = $Instance ClientId = $client_id KeyId = $key_id BaseUrl = $BaseUrl BaseAPIUrl = ('{0}/{1}' -f $BaseUrl, $APIVersion) SessionToken = $SessionToken.access_token ExpiryDateTime = (Get-Date).AddSeconds($SessionToken.expires_in) APIVersion = $APIVersion } return $output } |