Private/Utilities/Initialize-AzureResourceSupport.ps1
|
function Initialize-AzureResourceSupport { <# .SYNOPSIS Validates that Azure Resource support is ready for use. .DESCRIPTION This function validates that Azure PowerShell modules required for Azure Resource PIM operations are available and loaded. It uses the existing Import-PIMModule function for consistency. .OUTPUTS Boolean - Returns $true if Azure support is available, $false otherwise. .EXAMPLE $azureSupported = Initialize-AzureResourceSupport if ($azureSupported) { $azureRoles = Get-AzureResourceRoles } #> [CmdletBinding()] param() Write-Verbose "Validating Azure Resource support..." # Required Azure modules and their key commands $requiredAzureModules = @{ 'Az.Accounts' = @('Connect-AzAccount', 'Get-AzContext', 'Disconnect-AzAccount') 'Az.Resources' = @('Get-AzSubscription', 'Get-AzRoleAssignment') } $failedModules = [System.Collections.ArrayList]::new() foreach ($moduleSpec in $requiredAzureModules.GetEnumerator()) { $moduleName = $moduleSpec.Key $requiredCommands = $moduleSpec.Value # Use Import-PIMModule to load the module $loadResult = Import-PIMModule -ModuleName $moduleName if (-not $loadResult) { Write-Warning "Failed to load required Azure module: $moduleName" $null = $failedModules.Add($moduleName) continue } # Validate required commands are available foreach ($command in $requiredCommands) { if (-not (Get-Command -Name $command -ErrorAction SilentlyContinue)) { Write-Warning "Required command '$command' is not available from module $moduleName" $null = $failedModules.Add("$moduleName (missing $command)") } } } if ($failedModules.Count -gt 0) { Write-Warning "Azure Resource support is not available due to missing modules/commands: $($failedModules -join ', ')" return $false } Write-Verbose "Azure Resource support is ready" return $true } |