LDAP-Erweiterungen für die PowerShell: Codebeispiel für PowerShell Language (PSL)
Angebote
Angebote
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Support
Entwicklung
Vermittlung
.NET/Visual Studio
Webprogrammierung
Windows Scripting
Konditionen
Anfrage/Kontakt
Über uns
Über uns
Referenzkunden
Holger Schwichtenberg
Team
Partner
Site Map
Tag Cloud
Impressum
Rechtliches
AGB
Schulungen
Schulungen
Überblick
Themen
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Scripting
Termine .NET
Termine PowerShell
Konferenzvortraege
Referenzkunden
Trainerprofile
Konditionen
Anfrage
Publikationen
Publikationen
Redaktionsbuero
Buecher
Fachartikel
LBW Windows 2000
LBW Windows 2003
Leser-Portal
Autoren gesucht!
Rezensionen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog Deutsch
Lexikon
Downloads
Support
Kontakt
Literaturtipps
.NET
.NET
Startseite
Einfuehrung
Lexikon
Artikel
Buecher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Mehr zu ASP.NET 1.x
Mehr zu ASP.NET 2.0
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
PowerShell
PowerShell
Ueberblick
Codebeispiele
Commandlet Extensions
Windows Server
Windows Server
Startseite
Lexikon
Forum
Komponenten
Komponenten
Startseite
Grundlagen
Lexikon
Marktuebersicht
.NET
COM/DCOM/COM+
Referenz COM
Referenz .NET
.NET-Forum

LDAP-Erweiterungen für die PowerShell
Codebeispiel für PowerShell Language (PSL)

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!"

Programmcodebeispiele

Dieses Codebeispiel in anderen Sprachen (noch) nicht verfügbar.

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.

Querverweise

Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.DirectoryServices'
Übersicht über den FCL-Namensraum 'System.DirectoryServices'
Portal dotnetframework.de