Getting started
Nebula.Core is a PowerShell module that wraps common Microsoft 365 and Exchange Online admin tasks with safer defaults, clear logging, and CSV-friendly outputs. Use it to connect, inspect, export, and remediate faster.
What's included
- Connections:
Connect-Nebula,Connect-EOL,Disconnect-Nebula,Update-NebulaConnections(with health checks, session repair, and optional Graph). - Configuration:
Get-NebulaConfig,Sync-NebulaConfig. - Calendar: out-of-office replies, calendar permission exports, and room details.
- Compliance: mailbox cutoff-window searches and MRM cleanup.
- Mailboxes: aliases, permissions, quotas, language, shared mailbox setup, sent-items copy, last-seen activity.
- Groups: export distribution/dynamic/M365 groups and role groups; manage Entra group members, devices, and owners.
- Enterprise Applications: export, import, clone, and diff App Registrations + Service Principals within the same tenant.
- Intune: app inventory, app-based device groups, and profile assignment lookups.
- Licenses: Graph-backed SKU catalog, license assignment/copy/move, usage location, and user/license exports.
- Quarantine: search, export EML, release/delete in bulk.
- Security: disable devices and sign-in, revoke sessions, edit content filter policies.
- Statistics: mailbox size/quota exports (CSV or object mode).
- Users: search and remove Entra users.
- Utilities: clipboard helpers for message IDs and e-mails (
mids,fse).
Every function exposes built-in help. Use Get-Help <FunctionName> -Detailed or -Examples for notes, parameters, and prerequisites.
If you prefer an alternative documentation view with AI chat support, you can use DeepWiki:
https://deepwiki.com/gioxx/Nebula.Core
You can ask questions directly there instead of browsing every section manually.
Requirements
- PowerShell 5.1+ (or 7+ recommended). Microsoft is phasing out Microsoft Graph PowerShell SDK support for Windows PowerShell 5.1, and SDK v3 targets PowerShell 7 only, so plan to run Nebula.Core on PowerShell 7.
- Exchange Online Management module for EXO features.
- Microsoft Graph PowerShell SDK for Graph-backed commands (licenses, M365 groups, etc.).
- Proper tenant permissions for the actions you run.
How to download Nebula.Core
Nebula.Core is available on the PowerShell Gallery.
Its GitHub repository is available at github.com/gioxx/Nebula.Core.
Installation from PowerShell Gallery
This is definitely the recommended option and is currently the simplest, provided your machine has internet connectivity and the ability to download files from Microsoft's PowerShell Gallery (powershellgallery.com).
The CurrentUser installs modules in a location that's accessible only to the current user of the computer (for example: $HOME\Documents\PowerShell\Modules):
Install-Module -Name Nebula.Core -Scope CurrentUser
The AllUsers scope installs modules in a location that's accessible to all users of the computer ($env:ProgramFiles\PowerShell\Modules):
Install-Module -Name Nebula.Core -Scope AllUsers
When no Scope is defined, the default is set based on the PowerShellGet version.
In PowerShellGet 1.x versions, the default is AllUsers, which requires elevation for install.
For PowerShellGet versions 2.0.0 and above in PowerShell 6 or higher:
- The default is CurrentUser, which doesn't require elevation for install.
- If you are running in an elevated session, the default is
AllUsers.
I recommend forcing the installation for AllUsers so that the entire system can call the module's functions, regardless of where the script to be executed is located. Needless to say, the final assessment is up to you, and the module also works in a user context (the user who will install the module, of course).
If Graph/EXO modules are missing, some commands can auto-install them when -AutoInstall is available.
Update module
The same rules mentioned in the previous paragraph apply. You can therefore also associate the Scope parameter with the Update command.
Update-Module -Name Nebula.Core
Cleaning of previous installations (optional)
The most up-to-date version of the module installed on your system will always be the one that PowerShell will prefer when you launch an Import-Module or call one of the Nebula.Core functions.
In any case, if you want, you can always perform a complete cleanup of the installed versions and get the latest one (from PowerShell Gallery).
Uninstall-Module -Name Nebula.Core -AllVersions -Force
Install-Module -Name Nebula.Core -Scope CurrentUser -Force
License
Nebula.Core is released under the MIT license. This documentation is licensed under CC BY 4.0: you can reuse it, as long as you credit kb.gioxx.org. The Nebula name and logos are not covered by either license.