Active Directory Info Script
Use this script to view Active Directory info. Super useful when you want some details.
<#
.SYNOPSIS
Get-ADInfo.ps1
.DESCRIPTION
Get Active Directory information.
.CHANGELOG
V1.0 - 24/07/2025 - Release
#>
# Get counts of different types of objects in Active Directory
$Computers = (Get-ADComputer -Filter * | Measure-Object).Count
$Workstations = (Get-ADComputer -Filter { OperatingSystem -notlike "*Server*" } | Measure-Object).Count
$Servers = (Get-ADComputer -Filter { OperatingSystem -like "*Server*" } | Measure-Object).Count
$Users = (Get-ADUser -Filter * | Measure-Object).Count
$Groups = (Get-ADGroup -Filter * | Measure-Object).Count
# Get Active Directory Forest information
$ADForest = (Get-ADDomain).Forest
$ADForestMode = (Get-ADForest).ForestMode
$ADDomainMode = (Get-ADDomain).DomainMode
# Obtain Active Directory Schema version and translate it to the corresponding Windows Server version
$ADVer = Get-ADObject (Get-ADRootDSE).schemaNamingContext -Property objectVersion | Select-Object objectVersion
$ADNum = $ADVer -replace "@{objectVersion=", "" -replace "}", ""
switch ($ADNum) {
'91' { $srv = 'Windows Server 2025' }
'88' { $srv = 'Windows Server 2019/Windows Server 2022' }
'87' { $srv = 'Windows Server 2016' }
'69' { $srv = 'Windows Server 2012 R2' }
'56' { $srv = 'Windows Server 2012' }
'47' { $srv = 'Windows Server 2008 R2' }
'44' { $srv = 'Windows Server 2008' }
'31' { $srv = 'Windows Server 2003 R2' }
'30' { $srv = 'Windows Server 2003' }
}
# Display collected information
Write-host "Active Directory Info" -ForegroundColor Green
Write-host ""
Write-Host "Computers = $Computers"
Write-Host "Workstions = $Workstations"
Write-Host "Servers = $Servers"
Write-Host "Users = $Users"
Write-Host "Groups = $Groups"
Write-host ""
Write-Host "Active Directory Forest Name = "$ADForest
Write-Host "Active Directory Forest Mode = "$ADForestMode
Write-Host "Active Directory Domain Mode = "$ADDomainMode
Write-Host "Active Directory Schema Version is $ADNum which corresponds to $srv"
Write-Host ""
Write-Host "FSMO Role Owners"
# Retrieve FSMO roles individually
$Forest = Get-ADForest
$SchemaMaster = $Forest.SchemaMaster
$DomainNamingMaster = $Forest.DomainNamingMaster
$Domain = Get-ADDomain
$RIDMaster = $Domain.RIDMaster
$PDCEmulator = $Domain.PDCEmulator
$InfrastructureMaster = $Domain.InfrastructureMaster
$NETBiosName = $Domain.NetBIOSName
# Display FSMO role owners
Write-Host "Schema Master = $SchemaMaster"
Write-Host "Domain Naming Master = $DomainNamingMaster"
Write-Host "RID Master = $RIDMaster"
Write-Host "PDC Emulator = $PDCEmulator"
Write-Host "Infrastructure Master = $InfrastructureMaster"
Write-Host "NETBIOS Domain Name = $NETBiosName"