Sometimes you need to know the Windows Version of all domain controllers in the forest. This short snippet can help to find all domain controllers in the entire forest.
<#
Get all Domain Controllers Windows Versions
#>
# Set variables
$ADDomainController = @()
$Domains = (Get-ADForest).Domains
foreach($Domain in $Domains) {
# Get some values from domain
$ADDomain = Get-ADDomain -Identity $Domain
$ADDcOU = $ADDomain.DomainControllersContainer
# Get the fastest domain controller
$DC = Test-Connection -ComputerName $ADDomain.ReplicaDirectoryServers -Count 1 |
Sort-Object -Property ResponseTime |
Select-Object -First 1 -ExpandProperty Address
# Get all domain controler from this domain
$ADDomainController += Get-ADComputer -Filter * -SearchBase $ADDcOU -Properties OperatingSystem -Server $DC |
Select-Object Name,OperatingSystem
}
$ADDomainController | Sort-Object -Property OperatingSystem
$ADDomainController |
Group-Object -Property OperatingSystem |
Select-Object -Property Count, Name
Have fun