# OfficeSpaceManager 🏢

PowerShell 7+ Build Status Test Coverage

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.

  • 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

  1. Clone the repo:

    terminal
    git clone https://github.com/twcau/OfficeSpaceManager
    cd OfficeSpaceManager
  2. Open PowerShell 7+

  3. Navigate to the folder

  4. Run:

    .\Invoke-MainMenu.ps1 [-LogVerbose]
    • The optional -LogVerbose flag enables full session transcript and input logging to Logs/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.

# Useful Microsoft Docs


# 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.