Public/Set-AzNetworkToolsToken.ps1

function Set-AzNetworkToolsToken {

    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory=$true, ParameterSetName='ServicePrincipal')]
        [string]$servicePrincipalId        
        ,
        [Parameter(Mandatory=$true, ParameterSetName='ServicePrincipal')]
        [SecureString]$servicePrincipalSecret
        ,
        [Parameter(Mandatory=$true, ParameterSetName='Credential')]
        [PSCredential]$credential
        ,
        [Parameter(Mandatory=$true, ParameterSetName='ServicePrincipal')]
        [Parameter(Mandatory=$true, ParameterSetName='Credential')]
        [string]$tenantId 
        ,
        [Parameter(ParameterSetName='Interactive')]
        [Parameter(ParameterSetName='ServicePrincipal')]
        [Parameter(ParameterSetName='Credential')]
        [switch]$reset
        ,
        [Parameter(ParameterSetName='Interactive')]
        [Parameter(ParameterSetName='ServicePrincipal')]
        [Parameter(ParameterSetName='Credential')]
        [string]$apiUrl

    )

    if (!$reset) {
        $azContext = Get-AzContext
    }
    
    if ($apiUrl) {
        $varaznetworktoolsResourceUrl = $apiUrl
    }
    else{
        $varaznetworktoolsResourceUrl = $aznetworktoolsResourceUrl
    }

    if (!$azContext) {
        
        Write-Log "Getting authentication token"
        
        try {
        if ($servicePrincipalId) {
            $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $servicePrincipalId, $servicePrincipalSecret

            Connect-AzAccount -ServicePrincipal -TenantId $tenantId -Credential $credential | Out-Null

            Set-AzContext -Tenant $tenantId | Out-Null
        }
        elseif ($credential -ne $null) {
            Connect-AzAccount -Credential $credential -Tenant $tenantId | Out-Null
        }
        else {
            Connect-AzAccount -UseDeviceAuthentication | Out-Null
        }

        $azContext = Get-AzContext
    }
    catch {
        Write-Error "Failed to authenticate with Azure. Please check your credentials and try again."
        return
    }
}

    Write-Log "Connnected: $($azContext.Account)"

    $script:aznetworktoolsToken = (Get-AzAccessToken -ResourceUrl $varaznetworktoolsResourceUrl -AsSecureString ).Token
}