Public/Get-ADSensitiveGroupMembership.ps1

<#
#>

Function Get-ADSensitiveGroupMembership {
    [CmdletBinding(DefaultParameterSetName="All")]
    param (
        # Parameter to get membership of all sensitive AD groups.
        [Parameter(Mandatory=$false,
        ParameterSetName="All")]
        [switch]
        $All,
        # Parameter help description
        [Parameter(Mandatory=$false,
        ParameterSetName="GroupName")]
        [ValidateSet("Administrators","Domain Admins","Enterprise Admins","Schema Admins")]
        [string]
        $GroupName
    )
    process {
        $GroupList = @("Administrators","Domain Admins","Enterprise Admins","Schema Admins")
        Function Get-Membership {
            [CmdletBinding()]
            param (
                [Parameter(Mandatory=$true,
                Position=1)]
                [ValidateNotNullOrEmpty()]
                [string]
                $Group
            )
            process {
                $GroupMembers = New-Object System.Collections.ArrayList
                $CheckExistence = (Get-ADGroup -Filter * | Where-Object {$_.Name -eq "$Group"})
                Find-EmptyString -VariableName $CheckExistence -ErrorOut "Cannot find an group object with the name $Group in $env:USERDNSDOMAIN" -Action Continue
                if ($false -eq [string]::IsNullOrEmpty($CheckExistence)) {
                    $Members = (Get-ADGroupMember -Identity "$Group").SamAccountName
                     if ($false -eq [string]::IsNullOrEmpty($Members)) {
                         $TempObject = [PSCustomObject]@{
                             GroupName = "$Group"
                             Members = $Members -join ","
                         }
                         $GroupMembers += $TempObject
                     }
                }
                $GroupMembers
            }
        }
        if ($PSCmdlet.ParameterSetName -eq "All") {
            $Groupedobjects = New-Object System.Collections.ArrayList
            foreach ($Group in $GroupList) {
                $Getit = Get-Membership -Group $Group
                $Groupedobjects += $Getit
            }
            $Groupedobjects
        }
        elseif ($PSCmdlet.ParameterSetName -eq "GroupName") {
            foreach ($Group in $GroupList) {
                if ($GroupName -eq $Group) {
                    Get-Membership -Group $GroupName
                }
            }
        }
    }
}