Releases: gioxx/Nebula.Core
v1.2.1 🐣
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-IntuneAppInventoryfor Intune app inventory reporting, with optional deployed-app status enrichment and CSV/JSON export. - Change: Added
New-IntuneAppBasedGroupto 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-IntuneProfileLocationto locate which Intune Graph surface hosts a profile and return its source, ID, and OData type. - Change: Added an optional
-Domainfilter toExport-MsolAccountSkuso exports can be limited to users in a specific domain, matchingMail,UserPrincipalName, andProxyAddresses. - Change: Added an optional
-Licensefilter toExport-MsolAccountSkuso exports can target users holding a specific license while still including all of their assigned licenses in the CSV. - Change:
Get-TenantMsolAccountSkunow supports-IncludeSampleUsersfor the default sample size and renders sample-user output separately for better readability in-AsTableand-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.ps1focused on public cmdlets. - Change:
Get-UserMsolAccountSkunow shows an explicit warning when the target user exists but has no assigned licenses. - Fix:
Get-UserMsolAccountSku -Clipboardno 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-IntuneProfileAssignmentsByGroupto 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) inAdd/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
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-MboxPermissionnow prints confirmation messages by default; use-PassThrufor detailed output objects. - Change:
Get-MboxPrimarySmtpAddress(gpa) now returns a compact default view (DisplayName,PrimarySmtpAddress); use-Detailedfor full recipient fields. - Change:
Get-UserGroupsnow returnsGroupNameandGroupMailproperty names (instead of spaced names) for easier scripting and filtering. - Change:
Remove-MboxPermissionnow uses-ClearAll(renamed from-RemoveAllAdditionalPermissions). - Fix:
Add-UserMsolAccountSkunow accepts positional and pipeline UPN input (<UserPrincipalName> -License ...and'u1','u2' | Add-UserMsolAccountSku -License ...). - Fix:
Add-UserMsolAccountSkunow reports only actually assignable licenses in confirmation/success messages and explicitly reports skipped SKUs with zero availability. - Fix:
Get-MboxStatisticsnow processes all mailbox identities received via pipeline (not only the last one). - Fix:
Remove-MboxAliasnow validates post-update proxy addresses to avoid false "removed" messages when an alias is protected (for example, WindowsLiveId). - Fix:
Remove-MboxPermissionnow supports positional calls (Remove-MboxPermission <SourceMailbox> <UserMailbox>). - Fix:
Remove-UserMsolAccountSkunow 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-EntraGroupMemberscan resolve registered owners/users for device members via -IncludeDeviceUsers. - Improve:
Get-EntraGroupMembersreports device owners/users in a single column when resolved. - Improve:
Get-MboxStatisticsnow always includesArchiveEnabledto quickly show whether an archive exists. - Improve:
Get-NebulaModuleUpdatesnow also checks ExchangeOnlineManagement and Microsoft.Graph meta modules. - Improve:
Get-TenantMsolAccountSkunow reports Available net of suspended seats and shows Total with enabled/suspended breakdown. - Improve:
Get-UserMsolAccountSkucan show tenant availability for assigned SKUs via-CheckAvailability. - Improve:
Remove-EntraGroupDevice/Remove-EntraGroupUsercan clear all group members via-ClearAll(with stronger confirmation). - Improve: User identifier resolution via
Find-UserRecipientis now applied consistently acrossGet/Add/Remove-EntraGroupUserandDisable-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-EntraGroupMemberslists all members of an Entra group (users, devices, ...). - New:
Get-MboxStatisticsreturns a simplified mailbox statistics view. - New:
Get-NebulaModuleUpdatesruns an on-demand update check for Nebula.* modules. - New:
Get-TenantMsolAccountSkuadds TotalCount with the numeric total for scripting. - New:
Search-EntraGroupsearches Entra groups by display name or description. - New:
Search-MboxCutoffWindowcreates/reuses Purview Compliance Searches to isolate mailbox discard sets (estimate + optional preview) before export/cleanup workflows. - New:
Set-MboxMrmCleanupapplies a temporary MRM cleanup policy/tag to a mailbox, with optional Managed Folder Assistant trigger using-RunAssistant. - New: Update checks during
Connect-Nebulacan be throttled via CheckUpdatesIntervalHours. - New:
Update-NebulaConnectionsadds an explicit refresh entry point for connection status checks.
Full Changelog: v1.1.2...v1.2.0
v1.1.2
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-UsageLocationnow 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-NCRetrylogic. - Fix:
Export-QuarantineEmlnow creates the destination folder when missing and resolves relative paths correctly. - Improve:
Export-QuarantineEmlnow accepts Identity values (GUID\GUID) in addition to MessageId, supports multiple inputs, and returns all exported items. - Improve:
Format-MessageIDsFromClipboardnow outputs the copied quarantine identity values (one per line). - Improve:
Get-UserMsolAccountSkunow accepts also pipeline input. Also, it now supports-Clipboardto copy a quoted list of licenses. - Improve:
Remove-UserMsolAccountSkunow uses two parameter sets. With-All, it removes all licenses assigned to the user, displaying the names (resolved via catalog if available). The-Licenseparameter remains for selective removal. - Improve:
Get-TenantMsolAccountSkunow supports-Filterto show only licenses matching the provided text (name or SkuPartNumber). - Improve:
Remove-MboxPermissionnow supports-RemoveAllAdditionalPermissionsto remove non-inherited FullAccess, SendAs, and SendOnBehalfTo from a mailbox. - New:
Get-MboxPrimarySmtpAddressresolves the PrimarySmtpAddress for any mailbox/recipient, with-Rawfor string-only output. - New:
Get-MboxLastMessageTracereturns latest received/sent message info with optional raw trace output. - New:
Get-EntraGroupDevicelists Entra group memberships for a device via Microsoft Graph. - New:
Get-EntraGroupUserlists Entra group memberships for a user via Microsoft Graph. - New: Added alias
gpaforGet-MboxPrimarySmtpAddress.
PRs merged
- 1.1.2 by @gioxx in #7
- Fix usage location by @gioxx in #8
- Added -filter to Get-TenantMsolAccountSku by @gioxx in #9
Full Changelog: v1.1.1...v1.1.2
v1.1.1
A release that serves to complete (we're almost there) the full migration from ToyBox 🗺️⁀જ
Among other things, it introduces:
Add-EntraGroupDeviceand Add-EntraGroupUser cmdlets to manage Entra groups.Remove-EntraGroupDeviceand Remove-EntraGroupUser cmdlets to manage removals from Entra groups.Add-MsolAccountSkuandMove-MsolAccountSkutoAdd-UserMsolAccountSkuand Move-UserMsolAccountSku for clarity (renamed cmdlets).Remove-UserMsolAccountSkucmdlet to remove licenses from users.Copy-UserMsolAccountSkucmdlet to copy licenses between users.Copy-OoOMessagecmdlet to duplicate Out of Office messages between mailboxes,Export-CalendarPermissionto export calendar permissions, andSet-OoOto set Out of Office messages.Disable-UserDevicescmdlet to disable user devices,Disable-UserSignIncmdlet to disable sign-in for users andRevoke-UserSessionscmdlet to revoke user sessions.Get-RoomDetailscmdlet to retrieve detailed information about meeting rooms.
What's Changed
- deps(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #5
- 1.1.1 by @gioxx in #6
Full Changelog: v1.1.0...v1.1.1
v1.1.0
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
Full Changelog: v1.0.0...v1.1.0
v1.0.0
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
- @dependabot[bot] made their first contribution in #1
Full Changelog: https://github.com/gioxx/Nebula.Core/commits/v1.0.0