我正在尝试使用powershell脚本检查用户帐户凭据是否已过期,如果是,请调用Add-AzureAccount
命令行开关。这样,用户可以重新输入凭据而不是看到错误。
有没有办法使用Azure Powershell SDK检查过期?
答案 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
如果有多个登录名,则可能有多个缓存的令牌,在这种情况下,您必须匹配某个登录名或全部检查它们。