AutomatedLab is a free, open source data security & privacy project written in PowerShell and released under MIT. It has 2,226 GitHub stars, 383 forks and 31 open issues, and was last pushed 2 months ago. On this registry it ranks #17 of 22 tracked projects in Data Security & Privacy, with 5 head-to-head comparisons available.

What is AutomatedLab?

AutomatedLab is an MIT-licensed PowerShell provisioning framework that deploys complex lab environments — Windows domain controllers, Exchange, PKI, IIS and Linux guests — on Hyper-V or Azure from simple scripts, built for IT admins, testers and trainers who need full multi-VM labs on demand.

What it is

AutomatedLab (AL) is a PowerShell module, published on the PowerShell Gallery, that spins up test and lab environments on Hyper-V or Azure. It installs Windows guests from 2008 R2 through 2022, several Linux distributions, and configures common products such as Active Directory, Exchange, PKI, IIS and domain controllers. According to its own project summary, it is a provisioning solution and framework for deploying complex labs with simple PowerShell scripts.

The concrete problem it solves is the slow, hand-built lab. Instead of clicking through VM creation, sysprepping images, promoting domain controllers, and standing up a certificate authority or Exchange server by hand, an operator declares the intended topology in a script and lets AutomatedLab build it. The framework replaces manual Hyper-V and Azure provisioning work. It lives in the Windows and PowerShell ecosystem and requires only DVD ISO images and either a Hyper-V host or an Azure subscription as its two prerequisites.

Key capabilities

  • Provision on both Hyper-V and Azure from the same PowerShell scripting surface.
  • Supports all Windows operating systems from 2008 R2 to 2022, plus some Linux distributions.
  • Ships product roles including Active Directory, Exchange, PKI, IIS and domain controllers.
  • Deploys supported Linux guests: CentOS/RHEL/Fedora, Ubuntu Server (Desktop ISO is not supported), and OpenSUSE/SUSE.
  • Installable from the PowerShell Gallery as the AutomatedLab package.
  • Supports Hyper-V and Azure hosts on Windows Server 2012 R2+/Windows 8.1+ with Windows Management Framework 5+ or PowerShell 7.
  • Enables Linux and macOS remoting through SSH or gss-ntlmssp, with PSWSMAN/WSMAN as the documented fallback.

Who uses it and how

  • Administrators who need disposable Active Directory, PKI and domain-controller labs for testing configuration changes.
  • Trainers and lab operators who need multi-VM environments with real product roles, not single throwaway VMs.
  • Azure users who provision labs from a subscription without a local Hyper-V host.
  • Linux, WSL and Azure Cloud Shell users who run PowerShell Core 6+ and rely on SSH or gss-ntlmssp remoting.
  • Teams validating Chocolatey package distribution and digital signatures against a domain controller and certificate authority, as the documented NuGet server and Azure DevOps samples do.

Getting started

Install from the PowerShell Gallery with Install-Module AutomatedLab, then supply the required DVD ISO images together with either a Hyper-V host or an Azure subscription. No other setup is needed beyond meeting the documented OS, .NET and remoting requirements.

How it compares

The registry provides no list of paid products that AutomatedLab replaces, and names no directly comparable tool. Within this registry it stands alone for script-driven Hyper-V and Azure lab provisioning.

When to use it — and when not to

A self-hoster must operate a Hyper-V host or hold an Azure subscription, supply all operating system ISO images, run with administrative privileges on Windows, and provide low-latency high-throughput storage, since spinning disks cause documented issues. It is not a good fit for anyone unwilling to manage those prerequisites, and Linux or macOS support is best-effort because the maintainers lack Apple hardware. The project carries 31 open issues and its README is functional rather than exhaustive, so expect to read the documentation site for deeper scenarios.

project readme (upstream, from github) — read inline

AutomatedLab

Build Status Last Commit Latest Release
Develop Build status dev GitHub last commit
Master Build status GitHub last commit GitHub releasePowerShell Gallery

GitHub issues Downloads PowerShell Gallery

Project Summary

AutomatedLab (AL) enables you to setup test and lab environments on Hyper-v or Azure with multiple products or just a single VM in a very short time. There are only two requirements you need to make sure: You need the DVD ISO images and a Hyper-V host or an Azure subscription.

Sponsors

Huge thanks to our regular sponsor @chocolatey! In case you have lived under a rock (or worked mainly on non-Windows systems) for the past decade, Chocolatey is a brilliant package management system with a public binary package gallery as well as self-hosted options complete with enterprise-grade support. Give it a try with a local lab environment - it could not be easier 😊 Start with a Domain Controller and a Certificate Authority to validate not only package distribution, but also digital signatures. Our samples such as the NuGet server or Azure DevOps all include galleries that Chocolatey can use for publishing and downloading packages.

Requirements

Apart from the module itself your system needs to meet the following requirements:

  • Windows Management Framework 5+ (Windows)
  • .NET 4.7.1 (Windows PowerShell) or .NET Core 2.x (PowerShell 6+)
  • OS
    • Windows Server 2012 R2+/Windows 8.1+ (Hyper-V, Azure)
    • Linux (Azure)
    • macOS (Azure, best-effort support since neither @raandree nor @nyanhp have Apple devices)
  • Recommended OS language is en-us
  • Admin privileges are required on Windows
  • ISO files for all operating systems (Hyper-V only) and roles to be deployed (Hyper-V, Azure)
  • Intel VT-x or AMD/V capable CPU
  • A decent amount of RAM
  • Low-Latency high-throughput storage (No spinning disks please, as there are issues related to them)
Windows
  • Windows Management Framework 5+ or ideally PowerShell 7
  • Windows Server 2012 R2+/Windows 8.1+
  • Recommended OS language is en-us
  • Admin privileges are required
Linux, macOS
  • Supported host OS (Azure, Proxmox): Fedora, Ubuntu, Ubuntu WSL & Azure Cloud Shell
  • Supported Linux guests: CentOS/RHEL/Fedora (any flavor), Ubuntu Server (Desktop ISO is not supported), OpenSUSE/SUSE
  • macOS supported on best effort due to lack of Apple devices - feel free to sponsor two though :D
  • Regularly tested on Fedora (non-WSL) and Ubuntu (WSL). Due to fragmented nature of Linux distributions, support is best-effort and takes time
  • PowerShell Core 6+
  • SSH or gss-ntlmssp to enable remoting (mandatory - no remoting, no way for AutomatedLab to do its thing)
    • If in doubt, try to Install-Module PSWSMAN; Install-WSMAN - no success warranted
  • IP and route commands available
  • Azure subscription
    • At the moment, AutomatedLab only works using Azure when using Linux.
    • KVM planned for a later date by virtue of libvirt.

Download AutomatedLab

There are two options installing AutomatedLab:

1. Installation

2. Getting started

3. Contributing

Version History

Supported products

This solution supports setting up virtual machines with the following products

  • Windows 7, 2008 R2, 8 / 8.1 and 2012 / 2012 R2, 10 / 2016, 2019, 2022
  • SQL Server 2012, 2014, 2016, 2017, 2019, 2022
  • Visual Studio 2012, 2013, 2015
  • Team Foundation Services 2018, Azure DevOps Server
  • Exchange 2013, 2016, 2019
  • System Center Orchestrator 2012
  • System Center Operations Manager 2019
  • System Center Service Manager 2019
  • Microsoft Endpoint Manager Configuration Manager 1902 (and newer)
  • MDT
  • ProGet (Private PowerShell Gallery)
  • Office 2013, 2016, 2019
  • DSC Pull Server (with SQL Reporting)
  • Dynamics 365
  • Remote Desktop Services including HTML5 web client

Feature List

  • AutomatedLab (AL) makes the setup of labs extremely easy. Setting up a lab with just a single machine is only 3 lines. And even complex labs can be defined with about 100 lines (see sample scripts).
  • Labs on Azure can be connected to each other or connected to a Hyper-V lab using a single command.
  • AL can be used to setup scenarios to demo a PowerShell Gallery using Inedo ProGet, PowerShell DSC Pull Server scenarios, ADFS or a lab with 3 Active Directory forests trusting each other.
  • Create, restore and remove snapshots of some or all lab machines with one cmdlet (Checkpoint-LabVM, Restore-LabVMSnapshot, Remove-LabVMSnapshot).
  • Install Windows Features on one, some or all lab machines with one line of code (Install-LabWindowsFeature).
  • Install software to a bunch of lab machines with just one cmdlet (Install-LabSoftwarePackages). You only need to know the argument to make the MSI or EXE go into silent installation mode. This can also work in parallel thanks to PowerShell workflows.
  • Run any custom activity (Script or ScriptBlock) on a number of lab machines (Invoke-LabCommand). You do not have to care about credentials or double-hop authentication issues as CredSsp is always enabled and can be used with the UseCredSsp switch.
  • Creating a virtual environment that is connected to the internet was never easier. The only requirements are defining an external facing virtual switch and a machine with two network cards that acts as the router. AL takes care about all the configuration details like setting the gateway on all machines and also the DNS settings (see introduction script 05 Single domain-joined server (internet facing).ps1).
  • AL offers offline patching with a single command. As all machines a based on one disk per OS, it is much more efficient to patch the ISO files that are used to create the base images (Update-LabIsoImage). See script 11 ISO Offline Patching.ps1 for more details.
  • If a lab is no longer required, one command is enough to remove everything to be ready to start from scratch (Remove-Lab)

Local build

While we frequently release prereleases to the PowerShell Gallery, you might be interested to build the entire module locally yourself.

While the steps remain the same, the prerequisites are slightly different on Windows and Linux

Windows:

  • Installer required? WiX 3

readme truncated — read the full docs on github

Frequently asked questions

Is AutomatedLab free to use?

AutomatedLab is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does AutomatedLab do?

AutomatedLab is a provisioning solution and framework that lets you deploy complex labs on HyperV and Azure with simple PowerShell scripts. It supports all Wind

What is AutomatedLab written in?

AutomatedLab is primarily written in PowerShell. Its source is publicly available at https://github.com/AutomatedLab/AutomatedLab, and it has 2,226 GitHub stars.