Skip to content

Releases: gioxx/Nebula.Core

v1.2.1 🐣

08 Apr 10:09
d3aaa92

Choose a tag to compare

There have been quite a few bug fixes and minor improvements recently, so it was time to "roll them out" (#11).

I waited until the Easter break was over to release this version 1.2.1, which remains on the main 1.2 branch but introduces a few new features that I hope you'll enjoy. A couple of these would never have made it without the essential work done by @ugurkocde (which is fully available in his numerous repositories dedicated to Microsoft 365, Intune, and more).

I'm already working on new features and improvements to existing ones, but that's a different matter and will likely be included in version 1.2.2. In the meantime, here are the new features I have introduced. As always, I welcome your feedback 🍻

What's Changed

  • Change: Added Export-IntuneAppInventory for Intune app inventory reporting, with optional deployed-app status enrichment and CSV/JSON export.
  • Change: Added New-IntuneAppBasedGroup to create or update Entra security groups from Intune-managed devices and installed applications, with support for an explicit full group name that aggregates all matches into one group.
  • Change: Added Search-IntuneProfileLocation to locate which Intune Graph surface hosts a profile and return its source, ID, and OData type.
  • Change: Added an optional -Domain filter to Export-MsolAccountSku so exports can be limited to users in a specific domain, matching Mail, UserPrincipalName, and ProxyAddresses.
  • Change: Added an optional -License filter to Export-MsolAccountSku so exports can target users holding a specific license while still including all of their assigned licenses in the CSV.
  • Change: Get-TenantMsolAccountSku now supports -IncludeSampleUsers for the default sample size and renders sample-user output separately for better readability in -AsTable and -GridView.
  • Change: Added resilient Exchange Online connection handling in Connect-EOL, including optional -DisableWAM, -Device, -NoWamFallback, and automatic retry without WAM after broker-related sign-in failures.
  • Change: Refactored Intune group usage logic into dedicated private helpers to keep NC.Intune.ps1 focused on public cmdlets.
  • Change: Get-UserMsolAccountSku now shows an explicit warning when the target user exists but has no assigned licenses.
  • Fix: Get-UserMsolAccountSku -Clipboard no longer claims success when user lookup or license retrieval fails; it now warns when there is no license data to copy.
  • Fix: Quarantine workflows now benefit from the improved EXO reconnection path when WAM/MSAL broker state breaks after idle, lock, or sleep.
  • Fix: Reworked Get-IntuneProfileAssignmentsByGroup to correctly report Entra group usage across Intune device configurations, settings catalog policies, and app assignments.
  • Improve: Added support for nested group matching, diagnostic output, mixed include/exclude aggregation, and console highlighting for exclusion rows in Intune group usage results.
  • Improve: License user resolution now prefers Microsoft Graph identity (via shared Find-UserRecipient -PreferGraphIdentity) in Add/Copy/Move/Get/Remove-UserMsolAccountSku, with better handling of object IDs and hybrid alias lookups.

Full Changelog: v1.2.0...v1.2.1

v1.2.0

11 Mar 10:17
6b8f429

Choose a tag to compare

Ehi! 👋🏻
The version released today is a new version of Nebula.Core that includes many fixes and several improvements. Branch 1.1 is sufficiently stable, so I have decided to close that chapter and begin the story of version 1.2 📖

Among the various new features, the first version of 1.2 introduces verification of updates to Nebula.* modules released on PowerShell Gallery ⬆️, based on those installed on the system, allowing you to stay informed and not fall behind!

Don't worry if you don't have connectivity, the check is performed (unless you make changes) every 24 hours and completely automatically when you decide to connect to the tenant using the Connect-Nebula command.
Check out the documentation to learn more (https://kb.gioxx.org/docs/Nebula/Core/usage/utilities#get-nebulamoduleupdates and https://kb.gioxx.org/docs/Nebula/Core/usage/configuration).

What's changed

  • Change: Add-MboxPermission now prints confirmation messages by default; use -PassThru for detailed output objects.
  • Change: Get-MboxPrimarySmtpAddress (gpa) now returns a compact default view (DisplayName, PrimarySmtpAddress); use -Detailed for full recipient fields.
  • Change: Get-UserGroups now returns GroupName and GroupMail property names (instead of spaced names) for easier scripting and filtering.
  • Change: Remove-MboxPermission now uses -ClearAll (renamed from -RemoveAllAdditionalPermissions).
  • Fix: Add-UserMsolAccountSku now accepts positional and pipeline UPN input (<UserPrincipalName> -License ... and 'u1','u2' | Add-UserMsolAccountSku -License ...).
  • Fix: Add-UserMsolAccountSku now reports only actually assignable licenses in confirmation/success messages and explicitly reports skipped SKUs with zero availability.
  • Fix: Get-MboxStatistics now processes all mailbox identities received via pipeline (not only the last one).
  • Fix: Remove-MboxAlias now validates post-update proxy addresses to avoid false "removed" messages when an alias is protected (for example, WindowsLiveId).
  • Fix: Remove-MboxPermission now supports positional calls (Remove-MboxPermission <SourceMailbox> <UserMailbox>).
  • Fix: Remove-UserMsolAccountSku now accepts positional and pipeline UPN input (<UserPrincipalName> -License ... and 'u1','u2' | Remove-UserMsolAccountSku -License ...).
  • Fix: User recipient resolve now supports short identifiers in license cmdlets by adding Graph fallback lookup on alias/SamAccountName/display name/UPN prefix.
  • Improve: Get-EntraGroupMembers can resolve registered owners/users for device members via -IncludeDeviceUsers.
  • Improve: Get-EntraGroupMembers reports device owners/users in a single column when resolved.
  • Improve: Get-MboxStatistics now always includes ArchiveEnabled to quickly show whether an archive exists.
  • Improve: Get-NebulaModuleUpdates now also checks ExchangeOnlineManagement and Microsoft.Graph meta modules.
  • Improve: Get-TenantMsolAccountSku now reports Available net of suspended seats and shows Total with enabled/suspended breakdown.
  • Improve: Get-UserMsolAccountSku can show tenant availability for assigned SKUs via -CheckAvailability.
  • Improve: Remove-EntraGroupDevice/Remove-EntraGroupUser can clear all group members via -ClearAll (with stronger confirmation).
  • Improve: User identifier resolution via Find-UserRecipient is now applied consistently across Get/Add/Remove-EntraGroupUser and Disable-UserDevices/Disable-UserSignIn/Revoke-UserSessions, including short identifiers.
  • Improve: User license cmdlets (Add/Get/Remove/Copy/Move-UserMsolAccountSku) now use a more consistent parameter style (positional UPNs where applicable, plus pipeline input on single-user cmdlets).
  • New: Get-EntraGroupMembers lists all members of an Entra group (users, devices, ...).
  • New: Get-MboxStatistics returns a simplified mailbox statistics view.
  • New: Get-NebulaModuleUpdates runs an on-demand update check for Nebula.* modules.
  • New: Get-TenantMsolAccountSku adds TotalCount with the numeric total for scripting.
  • New: Search-EntraGroup searches Entra groups by display name or description.
  • New: Search-MboxCutoffWindow creates/reuses Purview Compliance Searches to isolate mailbox discard sets (estimate + optional preview) before export/cleanup workflows.
  • New: Set-MboxMrmCleanup applies a temporary MRM cleanup policy/tag to a mailbox, with optional Managed Folder Assistant trigger using -RunAssistant.
  • New: Update checks during Connect-Nebula can be throttled via CheckUpdatesIntervalHours.
  • New: Update-NebulaConnections adds an explicit refresh entry point for connection status checks.

Full Changelog: v1.1.2...v1.2.0

v1.1.2

22 Jan 11:35

Choose a tag to compare

A version that begins to fix some minor oversights made previously 🧰 🔧 , and also takes the opportunity to improve some features that were already doing their job, even if without any real clear feedback for the user.
On this occasion, its documentation has been updated (as usual, available at kb.gioxx.org).

  • Fix: Set-UsageLocation now correctly updates the usage location for users without one set (licenses functions).
  • Fix: Added fallback on attempts/max also in other functions that used Invoke-NCRetry logic.
  • Fix: Export-QuarantineEml now creates the destination folder when missing and resolves relative paths correctly.
  • Improve: Export-QuarantineEml now accepts Identity values (GUID\GUID) in addition to MessageId, supports multiple inputs, and returns all exported items.
  • Improve: Format-MessageIDsFromClipboard now outputs the copied quarantine identity values (one per line).
  • Improve: Get-UserMsolAccountSku now accepts also pipeline input. Also, it now supports -Clipboard to copy a quoted list of licenses.
  • Improve: Remove-UserMsolAccountSku now uses two parameter sets. With -All, it removes all licenses assigned to the user, displaying the names (resolved via catalog if available). The -License parameter remains for selective removal.
  • Improve: Get-TenantMsolAccountSku now supports -Filter to show only licenses matching the provided text (name or SkuPartNumber).
  • Improve: Remove-MboxPermission now supports -RemoveAllAdditionalPermissions to remove non-inherited FullAccess, SendAs, and SendOnBehalfTo from a mailbox.
  • New: Get-MboxPrimarySmtpAddress resolves the PrimarySmtpAddress for any mailbox/recipient, with -Raw for string-only output.
  • New: Get-MboxLastMessageTrace returns latest received/sent message info with optional raw trace output.
  • New: Get-EntraGroupDevice lists Entra group memberships for a device via Microsoft Graph.
  • New: Get-EntraGroupUser lists Entra group memberships for a user via Microsoft Graph.
  • New: Added alias gpa for Get-MboxPrimarySmtpAddress.

PRs merged

Full Changelog: v1.1.1...v1.1.2

v1.1.1

16 Dec 14:11
0bf1b78

Choose a tag to compare

A release that serves to complete (we're almost there) the full migration from ToyBox 🗺️⁀જ✈️.

Among other things, it introduces:

  • Add-EntraGroupDevice and Add-EntraGroupUser cmdlets to manage Entra groups.
  • Remove-EntraGroupDevice and Remove-EntraGroupUser cmdlets to manage removals from Entra groups.
  • Add-MsolAccountSku and Move-MsolAccountSku to Add-UserMsolAccountSku and Move-UserMsolAccountSku for clarity (renamed cmdlets).
  • Remove-UserMsolAccountSku cmdlet to remove licenses from users.
  • Copy-UserMsolAccountSku cmdlet to copy licenses between users.
  • Copy-OoOMessage cmdlet to duplicate Out of Office messages between mailboxes, Export-CalendarPermission to export calendar permissions, and Set-OoO to set Out of Office messages.
  • Disable-UserDevices cmdlet to disable user devices, Disable-UserSignIn cmdlet to disable sign-in for users and Revoke-UserSessions cmdlet to revoke user sessions.
  • Get-RoomDetails cmdlet to retrieve detailed information about meeting rooms.

What's Changed

Full Changelog: v1.1.0...v1.1.1

v1.1.0

05 Dec 15:58
ca6336c

Choose a tag to compare

A release before a few days off: fixed a few minor bugs and introduced some new features (which were already in the pipeline/migration phase from ToyBox) related to the world of licenses.
I am also working on a quarantine analysis page, which I will describe in more detail in KB soon.

What's Changed

  • Potential fix for code scanning alert no. 1: Workflow does not contain permissions by @gioxx in #2
  • 1.1.0 by @gioxx in #3

New Contributors

  • @gioxx made their first contribution in #2

Full Changelog: v1.0.0...v1.1.0

v1.0.0

02 Dec 14:48

Choose a tag to compare

Hello World 😄 👋🏻 This is the first public version of the module! 🧙🏻

What's Changed

  • deps(deps): bump actions/checkout from 4.1.7 to 6.0.0 by @dependabot[bot] in #1

New Contributors

Full Changelog: https://github.com/gioxx/Nebula.Core/commits/v1.0.0