PIMActivation.psd1

@{
    # Script module or binary module file associated with this manifest.
    RootModule = 'PIMActivation.psm1'
    
    # Version number of this module.
    ModuleVersion = '1.2.0'
    
    # Supported PSEditions - Requires PowerShell Core (7+)
    CompatiblePSEditions = @('Core')
    
    # ID used to uniquely identify this module
    GUID = 'a3f4b8e2-9c7d-4e5f-b6a9-8d7c6b5a4f3e'
    
    # Author of this module
    Author = 'Sebastian Flæng Markdanner'
    
    # Company or vendor of this module
    CompanyName = 'Cloudy With a Change Of Security'
    
    # Copyright statement for this module
    Copyright = '(c) 2025 Sebastian Flæng Markdanner. All rights reserved.'

    # Description of the functionality provided by this module
    Description = 'PowerShell module for managing Microsoft Entra ID Privileged Identity Management (PIM) role activations through a modern GUI interface. Supports authentication context, bulk operations, and policy compliance. Developed with AI assistance. Requires PowerShell 7+.'
    
    # Minimum version of the PowerShell engine required by this module
    PowerShellVersion = '7.0'
    
    # Modules that must be imported into the global environment prior to importing this module
    RequiredModules = @(
        @{ ModuleName = 'Microsoft.Graph.Authentication'; RequiredVersion = '2.29.1' },
        @{ ModuleName = 'Microsoft.Graph.Users'; RequiredVersion = '2.29.1' },
        @{ ModuleName = 'Microsoft.Graph.Identity.DirectoryManagement'; RequiredVersion = '2.29.1' },
        @{ ModuleName = 'Microsoft.Graph.Identity.Governance'; RequiredVersion = '2.29.1' },
        @{ ModuleName = 'Az.Accounts'; RequiredVersion = '5.1.0' }
    )
    
    # Functions to export from this module
    FunctionsToExport = @('Start-PIMActivation')
    
    # Cmdlets to export from this module
    CmdletsToExport = @()
    
    # Variables to export from this module
    VariablesToExport = @()
    
    # Aliases to export from this module
    AliasesToExport = @()
    
    # Private data to pass to the module specified in RootModule/ModuleToProcess
    PrivateData = @{
        PSData = @{
            # Tags applied to this module for online gallery discoverability
            Tags = @('PIM', 'PrivilegedIdentityManagement', 'EntraID', 'AzureAD', 'Identity', 'Governance', 'RBAC', 'GUI', 'Authentication', 'ConditionalAccess', 'Security', 'Microsoft', 'Graph')
            
            # A URL to the license for this module.
            LicenseUri = 'https://github.com/Noble-Effeciency13/PIMActivation/blob/main/LICENSE'
            
            # A URL to the main website for this project.
            ProjectUri = 'https://github.com/Noble-Effeciency13/PIMActivation'
            
            # A URL to an icon representing this module.
            IconUri = 'https://raw.githubusercontent.com/Noble-Effeciency13/PIMActivation/main/Resources/icon.png'
            
            # ReleaseNotes
            ReleaseNotes = @'
## Release Notes v1.2.0
 
### 🚀 Major Performance Enhancements
- **Batch API Operations**: Complete rewrite of role fetching logic using batch operations (85% reduction in API calls)
- **Intelligent Duplicate Role Handling**: Advanced algorithm for managing multiple instances of same role with proper group attribution
- **Enhanced Group-Role Attribution**: Sophisticated cross-referencing system showing which groups provide which roles
- **Comprehensive Error Handling**: Bulletproof property access protection preventing common PowerShell errors
 
### 🎯 UI/UX Improvements
- **Smooth Progress Flow**: Coordinated progress tracking across all loading phases (no more backwards jumps)
- **Group Visibility**: ProvidedRoles functionality shows exactly which roles each group membership provides
- **Proper Expiration Attribution**: Duplicate roles now show individual expiration times based on their providing groups
- **Enhanced Resource Display**: Shows "Entra ID (via Group: GroupName)" for group-derived roles
 
### 🔧 Technical Improvements
- **Advanced Array Handling**: @() wrapper implementation preventing .Count property errors
- **Safe Property Access**: PSObject.Properties pattern for bulletproof property checking
- **Intelligent Caching**: Enhanced cache invalidation system with proper timing
- **Defensive Coding**: Comprehensive try-catch blocks around all critical operations
 
### 🔍 Debugging & Logging
- **Enhanced Verbose Logging**: Detailed progress tracking with differentiated handling for groups vs Entra roles
- **Sophisticated Matching Logic**: Priority-based group assignment with temporal vs permanent preferences
- **Cross-Reference Validation**: Extensive debugging for group-role relationship verification
 
## Release Notes v1.1.1
 
### Added
- **Just-in-Time Module Loading**: New `Initialize-PIMModules` system that loads modules only when needed
- **Version Pinning**: Exact module version enforcement to prevent compatibility issues
- **Assembly Conflict Prevention**: Automatic removal of conflicting module versions from session
- Module loading state tracking and compatibility validation
 
### Changed
- **Updated Module Versions**: Now uses Microsoft.Graph 2.29.1 + Az.Accounts 5.1.0 (tested working combination)
- Replaced legacy `Install-RequiredModules` with new `Initialize-PIMModules` function
- Improved module initialization in `Start-PIMActivation` function
- Updated CI/CD workflow to use latest compatible module versions
 
### Removed
- **Scripts Folder**: Removed compatibility testing tools (no longer needed with version pinning)
- Legacy module installation and validation code
- Outdated module version requirements
 
### Fixed
- Resolved `AuthenticateAsync` method signature compatibility issues
- Improved module loading reliability and error handling
- Enhanced troubleshooting guidance for version conflicts
 
## Release Notes v1.1.0
 
### ⚡ Major Improvements
- **WAM Authentication**: Implemented Windows Web Account Manager (WAM) for reliable authentication
- **Removed MSAL.PS Dependency**: Now uses direct MSAL.NET calls for better reliability and performance
- **Enhanced Authentication Context**: Improved handling of conditional access policies
 
### 🔧 Technical Changes
- Direct integration with Az.Accounts MSAL assemblies
- Eliminated PowerShell 5.1 fallback - now fully PowerShell 7+ native
- Improved error handling and timeout management
- Better assembly loading and management
 
## Release Notes v1.0.1
 
### 🔧 Bug Fixes
- Fixed authentication context token acquisition for conditional access policies
- Enhanced error handling for authentication scenarios
- Improved MSAL.PS integration for more reliable interactive authentication prompts
- Fixed timing issues with authentication context token validation
 
### 🆕 New Features
- Added token caching to minimize re-authentication prompts
- Enhanced authentication context flow with better error messages
- Improved handling of authentication timeouts and cancellation
 
### 🔧 Technical Changes
- Better integration with MSAL.PS for authentication context scenarios
- Enhanced token validation and refresh logic
- Improved error handling for authentication context failures
 
## Release Notes v1.0.0
 
### 🎉 Initial Release
- **Modern GUI Interface**: Clean Windows Forms application for PIM role management
- **Multi-Role Support**: Activate Microsoft Entra ID roles and PIM-enabled security groups
- **Authentication Context**: Seamless handling of Conditional Access authentication context policies
- **Bulk Operations**: Select and activate multiple roles simultaneously with policy validation
- **PowerShell Compatibility**: Requires PowerShell 7+ for optimal performance and modern language features
- **Policy Compliance**: Automatic detection of MFA, justification, and ticket requirements
- **Real-time Updates**: Live monitoring of active assignments and pending requests
 
### 🔧 Technical Features
- Direct REST API calls for authentication context preservation
- Automatic module dependency management
- Comprehensive error handling and user feedback
 
### 📋 Requirements
- Windows Operating System
- PowerShell 7+ (Download from https://aka.ms/powershell)
- Microsoft Graph PowerShell modules (auto-installed)
- Az.Accounts module for WAM authentication support
- Appropriate Entra ID permissions for PIM role management
 
### 📝 Development Note
This module was developed with the assistance of AI tools (GitHub Copilot and Claude), combining AI-accelerated development with human expertise in Microsoft identity and security workflows.
 
For detailed usage instructions, see the README.md file.
'@

            # Flag to indicate whether the module requires explicit user acceptance
            RequireLicenseAcceptance = $false
            
            # External module dependencies that are not captured by RequiredModules
            ExternalModuleDependencies = @()
        }
    }
}