Sie sind hier: Startseite
 Liste aller Codebeispiele

LDAP-Erweiterungen für die PowerShell

Autor: Dr. Holger Schwichtenberg

Beschreibung

Das folgende PowerShell-Skript zeigt die Realisierung von vier funktionsbasierten Commandlets zur Steuerung des Active Directory oder anderer LDAP-basierter Verzeichnisdienste aus der PowerShell heraus:
1. Get-LDAPObject: Zugriff auf ein einzelnes Verzeichnisobjekt
2. Get-LDAPChildren: Zugriff auf den Inhalt eines Containerobjekts
3. Add-LDAPObject: Anlegen eines Verzeichnisobjekts
4. Remove-LDAPObject: Löschen eines Verzeichnisobjekts.

Das Commandlet Get-LDAPObject akzeptiert als Eingabe eine Array mit LDAP-Pfaden als Zeichenketten als Parameter oder in der Pipeline. Get-LDAPChildren und Remove-LDAPObject akzeptiert als Eingabe
  • Ein Array mit LDAP-Pfaden als Zeichenketten als Parameter oder in der Pipeline und/oder
  • Eine Menge von DirectoryEntry-Objekten in der Pipeline.

Bei Add-LDAPObject können als Eingabe nur drei Zeichenkettenparameter verwendet werden.

ACHTUNG: Dies ist die Fassung für PowerShell RC2 !!!

Programmcodebeispiele PowerShell Language (PSL)


---------------------------------------------------------------------

Author: Dr. Holger Schwichtenberg

Desc: PowerShell Commandlets for handling LDAP-Objects

Usage: This file contains a function-based Commandlet. In order to use

it, you must dot source the file into your shell e.g.:

PH> . c:\PSExtensions\LDAP_Commandlets.ps1

Date: 10/05/2006

Version: 2.0

Host: PowerShell Version 1.0 RC2

---------------------------------------------------------------------

Get single LDAP object

function Get-LDAPObject {
param([string[]]$LDAPPath)

begin {
}

process {
if ($_)
{
if ($_ -is [string])
{
new-object system.directoryservices.directoryEntry($_)
}
else
{ throw "Pipeline input must be [string]."
}
}
}

end {
if ($LDAPPath) {
foreach ($Path in $LDAPPath) {
new-object system.directoryservices.directoryEntry($Path)
}
}
}
}

Get content of an LDAP container

function Get-LDAPChildren {
param([string[]]$LDAPPath)

begin {

function getContainer([string] $path)
{
$con = new-object system.directoryservices.directoryEntry($path)
$con.PSBase.Children
}
}

process {
if ($_)
{
if ($_ -is [string])
{
getContainer($_)
}
elseif ($_ -is [System.DirectoryServices.DirectoryEntry])
{
getContainer($_.PSBase.Path)
}
else
{ throw "Pipeline input must be [string] or [System.DirectoryServices.DirectoryEntry]."
}
}
}

end {
if ($LDAPPath) {
foreach ($Path in $LDAPPath) {
getContainer($Path)
}
}
}
}

Remove an object from an LDAP container

function Remove-LDAPObject {
param([string[]]$LDAPPath)

begin {

function remove([string] $path)
{

if ([system.directoryservices.directoryEntry]::Exists($path))
{
$obj = new-object system.directoryservices.directoryEntry($path)
$obj.PSBase.DeleteTree()
$obj
}
else
{
throw "Object does not exists!"
}
}
}

process {
if ($_)
{
if ($_ -is [string])
{
remove($_)
}
elseif ($_ -is [System.DirectoryServices.DirectoryEntry])
{
remove($_.PSBase.Path)
}
else
{ throw "Pipeline input must be [string] or [System.DirectoryServices.DirectoryEntry]."
}
}
}

end {
if ($LDAPPath) {
foreach ($Path in $LDAPPath) {
remove($Path)
}
}
}
}

Add an new object to an LDAP container

function Add-LDAPObject {
param([string]$Container, [string]$Class, [string]$RDN)

begin { }

process { }


end {
if ($Container -and $Class -and $RDN) {


if ([system.directoryservices.directoryEntry]::Exists($Container))
{
#Write-Warning "Adding Object $RDN of type $Class to $Container"
$obj = new-object system.directoryservices.directoryEntry($Container)
$newobj = $obj.PSBase.Children.Add([string]$RDN,[string]$Class)
$newobj.PSBase.CommitChanges()
}
else
{
throw "Container does not exists!"
}
}
}
}

Define alias for function

Set-Alias LDP Get-LDAPObject
Set-Alias LDC Get-LDAPObject
Set-Alias RLDP RemoveLDAPObject
Set-Alias ALDP Add-LDAPObject

Confirm installation

"Function-based commandlets for LDAP successfully installed!"
 

Querverweise

 Definition '.NET Framework Class Library'  PowerShell Community Portal

Buchtipp

Buchcover Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch (3. Auflage 2018/8. Auflage Gesamtreihe) Kindle Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch (3. Auflage 2018/8. Auflage Gesamtreihe) Kindle
Autoren: Dr. Holger Schwichtenberg
erschienen 2018, 1000 Seiten, 42,99 €
ISBN: 978-3-446-45923-6
Bestellung: Amazon.de oder im Buchhandel über ISBN 978-3-446-45923-6

Beratung & Support:

Schulungen zu diesem Thema:

 Anfrage für eine individuelle Schulung zum Thema PowerShell  Gesamter Schulungsthemenkatalog