Public/Get-ADSiteDetail.ps1
Function Get-ADSiteDetail { [CmdletBinding(DefaultParameterSetName="All")] param ( # Parameter to check all of the AD sites. [Parameter(Mandatory=$false, ParameterSetName="All")] [switch] $All, # Name of the specific AD site. [Parameter(Mandatory=$false, ParameterSetName="SiteName", Position=1)] [ValidateNotNullOrEmpty()] [string] $SiteName ) process { if ($psCmdlet.ParameterSetName -eq "All") { $SiteList = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().sites $SiteDetails = New-Object System.Collections.ArrayList foreach ($Site in $SiteList) { $TempObject = [PSCustomObject]@{ SiteName = $($Site.Name) SiteLinks = $($Site.SiteLinks.Name) -join ',' SiteSubnets = $($Site.Subnets.Name) -join ',' } $SiteDetails += $TempObject } $SiteDetails | Format-Table -AutoSize -Wrap } elseif ($psCmdlet.ParameterSetName -eq "SiteName") { $SiteList = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().sites | Where-Object {$_.Name -eq "$SiteName"} $SiteDetails = New-Object System.Collections.ArrayList foreach ($Site in $SiteList) { $TempObject = [PSCustomObject]@{ SiteName = $($Site.Name) SiteLinks = $($Site.SiteLinks.Name) -join ',' SiteSubnets = $($Site.Subnets.Name) -join ',' } $SiteDetails += $TempObject } $SiteDetails | Format-Table -AutoSize -Wrap } } } |