Azure Powershell检查过期凭据

时间:2015-05-12 11:49:26

标签: azure azure-powershell

我正在尝试使用powershell脚本检查用户帐户凭据是否已过期,如果是,请调用Add-AzureAccount命令行开关。这样,用户可以重新输入凭据而不是看到错误。

有没有办法使用Azure Powershell SDK检查过期?

5 个答案:

答案 0 :(得分:1)

我一直在使用try / catch成功,例如调用Get-AzureWebsite:

$websiteName = "..."

Try
{
    $website = Get-AzureWebsite -Name $websiteName -ErrorAction Stop;
}
Catch [System.ArgumentException]
{
    if ($_.Exception.Message -eq "Your Azure credentials have not been set up or have expired, please run Add-AzureAccount to set up your Azure credentials.")
    {
        Add-AzureAccount;

        Write-Host "Azure account set, re-run script to continue."
    }
    else
    {
        Write-Host $_.Exception.Message;
    }
}

我确信这种方法不如检查异常消息那么脆弱,所以请考虑这是方法的开始。

答案 1 :(得分:1)

我使用以下脚本从文件加载凭据,从而跳过UI提示。如果文件不存在或凭据已过期,则会提示用户,并保存凭据以供下次使用。

if (Test-Path ("{0}/azure-credentials.json" -f (Get-Location)))
{
    $Null = Select-AzureRmProfile -Path ("{0}/azure-credentials.json" -f (Get-Location))
    Try
    {
        Get-AzureRMManagedSubscription
    } Catch {
        Login-AzureRmAccount
        Save-AzureRmProfile -Path ("{0}/azure-credentials.json" -f (Get-Location))
    }
} else {
    Login-AzureRmAccount
    Save-AzureRmProfile -Path ("{0}/azure-credentials.json" -f (Get-Location))
}

答案 2 :(得分:0)

当前最新版本的Azure PowerShell模块没有任何命令来检查Azure用户帐户是否已过期。

您可以使用 Get-AzureAccount -Name 来检查您是否已将帐户添加到PowerShell Azure配置文件中。

答案 3 :(得分:0)

您可以执行以下操作来检查powershell会话中的帐户到期时间

$Account = Get-AzureAccount -Name "email@account.com"
if (!$Account)
{
 Add-AzureAccount
}

希望这有帮助!

答案 4 :(得分:0)

您可以通过执行以下操作来获取TokenCache ExpiresOn:

$context = Get-AzContext
$cacheItems = $context.TokenCache.ReadItems()
$azTokenExpiresOn = $cacheItems.ExpiresOn.DateTime

如果有多个登录名,则可能有多个缓存的令牌,在这种情况下,您必须匹配某个登录名或全部检查它们。