Kategorien
Scripte

AD Import einfach gemacht mit LDIF

CSS Programming Image

AD Import: LDIF steht für LDAP Data Interchange Format und ist das Format der Wahl wenn ihr in einer Active Directory Struktur Massenänderungen durchführen wollt.

Ein LDAP-Objekt wird durch mehrere LDIF-Zeilen beschrieben. Am Anfang steht immer der distinguished name dn, der die absolute Position im LDAP-Baum angibt. Es folgen Objektklassen, die definieren, welche Attribute zulässig oder vorgeschrieben sind. 

Beispiel einer Definition für einen AD Import:

dn: dc=struktur, dc=de
objectclass: organization
objectclass: top
o: struktur

Es existieren zwei grundlegende LDIF Formate die für den AD Import genutzt werden können, LDIF Change und LDIF Change. Letzterer enthält die Änderungen an einem Objekt.

Ziel:

Das Script wandelt eine Excel Tabelle in das LDIF Format um, zum weiteren Import in eine Active Directory Struktur.

Private Sub Excel2LDIF_Click()

'LDIF Ausgabe aus Excelliste
Dim oAs, oUser As Object
Dim xlApp As Object
Dim zaehler
Dim ADSI As Object
Dim OUTeil(256) As String

'On Error Resume Next

Set xlApp = CreateObject(pfad_tabelle.Caption)
xlApp.Application.Visible = False
xlApp.Windows(1).Visible = False

On Error Resume Next

With CommonDialog1
  .CancelError = True
  .Flags = cdlOFNOverwritePrompt
  .Filter = "Textdateien (*.LDIF)|*.LDIF"
  .ShowSave
  If .FileName <> "" Then
    F = FreeFile
    Open .FileName For Output As #F
  End If
End With

' Ermittlung der Anzahl Datensaetze und Prüfung
Fehleranzahl = 0 ' Fehleranzahl

Kontrollfeld.Text = Kontrollfeld.Text & "Prüfung !!!" & vbCrLf
AnzahlDatensaetze = 2
While (xlApp.Worksheets(1).Range("A" & AnzahlDatensaetze).Value) <> ""
  If Trim(xlApp.Worksheets(1).Range("C" & AnzahlDatensaetze).Value) = "" Then
    Fehleranzahl = Fehleranzahl + 1
  End If
  If Trim(xlApp.Worksheets(1).Range("D" & AnzahlDatensaetze).Value) = "" Then
    Fehleranzahl = Fehleranzahl + 1
  End If
  If Trim(xlApp.Worksheets(1).Range("E" & AnzahlDatensaetze).Value) = "" Then
    Fehleranzahl = Fehleranzahl + 1
  End If
  If Trim(xlApp.Worksheets(1).Range("G" & AnzahlDatensaetze).Value) = "" Then
    Fehleranzahl = Fehleranzahl + 1
  End If
  AnzahlDatensaetze = AnzahlDatensaetze + 1
Wend

If Fehleranzahl > 0 Then
  Antwort = MsgBox("Anzahl fehlerhafter Datensätze: " & Fehleranzahl, vbYesNo + vbExclamation, "Wollen Sie eine LDIF - Ausgabe erstellen?")
  If Antwort = vbOK Then
  Else
    Print #F, Kontrollfeld.Text
    Close #F
    Unload Form1
    Exit Sub
    xlApp.Application.Quit
  End If
End If

Jetzt zur Bearbeitung

' Start Bearbeitung
zaehler = 2
While (xlApp.Worksheets(1).Range("A" & zaehler).Value) <> ""

'Refresh der Anzeige
Form1.Refresh
Kontrollfeld.Refresh
'Schreibe LDIF

'Variablen belegen
'---------------------------------------------------------------------------
    'Variable Werte aus Tabelle --------------------------------------------

    Datum = Format$(Now, "yy.mm.dd")
    Tag = Right(Datum, 2)
    Monat = Mid(Datum, 4, 2)
    Jahr = Left(Datum, 2)
    Zeit = Format$(Now, "hh:nn:ss")
    Min = Mid(Zeit, 4, 2)
    St = Left(Zeit, 2)

    If zaehler > 9 Then
      employeeNumber = "E" & Jahr & Monat & Tag & St & zaehler & "1"
    Else
      employeeNumber = "E" & Jahr & Monat & Tag & St & Min & zaehler
    End If

    sn = Trim(xlApp.Worksheets(1).Range("C" & zaehler).Value) 'Nachname
    givenName = Trim(xlApp.Worksheets(1).Range("D" & zaehler).Value) 'Vorname

    ' - berechneter Wert aus Tabelle ---------------------------------------
    Print #F, "dn: cn=" & sn & " " & givenName & " " & employeeNumber & "," & "cn=Users,cn=XXXXXX"
    Print #F, "cn: " & sn & " " & givenName & " " & employeeNumber 
    Print #F, "employeeNumber: " & employeeNumber
    Print #F, "sn: " & Trim(xlApp.Worksheets(1).Range("C" & zaehler).Value) 
    Print #F, "givenName: " & Trim(xlApp.Worksheets(1).Range("D" & zaehler).Value)

    ' Prüfung auf Firma vorhanden wenn ja dann Excelliste wenn nein ="extern"

    If UCase(Trim(xlApp.Worksheets(1).Range("H" & zaehler).Value)) = "" Then
      Print #F, "Company: EXTERN 'Firma =xxx"
    Else
      Print #F, "Company: " & UCase(Trim(xlApp.Worksheets(1).Range("H" & zaehler).Value)) 
    End If
    Print #F, "Salutation: " & Trim(xlApp.Worksheets(1).Range("B" & zaehler).Value)

    OU = UCase(Trim(xlApp.Worksheets(1).Range("E" & zaehler).Value))
    K = 1
    OUTeil(K) = UCase(Trim(xlApp.Worksheets(1).Range("E" & zaehler).Value)) '(1)
    K = K + 1
    While (InStrRev(OU, "-")) <> 0
      Position = (InStrRev(OU, "-"))
      OUTeil(K) = Left(OU, Position - 1)
      OU = Left(OU, Position - 1)
      K = K + 1
    Wend
    OU = "OU: ou="
    For J = 1 To K - 1
    If J = K - 1 Then
      OU = OU & OUTeil(J)
    Else
      OU = OU & OUTeil(J) & ",ou="
    End If
    Next J
    OU = OU & ",o=xxx,cn=xxx"
    Print #F, OU

 

Und noch die Kostenstelle verarbeiten

 'Kostenstelle
    Print #F, "Kostenstelle: " & UCase(Trim(xlApp.Worksheets(1).Range("G" & zaehler).Value)) 'Kostenstelle

    ' ADS User Typ auswerten -> Base OU bestimmen START
    ADOU = UCase(Trim(xlApp.Worksheets(1).Range("K" & zaehler).Value)) 
    Select Case ADOU
    Case "1"
      ADOU = "OU=Users,"
    Case "2"
      ADOU = "OU=Users,"
    Case "3"
      ADOU = "OU=Users,"
    Case Else
      ADOU = "OU=Users,"
    End Select
    Print #F, "ADOU: " & ADOU

    Print #F, "AD: " & Trim(xlApp.Worksheets(1).Range("I" & zaehler).Value) 'AD Status

    Print #F, vbCrLf

  zaehler = zaehler + 1
Wend
Close #F
xlApp.Application.Quit
End Sub

Diesen Code verwendet ihr auf eigene Gefahr. Voraussetzung sind entsprechende Berechtigungen auf die AD Struktur. Ich übernehme keine Gewährleistung.

Michael Leidig

Kategorien
MCSA Zertifizierung

Update auf Windows Server 2003

Binäre Darstellung

Aktualisieren der Systemadministrator Kenntnisse von MS W2K auf W2K3 (2011A)

Da man immer nicht weiß was auf einem Microsoft Kurs so alles abgeht, habe ich mal kurz zusammengefasst was Thema und Inhalt war. Es handelt sich hier um einen Update Kurs, der generell Erfahrung und praktische Tätigkeit verlangt. Zum Teil habe ich das Ganze erweitert um einige Hilfestellungen und Links.

Meinung

Szenario basierte Übungseinheiten. Der Lerneffekt soll bei dem Erarbeiten der Lösungen entstehen, sehr gute Kenntnisse in der Administration von Windows 2000 Server, die Themengebiete werden sehr kurz angesprochen, eine selbständige Auseinandersetzung mit dem Thema ist zwingend nötig.

Der Kurs dauert drei Tage und die Themen werden nur angerissen, da ist es doch besser gleich die ganze Woche zu buchen.

Der Kurs ist für alle geeignet die praktische Erfahrung im Umgang mit Windows 2003 haben. Nicht geeignet als Vorbereitung auf eine anstehende Migration oder Erstinstallation. Nur für Teilnehmer die erst kürzlich noch Kurse für W2K absolviert haben. + insgesamt weniger empfehlenswert!

Kategorien
Scripte

PS leere AD Gruppen ermitteln

Powershell Logo
Powershell Logo

Leere Active Directory-Objekte (Gruppen) sollten gefunden und gelöscht werden. Der Grund ist, weil sie unnötigen Speicherplatz beanspruchen, die Sicherheit gefährden und die Verwaltung erschweren können. Ein aufgeräumtes Active Directory funktioniert schneller und sicherer.

Get-ADGroup -Filter * -Properties Members | where { -not $_.Members} | select Name

Das Cmdlet Get-ADGroup ruft eine Gruppe ab oder führt eine Suche durch, um ein oder mehrere Gruppen aus einem Active Directory abzurufen.

Der Parameter Identity gibt die abzurufende Active Directory-Gruppe an. Sie können eine Gruppe anhand des Distinguished Name (DN), ihrer GUID, ihrer Sicherheitskennung (SID) oder ihres Kontonamens (Security Accounts Manager, SAM) identifizieren.

Um mehr als eine Gruppe zu suchen und anzuzeigen, gibt es die LDAP-Filter-Parameter. Der Parameter Filter verwendet die PowerShell Expression Language, um Abfragezeichenfolgen für Active Directory zu schreiben.

Hier in dem Beispiel erfolgt ein Ausschluss für Gruppen die keine Mitglieder enthalten. Der Anwendungszweck wäre z.B. die Vorbereitung einer Bereinigung an AD Objekten.

Kategorien
MCSA

Server Profi Training für MCSE/A

AD Icon Graustufen

Zielgruppe

Dieser Kurs richtet sich an IT-Professionals die bereits Erfahrung mit Windows Server 2000 und Windows Server 2003 haben. Eine MCSA oder MCSE Zertifizierung oder vergleichbares Wissen ist sinnvoll. Ich beurteile diesen Kurs zum Microsoft Windows-Server als sehr hilfreich. Das hängt natürlich vom Trainer und der Gruppe sehr stark ab.

Hiermit verbessern Sie Ihr Verständnis durch leicht verständliche Anweisungen, und bleiben Sie auf dem neuesten Stand der Technik zum Thema Windows Server.

Die Microsoft Kurse zum Server Thema umfassen verschiedene Lösungsbereiche und Level für jeweils unterschiedliche Rollen in der administrativen Tätigkeit.

Lernziele

Dieser Kurs beinhaltet die Kurse MOC-6415 und MOC-6416. Er vermittelt die Kenntnisse zur Netzwerk-Infrastruktur-Technik sowie zur Active Directory Technik bei der neuen Version 2008. Er wendet sich an Teilnehmer, die bereits Erfahrung mit Netzwerk-Infrastruktur-Technik, wie auch Active Directory haben und ein Upgradefür Version benötigen.

Voraussetzungen

Dieser Kurs setzt Erfahrungen mit Netzwerktechnologien voraus, wie beispielsweise TCP/IP, DNS, sowie Erfahrungen mit der Planung und Design von Active Directory, Netzwerkinfrastruktur und Sicherheit unter einem Windows System 2003.

Inhalt

  • Konfiguration
  • Management Settings
  • Server Core
  • Backup and Restore System Data
  • Network Access Protection (NAP)
  • Arbeit mit Windows Deployment Services
  • Windows Server Virtualization
  • Hochverfügbarkeit
  • Performance Monitoring and Optimierung
  • Einführung in die Active Directory Technology bei Version 2008
  • Planung der Windows Server 2008 Active Directory Services
  • Server Core Domain Controllers
  • advanced Active Directory Domain Services
  • new Active Directory Federation Services
  • Active Directory Lightweight Directory Services
  • the Active Directory Rights Management Services
  • Auditing Active Directory Domain Services Changes
  • Enterprise PKI (PKIView) Active Directory Certificate Services (ADCS)

Dauer

3 Tage, wovon etwa 2 Tage neue Themen waren und der letzte Tag für spezielle Fragen zur Verfügung stand.

Insgesamt ein sehr sinnvoller Kurs, wobei ich diese Update Kurse an sich sehr gut finde. Hier hatte jeder Teilnehmer die Möglichkeit genauer (für sein jeweiliges Themengebiet) nachzufragen und offene Punkte zu besprechen.

3 Tage, wovon etwa 2 Tage neue Themen waren und der letzte Tag für spezielle Fragen zur Verfügung stand.

Insgesamt ein sehr sinnvoller Kurs, wobei ich diese Update Kurse an sich sehr gut finde. Hier hatte jeder Teilnehmer die Möglichkeit genauer (für sein jeweiliges Themengebiet) nachzufragen und offene Punkte zu besprechen.

Kategorien
Scripte

Benutzerkonto in AD Gruppe aufnehmen

AD Icon Graustufen

Hier beschreibe ich ein Script um einen Active Directory User (Benutzerkonto) in eine AD Gruppe aufzunehmen.

Es geht hier vor allem nicht um den einzelnen Vorgang zu einem Benutzerkonto, der mit Sicherheit auch immer wieder benötigt wird. Es geht um eine Vorstufe der Automatisierung.
Ihr könnt den Code natürlich abändern oder auch gänzlich neu schreiben. Wichtig ist ihr habt einen Plan und macht nicht immer alles manuell. Da verliert man echt den Spass.

User=InputBox(“Usernamen eingeben”,”Userinput”)
Gruppe=InputBox(“Gruppennamen eingeben”,”Userinput”)

User=InputBox("Usernamen eingeben","Userinput")
Gruppe=InputBox("Gruppennamen eingeben","Userinput")
' Gruppe auswählen
Set ou = GetObject("LDAP://ou=Groups,dc=abc,dc=xy")
Set gruppe_G = ou.GetObject("group", "cn=" + Gruppe)
' User Auswählen
Set ou = GetObject("LDAP://ou=SWM-Users,dc=intra,dc=swm,dc=de")
Set User_G = ou.GetObject("user", "cn=" + User)

gruppe_G.Add User_G.ADsPath

Es geht hier um die Vorbereitung einer Möglichkeit die Funktion Administratoren über ein Servicekonto möglich zu machen. Die Verarbeitung in Bezug auf ein AD Benutzerkonto ist eines der Hauptaufgaben der Administration.

Kategorien
Scripte

Passwort eines AD Benutzers setzen

AD Icon Graustufen

Zusammenfassung

Der Ansatz (mit dem Passwort) erweist sich als äußerst wertvoll, wenn es darum geht, die initiale Verteilung von neuen Benutzerkonten zu optimieren. Insbesondere im Kontext der Einführung einer neuen Domäne. In solchen Szenarien wird das Passwort für die gewünschten Benutzer im Active Directory festgelegt. Dies gewährleistet nicht nur die Sicherheit und den Zugriff auf die benötigten Ressourcen, sondern sorgt auch für einen reibungslosen Onboarding-Prozess.

Was diesen Prozess besonders mächtig macht, ist die Möglichkeit, ihn in eine Schleife einzubetten. Durch die Implementierung einer Schleife wird die Einrichtung neuer Benutzerkonten zu einer äußerst effizienten Methode zur Massenänderung. Auf diese Weise können Sie eine Vielzahl von Benutzerkonten gleichzeitig verwalten. Sie können sicherstellen, dass sie alle korrekt eingerichtet und mit den erforderlichen Zugriffsrechten ausgestattet sind. Dies spart nicht nur Zeit, sondern gewährleistet auch eine konsistente und zuverlässige Verwaltung der Benutzerkonten. Das verbessert wiederum die Gesamteffizienz und Sicherheit Ihrer IT-Infrastruktur.

Set objUser = GetObject ("LDAP://abc.xy/CN=Accounname,OU=Users,DC=abc,DC=xy")
Kategorien
MCSA Zertifizierung

Implementing & Managing MS Exchange

Mail Icon

Ziel

An dieser Stelle eine Kurzfassung des entsprechenden Microsoftkurses Implementing & Managing MS Exchange, damit Ihr besser entscheiden könnt ob das Seminar auch sinnvoll ist.

Meinung

Gute Kenntnisse in der Administration von Windows 2003 Server und Active Directory werden vorausgesetzt. Es geht in diesem Kurs ausschließlich um Exchange und Outlook. Die Themengebiete werden angesprochen, eine selbständige Auseinandersetzung mit dem Thema ist zwingend nötig. (Testsystem usw.)

Der Kurs dauert 5 Tage und die Themen werden ausführlich besprochen. Für mich waren die Vorkenntnisse gut, sofort den richtigen Einstieg zu erlangen. Jeder der an dem Kurs teilnimmt, sollte meiner Meinung nach schon mal einen Exchange Server installiert haben, oder sich die Verwaltung schon einmal angesehen haben.

Bedingt geeignet als Vorbereitung auf eine anstehende Migration oder Erstinstallation. + insgesamt empfehlenswert!

Kategorien
MCSA Zertifizierung

Troubleshooting MS Exchange Server 2003

Mail Icon

Troubleshooting Microsoft Exchange Server 2003 (2011A)

Da man immer nicht weiß was auf einem Microsoft Kurs (z.B. Troubleshooting Exchange) so alles abgeht, habe ich mal kurz zusammengefasst was Thema und Inhalt war. Zum Teil habe ich das Ganze erweitert um einige Hilfestellungen und Verlinkungen.

Meinung

Der Kurs ist für alle geeignet die praktische Erfahrung im Umgang mit Exchange 2003 haben. Auffrischen des Wissens und gezielte Informationen zu den Problempunkten wird geboten. Nicht geeignet als Vorbereitung auf eine anstehende Migration. +++ insgesamt empfehlenswert!

Kategorien
Scripte

Powershell und effektive Automatisierung

CSS Programming Image

Einführung

Der wesent­liche Zweck von Power­shell ist die Auto­mat­isierung der System­verwaltung. Von mehreren Computern ist eine Remoteverwaltung gleich­zeitig möglich. Seit der PS in Ver­sion 3.0 ist ein Unter­brechen von Sitzungen und deren Weiterführung von einer anderen Work­station aus möglich.

Enter-PSSession ist ein Befehl in Windows PowerShell, der verwendet wird, um eine Remotesitzung mit einem anderen Computer herzustellen. Mit diesem Befehl können Sie auf einen entfernten Computer zugreifen und Befehle direkt auf diesem Computer ausführen, als wären Sie vor Ort.

In einfachen Worten: Wenn Sie Enter-PSSession verwenden, “betreten” Sie eine andere Computerumgebung, um Befehle darauf auszuführen, als ob Sie direkt davor sitzen würden. Dies ist besonders nützlich für die Verwaltung und Wartung von Remote-Computern in einem Netzwerk.

In der interaktiven Variante startet man in der Powershell durch:

Enter-PSSession 

eine Shell auf dem anderen Rechner und führt dort Kom­mandos aus, so als wäre man an der Konsole der betreffenden Maschine. Für die Automa­tisierung von Aufgaben wird man mehrere parallele Sessions öffnen und über diese Scripts oder Befehle starten.

Kategorien
Scripte

How do I view Active Directory data?

Binäre Darstellung

Active Directory Domain Info ermitteln

Domain Policy Info abfragen, Ausgegeben werden Passwortinformationen und Attribute zur Sicherheit.

Const MIN_IN_DAY = 1440, SEC_IN_MIN = 60
Set objDomain = GetObject("WinNT://domain")
Set objAds = GetObject("LDAP://dc=domain")
Kontrollfeld.Text = ""
intMaxPwdAgeSeconds = objDomain.Get("MaxPasswordAge")
intMinPwdAgeSeconds = objDomain.Get("MinPasswordAge")
intLockOutObservationWindowSeconds = objDomain.Get("LockoutObservationInterval")
intLockOutDurationSeconds = objDomain.Get("AutoUnlockInterval")
intMinPwdLength = objAds.Get("minPwdLength")
intPwdHistoryLength = objAds.Get("pwdHistoryLength")
intPwdProperties = objAds.Get("pwdProperties")
intLockoutThreshold = objAds.Get("lockoutThreshold")
intMaxPwdAgeDays =
 ((intMaxPwdAgeSeconds / SEC_IN_MIN) / MIN_IN_DAY) & " days"
intMinPwdAgeDays =
 ((intMinPwdAgeSeconds / SEC_IN_MIN) / MIN_IN_DAY) & " days"
intLockOutObservationWindowMinutes =
 (intLockOutObservationWindowSeconds / SEC_IN_MIN) & " minutes"
If intLockOutDurationSeconds <> -1 Then
  intLockoutDurationMinutes =
 (intLockOutDurationSeconds / SEC_IN_MIN) & " minutes"
Else
  intLockoutDurationMinutes =
 "Administrator muss manuell gelockte Accounts entsperren"
End If
Kontrollfeld.Text = Kontrollfeld.Text &
"maxPwdAge = " & intMaxPwdAgeDays & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "minPwdAge = " & intMinPwdAgeDays & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "minPwdLength = " & intMinPwdLength & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "pwdHistoryLength = " & intPwdHistoryLength & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "pwdProperties = " & intPwdProperties & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "lockOutThreshold = " & intLockoutThreshold & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "lockOutObservationWindow = " &
intLockOutObservationWindowMinutes & vbCrLf
Kontrollfeld.Text = Kontrollfeld.Text &
 "lockOutDuration = " & intLockoutDurationMinutes & vbCrLf
End Sub