Public/Get-ADDomainControllersBySite.ps1

Function Get-ADDomainControllersBySite() {
    <#
        .SYNOPSIS
        This function uses a .net call to attempt to search for and return Domain Controllers for a specific site.
 
        .PARAMETER sAdSite
        [Mandatory] This string parameter should specify the Active Directory site in which for search for Domain Controllers
 
        .EXAMPLE
        $objAD = Get-ADDomainControllersDotNet -sAdSite "ADSite1"
 
        The returned object will contain an array of the domain controllers listed in the AD site or will return an error
        if none have been found.
 
        .NOTES
        MVogwell
 
        Version history:
            1.0 - Initial release
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)][string]$sAdSite
    )

    BEGIN {
        $ErrorActionPreference = "Stop"
    }
    PROCESS {
        # Search for the domain controllers on the local site
        [System.DirectoryServices.ActiveDirectory.DirectoryContextType]$objContextType = 0
        $objADContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext -ArgumentList $objContextType
        $arrDomainControllers = [System.DirectoryServices.ActiveDirectory.DomainController]::FindAll($objADContext,$sAdSite)
    }
    END {
        return Write-Output $arrDomainControllers -NoEnumerate
    }
}