{"adoption": {"forks": 385, "observed_at": "2026-08-28T04:06:27.575997+00:00", "stars": 2222}, "canonical_url": "https://ross.abutalabs.com/products/automatedlab", "card": {"archived": false, "artifact_type": "framework", "description": "AutomatedLab is a provisioning solution and framework that lets you deploy complex labs on HyperV and Azure with simple PowerShell scripts. It supports all Windows operating systems from 2008 R2 to 2022, some Linux distributions and various products like AD, Exchange, PKI, IIS, etc.", "domain": ["cloud-computing", "developer-tools", "self-hosted"], "enriched": true, "function": ["infrastructure-as-code", "deployment", "configuration-management", "developer-tools", "cli"], "health_score": 95, "homepage": null, "language": "PowerShell", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["AutomatedLab/AutomatedLab"], "name": "AutomatedLab/AutomatedLab", "platform": ["windows", "cloud", "cross-platform"], "pushed_at": "2026-07-06T09:40:52+00:00", "repo": "AutomatedLab/AutomatedLab", "stars": 2222, "tags": ["powershell-module", "lab-environments", "hyper-v", "azure", "active-directory", "pki", "exchange", "provisioning", "test-environments", "virtualization", "devops", "automation"], "topics": ["powershell", "deployment", "active", "directory", "pki", "exchange", "scripted", "active-directory", "domain-controller", "automated-deployment", "scripted-deployment", "lab-machine", "azure", "hyperv", "hyper"], "urls": [], "use_cases": ["spin up a test lab with domain controllers in minutes", "deploy Active Directory lab environments with PowerShell", "provision Exchange or PKI test environments on Hyper-V", "create Azure lab VMs from a script", "build repeatable demo environments for products like IIS", "set up multi-VM lab environments for testing"], "what_it_is": "AutomatedLab is a PowerShell framework for provisioning complex test and lab environments on Hyper-V or Azure using simple declarative scripts. It supports Windows Server 2008 R2 through 2022, some Linux distributions, and products like Active Directory, Exchange, PKI, and IIS.", "when_to_avoid": ["you need production infrastructure provisioning rather than lab/test environments", "your target is non-Windows hypervisors like VMware or Proxmox", "you need a GUI-driven lab builder"], "when_to_choose": ["you need reproducible Windows lab or test environments on Hyper-V or Azure", "you want to script deployment of AD, PKI, Exchange, or IIS for testing", "you prefer PowerShell-based infrastructure provisioning"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/automatedlab", "repo": "AutomatedLab/AutomatedLab", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.575997+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:45:44.939562+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8dcfefacda1344405c55281532ed5ac888945158ff364b0537c5823352ea405", "fetched_at": "2026-08-28T04:06:27.575997+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AutomatedLab/AutomatedLab"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 100, "rhythm": 71}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3663, "days_push": 58, "days_rel": 113, "gap_med": 61.0, "n_releases_24m": 7}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}