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

Leave a Reply

Your email address will not be published.