Use this command to install AutomatedLab with WinGet:
winget install --id=AutomatedLab.AutomatedLab -e
AutomatedLab is a provisioning solution and framework designed to simplify the deployment of complex labs on HyperV and Azure using simple PowerShell scripts. This tool empowers users to automate the creation of intricate environments by leveraging familiar scripting capabilities.
Key Features:
Simplified Deployment: Quickly provision virtual labs with minimal effort through PowerShell automation.
Cross-Platform Support: Works seamlessly across HyperV and Azure, offering flexibility in deployment environments.
Extensive OS Compatibility: Supports a wide range of Windows operating systems from 2008 R2 to 2022, as well as select Linux distributions.
Product Integration: Easily integrates with various products such as Active Directory (AD), Exchange, Public Key Infrastructure (PKI), and IIS.
Scriptable Customization: Leverage PowerShell scripts for tailored configurations, enabling users to meet specific lab requirements.
Audience & Benefit:
Ideal for IT professionals, system administrators, educators, and anyone needing to create complex testing or learning environments. AutomatedLab accelerates the deployment process, reduces manual effort, and enhances consistency across virtualized infrastructure. By automating repetitive tasks, it allows users to focus on building and managing their labs efficiently.
Installation is straightforward via winget, ensuring quick setup for organizations and individuals alike.
README
AutomatedLab
Build
Status
Last Commit
Latest Release
Develop
Master
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
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.
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.
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
After the prerequisites are satisfied, you can use .build/StartLocalBuild.ps1 to
run a local build in a fresh PowerShell session that does not already have AutomatedLab imported.
We are loading a library, so importing a different library version will not work.
If you would like to skip the Pester validation, specify the parameter SkipValidation.
To build the installer, use the parameter BuildInstaller.
Running the local build also updates your module path, so that you are directly using your
freshly built modules.
The result is a folder publish containing all AutomatedLab modules, while requiredmodules
contains all required modules.