PIMActivation
2.0.0
PowerShell module for managing Microsoft Entra ID Privileged Identity Management (PIM) role activations through a modern GUI interface. Supports Entra ID roles, PIM-enabled groups, and Azure Resource roles. Features authentication context, bulk operations, and policy compliance. Developed with AI assistance. Requires PowerShell 7+.
Minimum PowerShell version
7.0
Installation Options
Owners
Copyright
(c) 2025 Sebastian Flæng Markdanner. All rights reserved.
Package Details
Author(s)
- Sebastian Flæng Markdanner
Tags
PIM PrivilegedIdentityManagement EntraID AzureAD Azure AzureResources Identity Governance RBAC GUI Authentication ConditionalAccess Security Microsoft Graph
Functions
PSEditions
Dependencies
This module has no dependencies.
Release Notes
## PIMActivation v2.0.0 - Azure Resources & Parallel Processing Engine
### 🚀 Major New Features
- **Azure Resource Roles Support**: Full integration with Azure Resource PIM for subscription, resource group, and individual resource role management
- **Parallel Processing Engine**: High-performance concurrent execution for all operations with real-time progress tracking
- **Enhanced Role Display**: Azure roles display with [Azure] prefix and portal-aligned resource/scope columns
- **Cross-Subscription Support**: Automatic enumeration and management across all accessible Azure subscriptions
- **Modular Architecture**: Split functions into individual files for better maintainability
### ⚡ Performance Features
- **Parallel Processing by Default**: Concurrent execution for Azure, Entra, and Group operations
- **Real-Time Progress Tracking**: Enhanced verbose output with emoji indicators (🚀, ✅, ❌) and timing metrics
- **Smart Throttling**: Default ThrottleLimit of 10 concurrent operations, configurable up to 50
- **Thread-Safe Operations**: ConcurrentBag and ConcurrentDictionary for safe parallel result aggregation
### ✅ Added
- Complete Azure Resource role activation and deactivation support
- Select All button for bulk role selection in GUI
- `Get-AzureResourceRoles` function with parallel subscription processing
- `Initialize-AzureResourceSupport` for Azure module management
- `DisableParallelProcessing` parameter for sequential processing when needed
- Enhanced scope parsing for Azure ARM resource hierarchies
- Support for both PIM-eligible and active Azure Resource role assignments
### 🔧 Enhanced Performance
- All v1.2.x optimizations preserved and extended:
- ArrayList-based collections for optimal memory usage
- Batch API operations reducing Graph calls by 85%
- Memoized scope display name lookups
- Intelligent role deduplication and caching
- NEW: Parallel processing across all role types and policy operations
### 📋 Requirements
- PowerShell 7.0+ (required for parallel processing engine)
- Az.Accounts 5.1.0+ and Az.Resources 6.0.0+ (auto-installed for Azure resources)
- Microsoft Graph PowerShell modules (existing requirements preserved)
### 📚 More
- Changelog: https://github.com/Noble-Effeciency13/PIMActivation/blob/main/CHANGELOG.md
- Blog Post: https://www.chanceofsecurity.com/post/microsoft-entra-pim-bulk-role-activation-tool
- Releases: https://github.com/Noble-Effeciency13/PIMActivation/releases
PowerShell module for comprehensive PIM role management across Entra ID, Groups, and Azure Resources with parallel processing engine and modern GUI.
FileList
- PIMActivation.nuspec
- Private\UI\Update-PIMRolesList.ps1
- CHANGELOG.md
- Private\Profiles\Manage-PIMProfiles.ps1
- Private\RoleManagement\Invoke-SingleRoleActivation.ps1
- Private\Utilities\Clear-ModuleVersionConflicts.ps1
- CONTRIBUTING.md
- Private\Profiles\Save-LastUsedAccount.ps1
- Private\RoleManagement\Show-ActivationResults.ps1
- Private\Utilities\Get-PIMModuleStatus.ps1
- LICENSE
- Private\Profiles\Save-PIMActivationProfile.ps1
- Private\RoleManagement\Test-PIMRoleEligibility.ps1
- Private\Utilities\Get-SavedTicketSystem.ps1
- Private\RoleManagement\Add-TypeSpecificProperties.ps1
- Private\RoleManagement\Azure\Get-AzureMemberType.ps1
- Private\Utilities\Get-ScopeDisplayName.ps1
- PIMActivation.psd1
- Private\RoleManagement\Clear-PIMPolicyCache.ps1
- Private\RoleManagement\Azure\Get-AzureResourcePIMPolicy.ps1
- Private\Utilities\Import-PIMModule.ps1
- PIMActivation.psm1
- Private\RoleManagement\ConvertTo-PolicyInfo.ps1
- Private\RoleManagement\Azure\Get-AzureResourceRoles.ps1
- Private\Utilities\Initialize-AzureResourceSupport.ps1
- README.md
- Private\RoleManagement\Get-EffectiveDuration.ps1
- Private\RoleManagement\Azure\Get-AzureScopeInfo.ps1
- Private\Utilities\Initialize-PIMModules.ps1
- .github\ISSUE_TEMPLATE\bug_report.md
- Private\RoleManagement\Get-FriendlyErrorMessage.ps1
- Private\RoleManagement\Azure\Get-FormattedScope.ps1
- Private\Utilities\Install-RequiredModules.ps1
- .github\ISSUE_TEMPLATE\documentation-issue.md
- Private\RoleManagement\Get-MembershipType.ps1
- Private\RoleManagement\Azure\Get-FormattedScopeDisplay.ps1
- Private\Utilities\Remove-ConflictingModules.ps1
- .github\ISSUE_TEMPLATE\feature_request.md
- Private\RoleManagement\Get-PIMActiveRoles.ps1
- Private\RoleManagement\Azure\Invoke-AzureResourceRoleActivation.ps1
- Private\Utilities\Resolve-PIMDependencies.ps1
- .github\workflows\PSGalleryPublish.yml
- Private\RoleManagement\Get-PIMEligibleRoles.ps1
- Private\RoleManagement\Entra\Get-EntraIDRoles.ps1
- Private\Utilities\Save-TicketSystemPreference.ps1
- docs\about_PIMActivation.help.txt
- Private\RoleManagement\Get-PIMPendingRequests.ps1
- Private\RoleManagement\Groups\Get-GroupRoles.ps1
- Private\Utilities\Show-TopMostMessageBox.ps1
- Private\Authentication\Clear-AuthenticationCache.ps1
- Private\RoleManagement\Get-PIMPoliciesBatch.ps1
- Private\UI\Close-LoadingSplash.ps1
- Private\Utilities\Start-STAProcess.ps1
- Private\Authentication\Connect-PIMServices.ps1
- Private\RoleManagement\Get-PIMRolePolicy.ps1
- Private\UI\Initialize-PIMForm.ps1
- Private\Utilities\Test-AuthenticationContextToken.ps1
- Private\Authentication\Disconnect-PIMServices.ps1
- Private\RoleManagement\Get-PIMRoles.ps1
- Private\UI\New-PIMActiveRolesPanel.ps1
- Private\Utilities\Test-ModuleVersionConflicts.ps1
- Private\Authentication\Get-AuthenticationContextsBatch.ps1
- Private\RoleManagement\Get-PIMRolesBatch.ps1
- Private\UI\New-PIMDurationPanel.ps1
- Private\Utilities\Test-PIMDependencies.ps1
- Private\Authentication\Get-AuthenticationContextToken.ps1
- Private\RoleManagement\Get-RoleActivationParameters.ps1
- Private\UI\New-PIMEligibleRolesPanel.ps1
- Private\Utilities\Test-PIMModuleCompatibility.ps1
- Private\Authentication\Initialize-WebAssembly.ps1
- Private\RoleManagement\Invoke-PIMActivationWithAuthContextToken.ps1
- Private\UI\Show-LoadingSplash.ps1
- Private\Utilities\Test-STAMode.ps1
- Private\Profiles\Clear-AccountHistory.ps1
- Private\RoleManagement\Invoke-PIMActivationWithMgGraph.ps1
- Private\UI\Show-OperationSplash.ps1
- Public\Start-PIMActivation.ps1
- Private\Profiles\Get-LastUsedAccount.ps1
- Private\RoleManagement\Invoke-PIMRoleActivation.ps1
- Private\UI\Show-PIMActivationDialog.ps1
- Private\Profiles\Get-PIMActivationProfiles.ps1
- Private\RoleManagement\Invoke-PIMRoleDeactivation.ps1
- Private\UI\Update-LoadingStatus.ps1