Public/Test-SecureLdap.ps1
<#
.SYNOPSIS Testing LDAP over SSL. .DESCRIPTION Queries Domain Controller and checks if the SSL for LDAP is configured properly. .PARAMETER All Parameter to execute the test LDAP query against all Domain Controllers in the domain. .PARAMETER DomainController Parameter to execute the test LDAP query against specific Domain Controller. .EXAMPLE PS C:\> Test-SecureLdap -All DomainController SecureLDAP ---------------- ---------- SDC-ADC01 True RDC-ADC01 True WARNING: [EDC-ADC01] : Unable to connect to computer. Skipping. .EXAMPLE PS C:\> Test-SecureLdap -DomainController sdc-adc01 DomainController SecureLDAP ---------------- ---------- sdc-adc01 True .INPUTS System.String .OUTPUTS PSCustomObject #> Function Test-SecureLdap { [CmdletBinding(DefaultParameterSetName='All')] param ( # Parameter to check LDAPS against all Domain Controllers. [Parameter(ParameterSetName='All')] [switch]$All, # Name of the Domain Controller. [Parameter(ParameterSetName='DomainController')] [ValidateNotNullOrEmpty()] [string]$DomainController ) process { if ($psCmdlet.ParameterSetName -eq 'All') { $Output = [System.Collections.ArrayList]::new() $DomainControllers = (Get-ADDomainController -Filter *).Name foreach ($DC in $DomainControllers) { Test-QuickConnect -Name $DC $TempObject = [PSCustomObject]@{ DomainController = $DC SecureLDAP = Test-Ldaps -DC $DC } [void]$Output.Add($TempObject) } $Output } elseif ($psCmdlet.ParameterSetName -eq 'DomainController') { $Output = [PSCustomObject]@{ DomainController = $DomainController SecureLDAP = Test-Ldaps -DC $DomainController } $Output } } } |