Azure Powershell 세션이 만료되었는지 탐지하는 방법은 무엇입니까?
Azure PowerShell 스크립트를 작성하고 있으며 Azure에 로그인하기 위해 전화합니다.Add-AzureAccount브라우저 로그인 창이 팝업됩니다.
인증 자격 증명이 만료되었는지 여부를 확인하는 가장 좋은 방법이 무엇인지 알고 싶어서 전화를 해야 하는지 궁금합니다.Add-AzureAccount또?
내가 지금 하는 일은 그냥 전화하는 것입니다.Get-AzureVM그리고 확인해 보세요.$?와 동등한.$False제가 듣기에는 좀 진부하지만, 효과가 있는 것 같습니다.서브스크립션에 가상 시스템이 배포되지 않은 경우에도 작동합니까?
Azure RM이지만 활성 계정이 있는지 확인합니다. 그렇지 않으면 프롬프트를 표시합니다.
if ([string]::IsNullOrEmpty($(Get-AzureRmContext).Account)) {Login-AzureRmAccount}
건배.
Get-AzureRmContext를 실행하고 Account 속성이 채워졌는지 확인해야 합니다.최신 버전의 AzureRM에서 Get-AzureRmContext는 오류를 발생시키지 않습니다(오류는 활성 세션이 필요한 cmdlet에 의해 발생함).그러나 일부 다른 버전에서는 분명히 그렇게 합니다.
이것은 나에게 도움이 됩니다.
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
}
}
새로운 Azure PowerShell API를 사용하는 경우 훨씬 더 간단합니다.
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"
}
}
피터가 제안한 것보다 조금 더 단순하게 만들겠습니다.스크립트 시작 부분에 다음 행을 삽입하면 됩니다.
Try {
Get-AzureRmContext
} Catch {
if ($_ -like "*Login-AzureRmAccount to login*") {
Login-AzureRmAccount
}
}
건배.
사용해 보십시오.
function Check-Session () {
$Error.Clear()
#if context already exist
Get-AzureRmContext -ErrorAction Continue
foreach ($eacherror in $Error) {
if ($eacherror.Exception.ToString() -like "*Run Login-AzureRmAccount to login.*") {
Add-AzureAccount
}
}
$Error.Clear();
}
#check if session exists, if not then prompt for login
Check-Session
이를 위해 스크립트에 사용하는 모듈을 만들었습니다.를 사용합니다.Get-AzAccessTokencmdlet.
function Get-AzLogin {
<#
.SYNOPSIS
Checks AZ login status and account
.DESCRIPTION
Use this module to check Azure PowerShell login status and make sure that user is logged in.
It also accepts either subscription name or ID to be set right after checking login.
.EXAMPLE
Get-AzLogin
.EXAMPLE
Get-AzLogin [[-Subscription] <string>]
#>
param (
[string] $Subscription
)
Write-Host "[Get-AzLogin] Checking Azure PowerShell Login... " -NoNewline
# Check if logged in to Azure PowerShell
$AccessToken = Get-AzAccessToken -ErrorAction SilentlyContinue
if (!$AccessToken) {
Write-Host "Login needed"
try {
Login-AzAccount -ErrorAction stop > Out-Null
}
catch
{
throw "Could not login to Azure"
}
} else {
Write-Host "Already logged in"
}
# Try setting subscription if provided
if ($Subscription) {
Write-Host "[Get-AzLogin] Found subscription as argument. Will run Set-AzContext... " -NoNewline
try {
Set-AzContext -SubscriptionId $Subscription -ErrorAction stop | Out-Null
Write-Host "set to $((get-azcontext).Subscription.name)"
}
catch
{
throw "Could not set Subscription $Subscription"
}
}
}
다음은 저에게 적합합니다. 구독을 선택해 보십시오. 오류가 발생하면 로그인을 요청하십시오.
Try
{
Select-AzureRmSubscription -SubscriptionName $SUBSCRIPTIONNAME -ErrorAction Stop
}
Catch{
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName $SUBSCRIPTIONNAME
}
Azure 컨텍스트를 스크립트 시작 시 변수에 저장하고 활성 로그인이 없을 때는 NULL이므로 "Account" 속성을 확인합니다.
$context = Get-AzureRmContext
if($context.Account -eq $null)
{
Login-AzureRmAccount
}
Add-Azure Account 작업 결과를 확인할 수 있습니다.
$result = Add-AzureAccount
if (!$result) {Write-Output "Login to Azure failed"}
else {Write-Output "Login successful - user $result.Id"}
언급URL : https://stackoverflow.com/questions/28105095/how-to-detect-if-azure-powershell-session-has-expired
'source' 카테고리의 다른 글
| AJAX로 부트스트랩 팝업 콘텐츠를 로드합니다.이것이 가능합니까? (0) | 2023.08.28 |
|---|---|
| ASP에서 긴 폴링 AJAX 요청을 수행하는 방법.NET MVC? (0) | 2023.08.28 |
| DOM에 아직 추가되지 않은 JQuery 개체에 클릭 이벤트 첨부 (0) | 2023.08.28 |
| 세션의 "비밀" 옵션은 무엇입니까? (0) | 2023.08.28 |
| CSS3 스핀 애니메이션 (0) | 2023.08.28 |