Scripts & Tools

Free PowerShell scripts for IAM & AD admins

Practical, read-only audits and safe-by-default cleanup utilities I’ve written for day-to-day identity operations. Click any script for details and the GitHub link.

Invoke-ADHealthCheck

Comprehensive read-only Active Directory health assessment. 18 diagnostic checks across forest, domain controllers, replication, DNS, services and AD hygiene — producing a styled HTML report, CSV summary, and (optionally) email delivery with a status-coded subject line.

PowerShell · Read-only · HTML + CSV + Email

Invoke-ADDnsHealthCheck

Read-only DNS health check for an Active Directory forest. Verifies DCs run the DNS Server role, audits DC NIC settings, validates forwarders, walks every forward and reverse zone, and flags Microsoft DNS best-practice deviations.

PowerShell · Read-only · HTML + 5 CSVs + Email

Remove-DnsRecordPair

Removes a DNS A record and its matching PTR record together as a single, validated operation — the natural cleanup companion to Invoke-ADDnsHealthCheck. Keeps forward and reverse zones in sync; safe-by-default with -WhatIf/-Confirm.

PowerShell · Safe-by-default · Writes to DNS when -Apply

Invoke-DNSMigrationValidation

Two-phase validation for a DC-to-Infoblox DNS migration — capture a JSON baseline of DC, SRV and PTR state pre-cutover, then validate against the new authoritative DNS server afterwards and diff the result against the baseline. Mode-aware DC health checks (dcdiag pre-cut, PowerShell-native TCP / LDAP RootDSE post-cut so a stale resolver can’t hang the run), pre-flight reachability gate, GSS-TSIG refresh test. HTML report + JSON baseline + optional email. No WinRM.

PowerShell · Baseline / Validate / Compare · HTML + JSON + email

Invoke-ADStaleObjectsCleanup

Three-stage lifecycle for stale AD user and computer accounts — Disable → Move → Delete. Audit-only by default; every stage is opt-in and gated by an explicit -Apply switch. Built-in protection for krbtgt, adminCount=1, DC accounts and standard privileged groups.

PowerShell · Safe-by-default · Writes to AD when -Apply

ADCleanUP

A two-script Active Directory cleanup toolkit — CleanUp-ADUsers.ps1 for inactive user accounts and CleanUp-Workstations.ps1 for stale workstation (computer) accounts. Both follow the same inactivity-driven Report → Disable → Delete lifecycle, with optional Entra ID sign-in verification and a deep set of built-in exclusions; preview everything with -WhatIf.

PowerShell · 2 scripts · -WhatIf dry-run · Users + workstations
Get in touch

Let’s talk identity.

Open to advisory, contract and permanent opportunities involving Active Directory, Entra ID, identity governance, or zero-trust programmes. The best way to reach me is by email.

Location
United States — Remote