Modules/Core/ARILoginSession.psm1
<#
.Synopsis Azure Login Session Module for Azure Resource Inventory .DESCRIPTION This module is used to invoke the authentication process that is handle by the Azure CLI. .Link https://github.com/microsoft/ARI/Core/Connect-LoginSession.psm1 .COMPONENT This powershell Module is part of Azure Resource Inventory (ARI) .NOTES Version: 4.0.1 First Release Date: 15th Oct, 2024 Authors: Claudio Merola #> function Connect-ARILoginSession { Param($AzureEnvironment,$TenantID,$SubscriptionID,$DeviceLogin) Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Starting Connect-LoginSession function') if(![string]::IsNullOrEmpty($AzureEnvironment)) { az cloud set --name $AzureEnvironment } $CloudEnv = az cloud list | ConvertFrom-Json Write-Host "Azure Cloud Environment: " -NoNewline $CurrentCloudEnvName = $CloudEnv | Where-Object {$_.isActive -eq 'True'} Write-Host $CurrentCloudEnvName.name -BackgroundColor Green if (!$TenantID) { write-host "Tenant ID not specified. Use -TenantID parameter if you want to specify directly. " write-host "Authenticating Azure" write-host "" Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Cleaning az account cache') az account clear | Out-Null Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Calling az login') if($DeviceLogin.IsPresent) { az login --use-device-code } else { az login --only-show-errors | Out-Null } write-host "" write-host "" $Tenants = az account list --query [].homeTenantId -o tsv --only-show-errors | Sort-Object -Unique Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Checking number of Tenants') if ($Tenants.Count -eq 1) { write-host "You have privileges only in One Tenant " write-host "" $TenantID = $Tenants } else { write-host "Select the the Azure Tenant ID that you want to connect : " write-host "" $SequenceID = 1 foreach ($TenantID in $Tenants) { write-host "$SequenceID) $TenantID" $SequenceID ++ } write-host "" [int]$SelectTenant = read-host "Select Tenant ( default 1 )" $defaultTenant = --$SelectTenant $TenantID = $Tenants[$defaultTenant] if($DeviceLogin.IsPresent) { az login --use-device-code -t $TenantID } else { az login -t $TenantID --only-show-errors | Out-Null } } write-host "Extracting from Tenant $TenantID" Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Subscription details') $Subscriptions = az account list --output json --only-show-errors | ConvertFrom-Json $Subscriptions = $Subscriptions | Where-Object { $_.tenantID -eq $TenantID } if ($SubscriptionID) { if($SubscriptionID.count -gt 1) { $Subscriptions = $Subscriptions | Where-Object { $_.ID -in $SubscriptionID } } else { $Subscriptions = $Subscriptions | Where-Object { $_.ID -eq $SubscriptionID } } } } else { az account clear | Out-Null if($DeviceLogin.IsPresent) { az login --use-device-code -t $TenantID } else { $AZConfig = az config get core.enable_broker_on_windows --only-show-errors | ConvertFrom-Json if ($AZConfig.value -eq $true) { az config set core.enable_broker_on_windows=false --only-show-errors #az config set core.login_experience_v2=off --only-show-errors az login -t $TenantID --only-show-errors az config set core.enable_broker_on_windows=true --only-show-errors } else { az login -t $TenantID --only-show-errors } } $Subscriptions = az account list --output json | ConvertFrom-Json $Subscriptions = $Subscriptions | Where-Object { $_.tenantID -eq $TenantID } if ($SubscriptionID) { if($SubscriptionID.count -gt 1) { $Subscriptions = $Subscriptions | Where-Object { $_.ID -in $SubscriptionID } } else { $Subscriptions = $Subscriptions | Where-Object { $_.ID -eq $SubscriptionID } } } } return $Subscriptions } |