Omnicit.EntraRBAC

1.1.4-preview0014

Manage Entra ID and Azure RBAC building blocks across tenants: Entra ID groups, PIM, Administrative Units, Entitlement Management, Access Reviews, Azure resources and RBAC, plus a JSON inventory and declarative apply engine.

Minimum PowerShell version

7.2

This is a prerelease version of Omnicit.EntraRBAC.
There is a newer prerelease version of this module available.
See the version list below for details.

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Omnicit.EntraRBAC -RequiredVersion 1.1.4-preview0014 -AllowPrerelease

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name Omnicit.EntraRBAC -Version 1.1.4-preview0014 -Prerelease

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) 2026 Omnicit AB

Package Details

Author(s)

  • Omnicit AB / Philip Haglund

Tags

EntraID Azure RBAC PIM Identity Governance Windows Linux MacOS

Functions

Add-OERAccessPackageResourceRole Add-OERAdministrativeUnitMember Add-OERAdministrativeUnitScopedRole Add-OERCatalogResource Add-OERGroupEligibility Add-OERGroupMember Connect-OER Disable-OEREligibleRoleAssignment Disconnect-OER Enable-OEREligibleRoleAssignment Export-OERInventory Get-OERAccessPackage Get-OERAccessPackageAssignment Get-OERAccessPackageAssignmentPolicy Get-OERAccessPackageResourceRole Get-OERAccessReviewDefinition Get-OERAccessReviewInstance Get-OERAccessReviewInstanceDecision Get-OERActiveDirectoryRoleAssignment Get-OERActiveRoleAssignment Get-OERAdministrativeUnit Get-OERAdministrativeUnitScopedRole Get-OERAuthenticationContext Get-OERCatalog Get-OERCatalogResource Get-OERConfiguration Get-OERDirectoryRoleManagementPolicy Get-OEREligibleDirectoryRoleAssignment Get-OEREligibleRoleAssignment Get-OERGroup Get-OERGroupEligibility Get-OERGroupMember Get-OERGroupPimPolicy Get-OERInventory Get-OERManagementGroup Get-OERRequiredScope Get-OERResource Get-OERResourceGroup Get-OERRoleAssignment Get-OERRoleDefinition Get-OERRoleManagementPolicy Get-OERSubscription Invoke-OERAccessReviewInstanceDecision Invoke-OERStructure New-OERAccessPackage New-OERAccessPackageApprovalStage New-OERAccessPackageAssignment New-OERAccessPackageAssignmentPolicy New-OERAccessPackageRequestorScope New-OERAccessPackageRequestorSettings New-OERAccessReviewDefinition New-OERAccessReviewStage New-OERActiveDirectoryRoleAssignment New-OERActiveRoleAssignment New-OERAdministrativeUnit New-OERCatalog New-OERConfiguration New-OEREligibleDirectoryRoleAssignment New-OEREligibleRoleAssignment New-OERGroup New-OERPolicyNotificationRule New-OERResourceGroup New-OERRoleAssignment Remove-OERAccessPackage Remove-OERAccessPackageAssignment Remove-OERAccessPackageAssignmentPolicy Remove-OERAccessPackageResourceRole Remove-OERAccessReviewDefinition Remove-OERActiveDirectoryRoleAssignment Remove-OERActiveRoleAssignment Remove-OERAdministrativeUnit Remove-OERAdministrativeUnitMember Remove-OERAdministrativeUnitScopedRole Remove-OERCatalog Remove-OERCatalogResource Remove-OERConfiguration Remove-OEREligibleDirectoryRoleAssignment Remove-OEREligibleRoleAssignment Remove-OERGroup Remove-OERGroupEligibility Remove-OERGroupMember Remove-OERResourceGroup Remove-OERRoleAssignment Send-OERAccessReviewReminder Set-OERAccessPackage Set-OERAccessPackageAssignmentPolicy Set-OERAccessReviewDefinition Set-OERAdministrativeUnit Set-OERCatalog Set-OERConfiguration Set-OERDirectoryRoleManagementPolicy Set-OERGroup Set-OERGroupPimPolicy Set-OERResourceGroup Set-OERRoleAssignment Set-OERRoleManagementPolicy Stop-OERAccessReviewInstance Test-OERStructure

PSEditions

Core

Dependencies

Release Notes

## [1.1.4-preview0014] - 2026-10-11

A permanent group eligibility grant refused after `Add-OERGroupEligibility` opened the group's PIM
policy now reports `PolicyOpenedButGrantFailed` first, naming the open policy, why the grant failed
and how to close it (`Set-OERGroupPimPolicy -AllowPermanentEligibility:$false`; the old advice
left it open), even under `-ErrorAction Stop` and in `Invoke-OERStructure` results.
`Invoke-OERStructure`'s wait on a group it created now says, in `GroupNotOnboarded` and a later
attempt's error, whether the policy was opened and, if so, how to close it. The Azure role
assignment cmdlets no longer report a rollback that finds nothing to change as failed but ask for a
confirming read. No ErrorId changed.

`Disconnect-OER` now ends only the module's own Graph SDK session and warns when it leaves another.
An ARM request without a token is refused (`ArmTokenAcquisitionFailed`), not sent.
`New-`/`Set-OERConfiguration` refuse a white-space `-TenantId`. `SignInSuperseded` names its actual
cause; `SignInRefused` after a failed sign-in no longer says the session may be the previous
tenant's.

Every device code sign-in, Microsoft Graph and ARM alike, now prints a new code, so a later one in
the same session no longer reuses AzAuth's process-wide credential, which could hang, showing no
code, and needs no `-Force`. The help and README say how a long run renews its token per sign-in
type and what it asks of you.

`Invoke-OERStructure -WhatIf` now plans an Azure role policy entry whose approvers name nobody as
the run does: `Failed` with `ApproverRequired`, and changes nothing. `Test-OERStructure` refuses a
`tenantId` that is not a string, as the schema does, or that ends in a line break. The
`NotDirectAssignment` example now parses for a role name with a curly apostrophe.

`SemiAnnually` (every six months) is a new access review cadence for
`New-`/`Set-OERAccessReviewDefinition` and a structure document's `recurrence`. A live six-month
review now exports as `SemiAnnually` without a warning and applies as `Unchanged`; an older
export's `Monthly` approximation is skipped on apply, with a warning, leaving the review
semi-annual.

`Get-OERManagementGroup` now shows the parent of every listed group (the tenant root group has
none); an unreadable parent is reported as `ManagementGroupParentReadFailed`, not left empty.
`-Expand` or `-Recurse` without `-Name` now fails at parameter binding, or prompts for `-Name` where
the host can. An empty `-Name` is refused instead of listing every group.

`Get-OERGroup` now shows `OnPremisesSyncEnabled`, in its table too. `groupsRoster.json` marks every
group `onPremisesSynced`, and `Export-OERInventory -IncludeSyncedGroups` keeps synchronized security
groups in full detail in `inventory.json`, marked `onPremisesSynced: true`. `Invoke-OERStructure`
writes nothing to a synchronized group: each change is `Skipped`, one warning per group, and
`-Prune` leaves it untouched.

`Export-OERInventory` now reads members, owners and PIM policies only for the groups it keeps in
full -- role-assignable, with PIM eligibility, found to use PIM for Groups, or synchronized under
`-IncludeSyncedGroups` -- or cannot classify, and shows progress; `groupsRoster.json` gives the
others `memberCount` null. The new `-GroupFilter` narrows the exported groups, never widens them.

`Export-OERInventory` now keeps an Azure role's PIM policy at a scope only if the role is assigned
or eligible exactly there or the policy changed, at one more role assignment read per scope; apply
leaves the rest untouched. A policy it cannot judge is kept, its scope named in `IncompleteReads`
and `InventoryPartial`. `-AllRolePolicies` keeps all, as before.

The module's page on the PowerShell Gallery now shows its icon.

FileList

Version History

Version Downloads Last updated
1.2.1-previe... 4 10/11/2026
1.2.0 4 10/11/2026
1.1.4-previe... (current version) 4 10/11/2026
1.1.4-previe... 4 10/10/2026
1.1.4-previe... 3 10/10/2026
1.1.4-previe... 4 10/10/2026
1.1.4-previe... 4 10/9/2026
1.1.4-previe... 3 10/9/2026
1.1.4-previe... 3 10/9/2026
1.1.4-previe... 3 10/9/2026
1.1.4-previe... 10 10/9/2026
1.1.4-previe... 5 10/9/2026
1.1.4-previe... 2 10/8/2026
1.1.4-previe... 0 10/8/2026
1.1.4-previe... 3 10/8/2026
1.1.4-previe... 4 10/7/2026
1.1.3 8 10/7/2026
1.1.3-previe... 4 10/7/2026
1.1.3-previe... 4 10/7/2026
1.1.3-previe... 4 10/7/2026
1.1.3-previe... 4 10/7/2026
1.1.3-previe... 4 10/7/2026
1.1.3-previe... 5 10/6/2026
1.1.3-previe... 5 10/6/2026
1.1.3-previe... 4 10/6/2026
1.1.2 6 10/6/2026
1.1.2-previe... 5 10/6/2026
1.1.2-previe... 5 10/5/2026
1.1.2-previe... 4 10/5/2026
1.1.2-previe... 4 10/5/2026
1.1.2-previe... 5 10/4/2026
1.1.2-previe... 5 10/4/2026
1.1.1 8 10/3/2026
1.1.1-previe... 4 10/3/2026
1.1.1-previe... 4 10/3/2026
1.1.1-previe... 5 10/2/2026
1.1.1-previe... 5 10/2/2026
1.1.1-previe... 6 10/1/2026
1.1.0 23 10/1/2026
1.1.0-previe... 21 10/1/2026
1.1.0-previe... 4 9/30/2026
1.1.0-previe... 4 9/29/2026
1.1.0-previe... 4 9/28/2026
1.0.2-previe... 4 9/24/2026
1.0.2-previe... 4 9/23/2026
1.0.1 10 9/23/2026
1.0.1-previe... 4 9/23/2026
1.0.1-previe... 4 9/23/2026
1.0.1-previe... 4 9/23/2026
1.0.1-previe... 5 9/23/2026
1.0.0 8 9/18/2026
Show more