PoshCode Archive  Artifact [dced7234d5]

Artifact dced7234d5bb44d1e3626790967b4edb439d604d9dfcb53afb54e0533073ab09:

  • File Get-OpenLDAP.ps1 — part of check-in [c1516694a0] at 2018-06-10 14:25:25 on branch trunk — This script performs OpenLdap query against specified Server. (user: BSonPosh size: 1569)

# encoding: ascii
# api: powershell
# title: Get-OpenLDAP.ps1
# description: This script performs OpenLdap query against specified Server.
# version: 0.1
# type: class
# author: BSonPosh
# license: CC0
# x-poshcode-id: 86
# x-derived-from-id: 4943
# x-archived: 2016-10-31T11:29:21
# x-published: 2008-12-31T14:19:00
#
# Note: $Path is the LDAP path for the User account to authenticate with.
#
Param($user,
      $password = $(Read-Host "Enter Password" -asSec),
      $filter = "(objectclass=user)",
      $server = $(throw '$server is required'),
      $path = $(throw '$path is required'),
      [switch]$all,
      [switch]$verbose)
    
function GetSecurePass ($SecurePassword) {
  $Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecurePassword)
  $password = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
  [System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr)
  $password
}    

if($verbose){$verbosepreference = "Continue"}

$DN = "LDAP://$server/$path"
Write-Verbose "DN = $DN"
$auth = [System.DirectoryServices.AuthenticationTypes]::FastBind
Write-Verbose "Auth = FastBind"
$de = New-Object System.DirectoryServices.DirectoryEntry($DN,$user,(GetSecurePass $Password),$auth)
Write-Verbose $de
Write-Verbose "Filter: $filter"
$ds = New-Object system.DirectoryServices.DirectorySearcher($de,$filter) 
Write-Verbose $ds
if($all)
{
    Write-Verbose "Finding All"
    $ds.FindAll()
}
else
{
    Write-Verbose "Finding One"
    $ds.FindOne()
}