Resolve-MsalClientApplication.ps1
function Resolve-MsalClientApplication { [CmdletBinding()] param( # Client Application configuration such as ClientId. [Parameter(Mandatory=$true, ValueFromPipeline=$true)] [object[]] $ClientApplications, # Forces a fresh authentication by creating a new TokenCache instance. [Parameter(Mandatory=$false)] [switch] $NewTokenCache ) process { foreach ($ClientApplication in $ClientApplications) { if ($ClientApplication -is [Microsoft.Identity.Client.IClientApplicationBase]) { [Microsoft.Identity.Client.IClientApplicationBase] $MsalClientApplication = $ClientApplication } elseif ($ClientApplication -is [Microsoft.Identity.Client.ApplicationOptions] -or $ClientApplication -is [string]) { if ($NewTokenCache) { [Microsoft.Identity.Client.IClientApplicationBase] $MsalClientApplication = New-MsalClientApplication $ClientApplication | Add-MsalClientApplication -PassThru } else { [Microsoft.Identity.Client.IClientApplicationBase] $MsalClientApplication = Select-MsalClientApplication $ClientApplication } } elseif ($ClientApplication -is [hashtable]) { if ($ClientApplication.ContainsKey('ClientSecret') -or $ClientApplication.ContainsKey('ClientCertificate')) { [Microsoft.Identity.Client.ConfidentialClientApplicationOptions] $ApplicationOptions = New-Object Microsoft.Identity.Client.ConfidentialClientApplicationOptions -Property $ClientApplication } else { [Microsoft.Identity.Client.PublicClientApplicationOptions] $ApplicationOptions = New-Object Microsoft.Identity.Client.PublicClientApplicationOptions -Property $ClientApplication } if ($NewTokenCache) { [Microsoft.Identity.Client.IClientApplicationBase] $MsalClientApplication = New-MsalClientApplication $ApplicationOptions | Add-MsalClientApplication -PassThru } else { [Microsoft.Identity.Client.IClientApplicationBase] $MsalClientApplication = Select-MsalClientApplication $ApplicationOptions } } else { # Otherwise, write a terminating error message indicating that input object type is not supported. $errorMessage = "Cannot parse ClientApplication type [{0}]." -f $InputObject.GetType() Write-Error -Message $errorMessage -Category ([System.Management.Automation.ErrorCategory]::ParserError) -ErrorId "ResolveMsalClientApplicationFailureTypeNotSupported" } } Write-Output $MsalClientApplication } } |