@@ -494,40 +494,50 @@ try {
494494 $currentSubscriptionId = az account show -- query id - o tsv
495495 $currentSubscriptionName = az account show -- query name - o tsv
496496
497- if (-not $NonInteractive -and $script :azSubscriptionId -and $currentSubscriptionId -ne $script :azSubscriptionId ) {
498- Write-Host " Current subscription is $currentSubscriptionName ( $currentSubscriptionId )."
499- $confirmation = Read-Host " Do you want to continue with this subscription? (y/n)"
500- if ($confirmation -notin @ (" y" , " Y" )) {
501- $availableSubscriptions = az account list -- query " [?state=='Enabled'].[name,id]" -- output tsv
502- $subscriptions = $availableSubscriptions -split " `n " | ForEach-Object { $_.Split (" `t " ) }
503-
504- do {
505- Write-Host " "
506- Write-Host " Available Subscriptions:"
507- Write-Host " ========================"
508- for ($i = 0 ; $i -lt $subscriptions.Count ; $i += 2 ) {
509- $index = ($i / 2 ) + 1
510- Write-Host " $index . $ ( $subscriptions [$i ]) ( $ ( $subscriptions [$i + 1 ]) )"
511- }
512- Write-Host " ========================"
513-
514- $subscriptionIndex = Read-Host " Enter the number of the subscription (1-$ ( [int ]($subscriptions.Count / 2 )) )"
515-
516- if ($subscriptionIndex -match ' ^\d+$' -and [int ]$subscriptionIndex -ge 1 -and [int ]$subscriptionIndex -le ($subscriptions.Count / 2 )) {
517- $selectedIndex = ([int ]$subscriptionIndex - 1 ) * 2
518- $selectedSubscriptionName = $subscriptions [$selectedIndex ]
519- $selectedSubscriptionId = $subscriptions [$selectedIndex + 1 ]
520- az account set -- subscription $selectedSubscriptionId
521- Write-Host " Switched to subscription: $selectedSubscriptionName ( $selectedSubscriptionId )"
522- $script :azSubscriptionId = $selectedSubscriptionId
523- break
524- } else {
525- Write-Host " Invalid selection. Please try again." - ForegroundColor Red
526- }
527- } while ($true )
497+ if ($script :azSubscriptionId -and $currentSubscriptionId -ne $script :azSubscriptionId ) {
498+ if ($NonInteractive ) {
499+ # In non-interactive mode, auto-switch to target subscription
500+ $targetSubscriptionName = az account show -- subscription $script :azSubscriptionId -- query name - o tsv
501+ Write-Host " Switching to target subscription: $targetSubscriptionName ( $script :azSubscriptionId )"
502+ az account set -- subscription $script :azSubscriptionId
503+ $currentSubscriptionId = $script :azSubscriptionId
504+ $currentSubscriptionName = $targetSubscriptionName
528505 } else {
529- az account set -- subscription $currentSubscriptionId
530- $script :azSubscriptionId = $currentSubscriptionId
506+ # In interactive mode, prompt user
507+ Write-Host " Current subscription is $currentSubscriptionName ( $currentSubscriptionId )."
508+ $confirmation = Read-Host " Do you want to continue with this subscription? (y/n)"
509+ if ($confirmation -notin @ (" y" , " Y" )) {
510+ $availableSubscriptions = az account list -- query " [?state=='Enabled'].[name,id]" -- output tsv
511+ $subscriptions = $availableSubscriptions -split " `n " | ForEach-Object { $_.Split (" `t " ) }
512+
513+ do {
514+ Write-Host " "
515+ Write-Host " Available Subscriptions:"
516+ Write-Host " ========================"
517+ for ($i = 0 ; $i -lt $subscriptions.Count ; $i += 2 ) {
518+ $index = ($i / 2 ) + 1
519+ Write-Host " $index . $ ( $subscriptions [$i ]) ( $ ( $subscriptions [$i + 1 ]) )"
520+ }
521+ Write-Host " ========================"
522+
523+ $subscriptionIndex = Read-Host " Enter the number of the subscription (1-$ ( [int ]($subscriptions.Count / 2 )) )"
524+
525+ if ($subscriptionIndex -match ' ^\d+$' -and [int ]$subscriptionIndex -ge 1 -and [int ]$subscriptionIndex -le ($subscriptions.Count / 2 )) {
526+ $selectedIndex = ([int ]$subscriptionIndex - 1 ) * 2
527+ $selectedSubscriptionName = $subscriptions [$selectedIndex ]
528+ $selectedSubscriptionId = $subscriptions [$selectedIndex + 1 ]
529+ az account set -- subscription $selectedSubscriptionId
530+ Write-Host " Switched to subscription: $selectedSubscriptionName ( $selectedSubscriptionId )"
531+ $script :azSubscriptionId = $selectedSubscriptionId
532+ break
533+ } else {
534+ Write-Host " Invalid selection. Please try again." - ForegroundColor Red
535+ }
536+ } while ($true )
537+ } else {
538+ az account set -- subscription $currentSubscriptionId
539+ $script :azSubscriptionId = $currentSubscriptionId
540+ }
531541 }
532542 } else {
533543 Write-Host " Proceeding with subscription: $currentSubscriptionName ( $currentSubscriptionId )"
0 commit comments