#
OfficeSpaceManager 🏢
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 Features Usage Useful Microsoft Docs TODO License & Credits
#
Purpose
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 development and working approach for this project - including idea, specification, design, and folder structure - can be found in PROJECT OVERVIEW.
#
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
-LogVerbose
flag - ✅ 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.
#
Usage
Clone the repo:
terminalgit clone https://github.com/twcau/OfficeSpaceManager cd OfficeSpaceManager
Open PowerShell 7+
Navigate to the folder
Run:
.\Invoke-MainMenu.ps1 [-LogVerbose]
- The optional
-LogVerbose
flag 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
#
Useful Microsoft Docs
- Microsoft Places Overview
- Microsoft Graph Places API
- Exchange Room Mailbox Docs
- Set-CalendarProcessing
#
TODO
Please see TODO and KNOWNISSUES
#
License & Credits
OfficeSpaceManager – Internal Admin Toolkit © 2025 – Michael Harris. Use it well. Built with PowerShell for Microsoft 365 tenants
See LICENSE for further information; and Donations and thank you's if you would like to contribute or say thank you for this project.