Public/Get-ALHADSubnetInfo.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
<#PSScriptInfo
.VERSION 1.1.0 .GUID c993f4be-ac1d-4744-92e5-7fd55f58daa4 .AUTHOR Dieter Koch .COMPANYNAME .COPYRIGHT (c) 2021-2023 Dieter Koch .TAGS .LICENSEURI https://github.com/admins-little-helper/ALH/blob/main/LICENSE .PROJECTURI https://github.com/admins-little-helper/ALH .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 1.0 - Initial release 1.1.0 - Cleaned up code #> <# .DESCRIPTION Contains function to get a sorted list of all AD Subnets for the domain the user running the cmdlet is member in. #> function Get-ALHADSubnetInfo { <# .SYNOPSIS Returns a sorted list of all AD Subnets for the domain the user running the cmdlet is member in. .DESCRIPTION Returns a sorted list of all AD Subnets for the domain the user running the cmdlet is member in. .EXAMPLE Get-ALHADDSSubnetInfo .INPUTS Nothing .OUTPUTS PSCustomObject .NOTES Author: Dieter Koch Email: diko@admins-little-helper.de .LINK https://github.com/admins-little-helper/ALH/blob/main/Help/Get-ALHADSubnetInfo.txt #> [CmdletBinding()] param () $RequiredModules = "ActiveDirectory" foreach ($RequiredModule in $RequiredModules) { if (-not [bool](Get-Module -Name $RequiredModule)) { if (-not [bool](Get-Module -Name $RequiredModule -ListAvailable)) { Write-Warning -Message "Module $RequiredModule not found. Stopping function." break } Write-Verbose -Message "Importing $RequiredModule Module" Import-Module ActiveDirectory } } Write-Verbose -Message "Get a list of all domain controllers in the forest" $DcList = (Get-ADForest).Domains | ` ForEach-Object { Get-ADDomainController -Discover -DomainName $_ } | ` ForEach-Object { Get-ADDomainController -Server $_ -Filter * } Write-Verbose -Message "Get all replication subnets from Sites & Services" $Subnets = Get-ADReplicationSubnet -Filter * -Properties * | Select-Object Name, Site, Location, Description $ResultsArray = @() foreach ($Subnet in $Subnets) { $SiteName = "" If ($null -ne $Subnet.Site) { $SiteName = $Subnet.Site.Split(',')[0].Trim('CN=') } $DcInSite = $False If ($DcList.Site -Contains $SiteName) { $DcInSite = $True } $RA = New-Object PSObject $RA | Add-Member -type NoteProperty -Name "Subnet" -Value $Subnet.Name $RA | Add-Member -type NoteProperty -Name "SiteName" -Value $SiteName $RA | Add-Member -type NoteProperty -Name "DcInSite" -Value $DcInSite $RA | Add-Member -type NoteProperty -Name "SiteLoc" -Value $Subnet.Location $RA | Add-Member -type NoteProperty -Name "SiteDesc" -Value $Subnet.Description $ResultsArray += $RA } $ResultsArray | Sort-Object -Property SiteName, Subnet } #region EndOfScript <# ################################################################################ ################################################################################ # # ______ _ __ _____ _ _ # | ____| | | / _| / ____| (_) | | # | |__ _ __ __| | ___ | |_ | (___ ___ _ __ _ _ __ | |_ # | __| | '_ \ / _` | / _ \| _| \___ \ / __| '__| | '_ \| __| # | |____| | | | (_| | | (_) | | ____) | (__| | | | |_) | |_ # |______|_| |_|\__,_| \___/|_| |_____/ \___|_| |_| .__/ \__| # | | # |_| ################################################################################ ################################################################################ # created with help of http://patorjk.com/software/taag/ #> #endregion |