Public/Find-ADPartition.ps1

<#
.SYNOPSIS
Find AD partition based on your choice.
 
.DESCRIPTION
Function that queries Active Directory objects and finds out exact name of the partition, based on user input.
 
.PARAMETER PartitionName
Name of the partition that you want to search for.
 
.EXAMPLE
PS C:\> Find-ADPartition -PartitionName Configuration
CN=Configuration,DC=domain,DC=local
 
.INPUTS
System.String
 
.OUTPUTS
System.String
#>

Function Find-ADPartition {
    [CmdletBinding()]
    [OutputType([string])]
    param (
        # Name of the partition that you want to find.
        [Parameter(Mandatory=$true,
        ValueFromPipeline=$true,
        Position=0)]
        [ValidateSet('Root','Configuration','Schema','ForestDNS','DomainDNS')]
        [string]$PartitionName
    )
    Process {
        $Partitionlist = (Get-ADDomainController -Filter * | Select-Object -First 1).partitions
        if ($PartitionName -eq 'Root') {
            $Partitionlist | Where-Object {$_ -eq "DC=$($env:USERDNSDOMAIN.split('.')[0]),DC=$($env:USERDNSDOMAIN.split('.')[1])"}
        }
        elseif ($PartitionName -eq 'Configuration') {
            $Partitionlist | Where-Object {$_ -like "CN=Configuration,DC=$($env:USERDNSDOMAIN.split('.')[0]),DC=$($env:USERDNSDOMAIN.split('.')[1])"}
        }
        elseif ($PartitionName -eq 'Schema') {
            $Partitionlist | Where-Object {$_ -like "CN=Schema,CN=Configuration,DC=$($env:USERDNSDOMAIN.split('.')[0]),DC=$($env:USERDNSDOMAIN.split('.')[1])"}
        }
        elseif ($PartitionName -eq 'ForestDNS') {
            $Partitionlist | Where-Object {$_ -like "DC=ForestDNSZones,DC=$($env:USERDNSDOMAIN.split('.')[0]),DC=$($env:USERDNSDOMAIN.split('.')[1])"}
        }
        elseif ($PartitionName -eq 'DomainDNS') {
            $Partitionlist | Where-Object {$_ -like "DC=DomainDNSZones,DC=$($env:USERDNSDOMAIN.split('.')[0]),DC=$($env:USERDNSDOMAIN.split('.')[1])"}
        }
    }
}