PIMActivation
2.1.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.1.0 - Patch & Enhancements
### ✅ Enhancements
- Management group display names: management-group scopes are now shown with their friendly display name (or `/` for tenant root) instead of raw MG IDs.
- Inherited eligible role suppression: subscription-scoped inherited eligible roles are suppressed when the same role is available at the management-group level to avoid duplicate activation entries.
- Temporary activation detection: initial tenant-root and management-group active assignments are enriched with PIM activation schedule Start/End windows so temporarily activated roles show expiry rather than appearing permanently active.
- Role definition normalization: role definition identifiers are normalized (GUID) during deduplication to eliminate duplicates caused by full-path vs GUID variants.
- Import-time PSGallery notification: on import the module performs a best-effort check against the PowerShell Gallery and warns when a newer release is available. The notification follows Microsoft module style and provides Update-Module / Install-Module examples. This check can be suppressed via `$script:SuppressUpdateNotification`.
### 🛠️ Fixes (Community Contribution)
- Activation/Deactivation Scope and Safety: Added explicit `Scope` support when activating and deactivating Azure PIM roles and improved error handling to prevent attempting to deactivate a role that was activated less than the required 5-minute window. (Thanks to Lukas Gosling (@l-gosling) for this contribution.)
### ⚡ Notes
- These changes are additive and preserve existing public APIs. They improve display fidelity and de-duplication for Azure resource roles and make temporary activations visible as such in the UI.
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\RoleManagement\Invoke-SingleRoleActivation.ps1
- Private\UI\Update-PIMRolesList.ps1
- CHANGELOG.md
- Private\Profiles\Manage-PIMProfiles.ps1
- Private\RoleManagement\Show-ActivationResults.ps1
- Private\Utilities\Clear-ModuleVersionConflicts.ps1
- CONTRIBUTING.md
- Private\Profiles\Save-LastUsedAccount.ps1
- Private\RoleManagement\Test-PIMRoleEligibility.ps1
- Private\Utilities\Get-PIMModuleStatus.ps1
- LICENSE
- Private\Profiles\Save-PIMActivationProfile.ps1
- Private\RoleManagement\Azure\Get-AzureMemberType.ps1
- Private\Utilities\Get-SavedTicketSystem.ps1
- Private\RoleManagement\Add-TypeSpecificProperties.ps1
- Private\RoleManagement\Azure\Get-AzureResourcePIMPolicy.ps1
- Private\Utilities\Get-ScopeDisplayName.ps1
- PIMActivation.psd1
- Private\RoleManagement\Clear-PIMPolicyCache.ps1
- Private\RoleManagement\Azure\Get-AzureResourceRoles.ps1
- Private\Utilities\Import-PIMModule.ps1
- PIMActivation.psm1
- Private\RoleManagement\ConvertTo-PolicyInfo.ps1
- Private\RoleManagement\Azure\Get-AzureScopeInfo.ps1
- Private\Utilities\Initialize-AzureResourceSupport.ps1
- README.md
- Private\RoleManagement\Get-EffectiveDuration.ps1
- Private\RoleManagement\Azure\Get-FormattedScope.ps1
- Private\Utilities\Initialize-PIMModules.ps1
- .github\ISSUE_TEMPLATE\bug_report.md
- Private\RoleManagement\Get-FriendlyErrorMessage.ps1
- Private\RoleManagement\Azure\Get-FormattedScopeDisplay.ps1
- Private\Utilities\Install-RequiredModules.ps1
- .github\ISSUE_TEMPLATE\documentation-issue.md
- Private\RoleManagement\Get-MembershipType.ps1
- Private\RoleManagement\Azure\Invoke-AzureResourceRoleActivation.ps1
- Private\Utilities\Remove-ConflictingModules.ps1
- .github\ISSUE_TEMPLATE\feature_request.md
- Private\RoleManagement\Get-PIMActiveRoles.ps1
- Private\RoleManagement\Entra\Get-EntraIDRoles.ps1
- Private\Utilities\Resolve-PIMDependencies.ps1
- .github\workflows\PSGalleryPublish.yml
- Private\RoleManagement\Get-PIMEligibleRoles.ps1
- Private\RoleManagement\Groups\Get-GroupRoles.ps1
- Private\Utilities\Save-TicketSystemPreference.ps1
- docs\about_PIMActivation.help.txt
- Private\RoleManagement\Get-PIMPendingRequests.ps1
- Private\UI\Close-LoadingSplash.ps1
- Private\Utilities\Show-TopMostMessageBox.ps1
- Private\Authentication\Clear-AuthenticationCache.ps1
- Private\RoleManagement\Get-PIMPoliciesBatch.ps1
- Private\UI\Initialize-PIMForm.ps1
- Private\Utilities\Start-STAProcess.ps1
- Private\Authentication\Connect-PIMServices.ps1
- Private\RoleManagement\Get-PIMRolePolicy.ps1
- Private\UI\New-PIMActiveRolesPanel.ps1
- Private\Utilities\Test-AuthenticationContextToken.ps1
- Private\Authentication\Disconnect-PIMServices.ps1
- Private\RoleManagement\Get-PIMRoles.ps1
- Private\UI\New-PIMDurationPanel.ps1
- Private\Utilities\Test-ModuleVersionConflicts.ps1
- Private\Authentication\Get-AuthenticationContextsBatch.ps1
- Private\RoleManagement\Get-PIMRolesBatch.ps1
- Private\UI\New-PIMEligibleRolesPanel.ps1
- Private\Utilities\Test-PIMDependencies.ps1
- Private\Authentication\Get-AuthenticationContextToken.ps1
- Private\RoleManagement\Get-RoleActivationParameters.ps1
- Private\UI\Show-LoadingSplash.ps1
- Private\Utilities\Test-PIMModuleCompatibility.ps1
- Private\Authentication\Initialize-WebAssembly.ps1
- Private\RoleManagement\Invoke-PIMActivationWithAuthContextToken.ps1
- Private\UI\Show-OperationSplash.ps1
- Private\Utilities\Test-STAMode.ps1
- Private\Profiles\Clear-AccountHistory.ps1
- Private\RoleManagement\Invoke-PIMActivationWithMgGraph.ps1
- Private\UI\Show-PIMActivationDialog.ps1
- Public\Start-PIMActivation.ps1
- Private\Profiles\Get-LastUsedAccount.ps1
- Private\RoleManagement\Invoke-PIMRoleActivation.ps1
- Private\UI\Update-LoadingStatus.ps1
- Private\Profiles\Get-PIMActivationProfiles.ps1
- Private\RoleManagement\Invoke-PIMRoleDeactivation.ps1