Skip to content
3.0 preview2.3.0 stable

These docs describe the preview. Pick the version you run and every page marks what it doesn't have yet. Get the preview →
Maester 2.x docs (archived) →

Sponsor

Introduction

Maester is a PowerShell based test automation framework to help you stay in control of your Microsoft security configuration.

As business needs evolve, we often need to make changes to our tenant configuration. As employees come and go, new features are added, and existing features are updated. How do you ensure that a change in one area doesn’t introduce a security vulnerability in another?

Take for example conditional access policies. You may have a policy that requires multi-factor authentication for a group of users. What if someone accidentally deletes the group or removes users from the group? Your conditional access policy is now ineffective.

Let’s take another scenario that is fairly common. What if the original author of the conditional access policy leaves the company and someone else makes a change to the policy without understanding the implications?

Transcript

Resolve the config. Maester merges your config files into one: what to run, settings for each check, and where results go.

Select the checks. Your selection picks checks by product, framework, severity, test ID or pack. -DryRun shows the list before anything runs.

Apply the gates. A check that needs a service you didn't connect, or a licence you don't have, is skipped with a reason code. It is never marked failed.

Run on the engine. The engine runs each planned check, enforces time-outs and turns a family into one row per policy, mailbox or app.

Write the report. One result becomes the HTML report, JSON, JUnit for your pipeline, and email or Teams alerts.

Updated 2026-11-02 for Maester 3.0. Made with HyperFrames from HTML in the Maester repository.

What if we could run a set of tests to ensure that our configuration is in compliance with our security policies?

That is exactly what Maester does.

Maester provides a framework for you to bring DevOps practices to managing your Microsoft security configuration.

  • Define your security policies as code and store them in a version control system.
  • Continuously run tests that ensure your tenant configuration is complying with the defined policies.
  • Found an incorrect configuration? Create a new test to ensure it doesn’t happen again.
  • Write tests using Pester, a popular testing framework for PowerShell.
  • Use the built-in tests to quickly get started with monitoring your tenant.
  • Write custom tests as you introduce new configuration and codify your intent for the configuration.

This introductory session on Maester is from the PowerShell + DevOps Global Summit 2024 and provides an overview of the Maester framework.