Code-Beispiel

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

 Liste aller Codebeispiele  Definition '.NET Framework Class Library'  PowerShell Community Portal

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (5. Auflage Oktober 2022 (9. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autoren: Dr. Holger Schwichtenberg
erschienen 10/2022, 1426 Seiten
ISBN: 3446472967

Beratung & Support

Schulungen zu diesem Thema

 Microsoft SharePoint-Administration mit der Windows PowerShell
 Microsoft Exchange Server-Administration mit der Windows PowerShell / Microsoft Exchange Management Shell
 HyperV und/oder VMWare verwalten mit der Windows PowerShell
 Testing mit Windows PowerShell
 Netzwerkverwaltung mit der Windows PowerShell
 Verwaltung von Benutzern und Gruppen des „Active Directory“ mit der PowerShell
 Windows Server-Administration mit der Windows PowerShell, insbesondere Active Directory-Administration
 PowerShell-Scripting: Skripte schreiben mit der Windows PowerShell
 Citrix verwalten mit der PowerShell
 Windows PowerShell 5.1/PowerShell 7.0 für Softwareentwickler
 System Center verwalten mit der Windows PowerShell
 .NET und COM nutzen in der Windows PowerShell
 Windows PowerShell 5.0/5.1 für Umsteiger von Version 4.0
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren
 Microsoft SQL Server-Administration mit der Windows PowerShell
 Grundlagen der PowerShell-Konsole
 Arbeiten mit PowerShell-Laufwerken
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren (4-Tages-Agenda des öffentlichen Seminars)
 Microsoft Azure-Cloud-Dienste verwalten mit der Windows PowerShell
 Remoting, Jobs und Workflows mit der Windows PowerShell
 NetApp verwalten mit der PowerShell
 Windows PowerShell 4.0 für Umsteiger von Version 3.0
 Formatierung und Reporting mit der PowerShell
 Active Directory-Administration mit der Windows PowerShell
 Scripting-Grundlagenwissen
 Microsoft SQL Server 2008 - Die Neuerungen gegenüber SQL Server 2005 (Update-Schulung)
 Active Directory für Administratoren
 .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für .NET Framework 4.x und/oder .NET 6.0)
 Microsoft Teams
 Microsoft SharePoint im Überblick
 Anfrage für eine individuelle Schulung zum Thema PowerShell  Gesamter Schulungsthemenkatalog