A modular PowerShell CLI toolkit to establish a simple, and logical workflow from a single place to establish and manage Microsoft Places, Exchange Room Resources, and Metadata across Microsoft 365 environments.
Caution
This repository is still under major initial development, and should be considered 'Extreme Alpha'. Any use of this repository is at your own risk knowing there will be continued and ongoing changes underway.
- 🏗️ Purpose
- 🛡 Design Philosophy
- 🚀 Features
- 🔧 Requirements
- 🧠 Usage
- 📁 Folder Structure
- 🧪 Running Tests
- 🔁 Backup & Restore
- 🔗 Useful Microsoft Docs
- 🙋 Support
- 🔐 Data Safety
- 🔧 TODO
- 📘 License & Credits
This script is intended to help someone either setup, or manage, a Microsoft Exchange and Teams environment to:
- Removes the need to navigate across multiple Admin applications, scripts, blades, etc to setup and maintain
- Initial configuration (right settings configured so you can do this)
- Bulk upload and maintenance (by way of .csv file) of sites, buildings, floors, desk groups and desks
- Manage the bookable desk lifecycle (create, manage, rename, reassign, end of life)
- Ensure consistency of naming conventions for desks
- Provide disaster recovery for your environment, keeping offline backups of the environment for ease of restoration if and when needed
- Offline storage of data to increase speed of action
- Make your job as a Microsoft Modern Workplace analyist/engineer several times easier
A more detailed explaination to the working approach for this project can be found in IDEA and SPECIFICATION.
See Design Philosophy.
For full list, see Features.
- ✅ Interactive CLI with modular submenus
- ✅ Automated first-time tenant setup (robustly enforced at launch)
- ✅ Resource provisioning (Desk / Room / Equipment)
- ✅ Metadata and site structure management, and local caching of information for speed
- ✅ CSV template export/import for bulk editing of sites, buildings, floors, desks, desk pools, etc.
- ✅ Logging, draft recovery, and error handling
- ✅ Simulation test suite with cleanup tools
- ✅ Auto-discovery of domains + validation of Exchange & Places configurations to support
- ✅ Exchange Online + Microsoft Graph Places + Microsoft Teams integration
- ✅ Uses native functions within existing PowerShell modules wherever possible
- ✅ Backup and restore features, to enable complete download and upload of your configuration
- ✅ Verbose session logging and input capture via
-LogVerboseflag - ✅ Robust error handling and user acknowledgement for all critical failures
- ✅ Proactive Exchange Online connection and first-time setup enforcement
- ✅ All connection routines are robust, session-reusing, and provide clear diagnostic output for Exchange, Teams, and Places.
- ✅ All cmdlets and scripts use approved PowerShell verbs for discoverability and linter compliance.
- ✅ Project is fully linted with PSScriptAnalyzer; all code changes validated for compliance.
See Requirements.
-
Clone the repo:
git clone https://github.com/twcau/OfficeSpaceManager cd OfficeSpaceManager -
Open PowerShell 7+
-
Navigate to the folder
-
Run:
.\Invoke-MainMenu.ps1 [-LogVerbose]
- The optional
-LogVerboseflag enables full session transcript and input logging toLogs/TerminalVerbose. - On first run, you will be guided through robust first-time setup and Exchange Online connection. All errors require user acknowledgement and are logged.
- The optional
WARNING: Due to continued development, this is subject to change.
See Folder Structure.
See Running Tests.
For more infomation, see Running Tests.
- Microsoft Places Overview
- Microsoft Graph Places API
- Exchange Room Mailbox Docs
- Set-CalendarProcessing
See Support.
See Data Safety
See TODO and Known Issues.
OfficeSpaceManager – Internal Admin Toolkit © 2025 – Michael Harris. Use it well. Built with PowerShell for Microsoft 365 tenants
See LICENSE for further information.