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
Leider ist es zu einem temporären technischen Fehler gekommen
Sie sind hier: Startseite
Diese Seite kann leider derzeit nicht korrekt dargestellt werden: /lserver/CodeSampleDetails.aspx?c=4482

Wir bedauern dieses Problem. Das Problem wurde in unserem Protokoll festgehalten und wird so schnell wie möglich behoben. Vielen Dank für Ihr Verständnis.

Klicken Sie hier, um den Aufruf der Seite /lserver/CodeSampleDetails.aspx?c=4482 erneut versuchen.

Sie können uns gerne kontaktieren, um Schwierigkeiten mit dieser Website zu berichten.

Wenn Sie eine Frage oder einen Wunsch haben, rufen Sie uns gerne an unter +49 (0) 201 649590-0 (M-Fr, 9 bis 17 Uhr) oder schreiben Sie uns unter .

Fehler-ID: 16dbecec-89bd-451f-bf4e-df90a826d9ab
URL: /lserver/CodeSampleDetails.aspx?c=4482

Bitte geben Sie uns trotz des temporären Website-Problems eine Chance und melden Sie sich per E-Mail oder Telefon!

Wir informieren Sie gerne über unsere Schulungs- und Beratungsangebote unter +49 (0)201 64959-0 oder E-Mail . Sie erreichen uns Montags bis Freitags von 9 bis 17 Uhr.
Gerne nehmen wir Ihre Anfragen und Wünsche auf diesem Wege entgegen, solange unsere Website ein technisches Problem hat.

Was wir anbieten?

Bitte schauen Sie in unseren Firmenflyer (PDF, 2 Seiten) oder unser ausführliche Vorstellungsbroschüre (PDF, 16 Seiten)