How to detect if Azure Powershell session has expired? How to detect if Azure Powershell session has expired? powershell powershell

How to detect if Azure Powershell session has expired?


Azure RM but this will check if there is an active account otherwise throw up a prompt.

if ([string]::IsNullOrEmpty($(Get-AzureRmContext).Account)) {Login-AzureRmAccount}

Cheers


You need to run Get-AzureRmContext and check if the Account property is populated. In the latest version of AzureRM, Get-AzureRmContext doesn't raise error (the error is raised by cmdlets that require active session). However, apparently in some other versions it does.

This works for me:

function Login{    $needLogin = $true    Try     {        $content = Get-AzureRmContext        if ($content)         {            $needLogin = ([string]::IsNullOrEmpty($content.Account))        }     }     Catch     {        if ($_ -like "*Login-AzureRmAccount to login*")         {            $needLogin = $true        }         else         {            throw        }    }    if ($needLogin)    {        Login-AzureRmAccount    }}

If you are using the new Azure PowerShell API, it's much simpler

function Login($SubscriptionId){    $context = Get-AzContext    if (!$context -or ($context.Subscription.Id -ne $SubscriptionId))     {        Connect-AzAccount -Subscription $SubscriptionId    }     else     {        Write-Host "SubscriptionId '$SubscriptionId' already connected"    }}


I'd make it a little simpler than what Peter proposed. Just insert these lines somewhere at the beginning of your script:

Try {  Get-AzureRmContext} Catch {  if ($_ -like "*Login-AzureRmAccount to login*") {    Login-AzureRmAccount  }}

Cheers,