Tools/Setup-EntraBeta.ps1

# Setup-EntraBeta.ps1
# Installs and imports the Microsoft.Entra.Beta module for local use.

param(
    [switch]$ForceInstall
)

function Ensure-ModuleInstalled {
    param(
        [string]$Name
    )
    if (-not (Get-Module -ListAvailable -Name $Name)) {
        Write-Host "Module $Name not found. Installing from PSGallery..."
        try {
            Install-Module -Name $Name -Scope CurrentUser -Force:$ForceInstall -AllowClobber -ErrorAction Stop
        } catch {
            Write-Error "Failed to install $Name: $_"
            return $false
        }
    } else {
        Write-Host "Module $Name already available."
    }
    return $true
}

if (-not (Ensure-ModuleInstalled -Name 'Microsoft.Entra.Beta')) {
    Write-Error "Could not ensure Microsoft.Entra.Beta is installed. Aborting."
    exit 1
}

try {
    Import-Module Microsoft.Entra.Beta -ErrorAction Stop
    Write-Host "Imported Microsoft.Entra.Beta"
} catch {
    Write-Error "Failed to import Microsoft.Entra.Beta: $_"
    exit 1
}

Write-Host "You can now run scripts that use Connect-Entra/Get-EntraSubscribedSku."