Kategorien
Scripte

Directory User List Objektabfrage

Binäre Darstellung

Ziel: Ausgabe von Objekten und den dazugehörigen Informationen

Das beiliegende Script gibt alle Directory Einträge (Objekteigenschaft = USER) aus in C:\temp\ad_user_list.csv (CSV – Format) Eingetragen werden müssen die zu durchsuchenden Domains. Es kann auch ein Start in einer bestimmten Organisationseinheit gewählt werden. Das Programm eignet sich für eine regelmäßige Ausgabe über den Task Scheduler, damit liegt immer eine aktuelle Liste der Einträge vor, die entsprechend abgegriffen und weiter verarbeitet werden kann.

Ausgegeben wird:

  • Anmeldename;
  • Nachname;
  • Vorname;
  • Telefon;
  • ipPhone;
  • Email;
  • Ort;
  • Strasse;
  • ADSPfad;
  • Department;
  • Division;
  • Company.

Die Laufzeit ist abhängig von der Domaingröße und den darin enthaltenen Objekten.

Private Sub Form_Load()
'Dimensionierung
Dim objAs, objUser, oDomain
Dim ListeOU(60000)
Dim strLDAPQuery
Dim objCON
Dim i, Bereich(3), DC(10)

AnzahlOU = 1
Open "C:\temp\ad_user_list.csv" For Output As #1
On Error Resume Next
Bereich(0) = ""
Bereich(1) = ""
Bereich(2) = ""

Print #1,
"Anmeldename;
Nachname;
Vorname;
Telefon;
ipPhone;
Email;
Ort;
Strasse;
ADSPfad;
Department;
Division;
Company;
Beschreibung;"

For i = 0 To 2
Set objCON = CreateObject("ADODB.Connection")
CONSTRING = "Provider=ADSDSOObject"
objCON.Open CONSTRING
strLDAPQuery = Bereich(i) &_
";(objectclass=organizationalUnit);samaccountname,adspath;subtree"
Set rs = objCON.Execute(strLDAPQuery)

While Not rs.EOF
     ListeOU(AnzahlOU) = rs("adspath")
     If InStr(1, ListeOU(AnzahlOU), "User") Then
      If InStr(1, ListeOU(AnzahlOU), Mid(Bereich(i), 9, 3)) Then
       Set oDomain = GetObject(ListeOU(AnzahlOU))
       oDomain.Filter = Array("user")
       For Each oUser In oDomain
         ADSPfad = oUser.ADsPath
         oUser.GetInfo
         If oUser.LastName = "" Then
           nachname = " "
         Else
           nachname = oUser.LastName
         End If
         If oUser.FirstName = "" Then
           Vorname = " "
         Else
           Vorname = oUser.FirstName
         End If
         If oUser.Get("mail") = "" Then
           mail = " "
         Else
           mail = oUser.Get("mail")
         End If
         If oUser.department = "" Then
           department = "?"
         Else
           department = oUser.department
         End If
         If oUser.Get("l") = "" Then
           l = " "
         Else
           l = oUser.Get("l")
         End If
         If oUser.Get("streetAddress") = "" Then
           street = " "
         Else
           street = oUser.Get("streetAddress")
         End If
         If oUser.Get("TelephoneNumber") = "" Then
           Telefon = " "
         Else
           Telefon = oUser.Get("TelephoneNumber")
         End If
         If oUser.Get("ipPhone") = "" Then
           ipPhone = " "
         Else
           ipPhone = oUser.Get("ipPhone")
         End If
         If oUser.Get("division") = "" Then
           division = " "
         Else
           division = oUser.Get("division")
         End If
         If oUser.Get("company") = "" Then
           company = " "
         Else
           company = oUser.Get("company")
         End If
         If oUser.Get("description") = "" Then
           beschreibung = " "
         Else
           beschreibung = oUser.Get("description")
         End If
       
         Print #1,Chr(34) & 
         oUser.Get("SAMAccountname") & Chr(34) & ";" & Chr(34) & 
         nachname & Chr(34) & ";" & Chr(34) & 
         Vorname & Chr(34) & ";" & Chr(34) & 
         Telefon & Chr(34) & ";" & Chr(34) & 
         ipPhone & Chr(34) & ";" & Chr(34) & 
         mail & Chr(34) & ";" & Chr(34) & 
         l & Chr(34) & ";" & Chr(34) & 
         street & Chr(34) & ";" & Chr(34) & 
         ADSPfad & Chr(34) & ";" & Chr(34) & 
         department & Chr(34) & ";" & Chr(34) & 
         division & Chr(34) & ";" & Chr(34) & 
         company & Chr(34) & ";" & Chr(34) & 
         beschreibung & Chr(34) & ";"
       
       Next
      End If
     End If
     AnzahlOU = AnzahlOU + 1
     rs.MoveNext
Wend

Next i

Close #1
Unload Form1
End Sub

Siehe auch: https://learn.microsoft.com/de-de/powershell/

Kategorien
MCSA

Updating Skills to Windows Server 2008 

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.

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

Die Microsoft Kurse umfassen verschiedene Lösungsbereiche und Level für jeweils unterschiedliche Rollen in der möglichen 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 Windows Server 2008. Er wendet sich an Teilnehmer, die bereits Erfahrung mit Netzwerk-Infrastruktur-Technik, wie auch Active Directory haben und ein Upgrade für Windows Server 2008 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 Server 2003.

Inhalt

  • Konfiguration Windows Server 2008
  • 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 Windows Server 2008
  • Planung der Windows Server 2008 Active Directory Services
  • Server Core Domain Controllers
  • Active Directory Domain Services
  • Active Directory Federation Services
  • Active Directory Lightweight Directory Services
  • 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

Script um eine Active Directory User in eine Gruppe aufzunehmen.

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.

Kategorien
Scripte

Passwort eines AD Benutzers setzen

AD Icon Graustufen

Nützlich für die initiale Verteilung neuer Konten (Domain Implementierung).

Hier wir ein Passwort für die gewünschten Benutzer gesetzt.

Wir das Ganze noch in eine Schleife gesetzt ist es eine Bulkänderung.

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

PS zur Automatisierung nutzen

CSS Programming Image

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.

In der interaktiven Variante startet man 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

PS leere AD Gruppen ermitteln

Prozess Pyramide
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 Zertifizierung

Update Kenntnisse von MS W2K auf W2K3

Binäre Darstellung

Aktualisieren der Systemadministratorkenntnisse von MS W2K auf W2K3 (2011A)

Da man immer nicht weiss was auf einem Microsoft Kurs so alles abgeht, habe ich mal kurz zusammengefasst was Thema und Inhalt war. Zum Teil habe ich das Ganze erweitert um einige Hilfestellungen und Links.

Meinung

Szenariobasierte Ü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
MCSA Zertifizierung

Implementing & Managing MS Exchange

Mail Icon

Ziel

An dieser Stelle eine Kurzfassung des entsprechenden Microsoftkurses, 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 weiss was auf einem Microsoft Kurs 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

Excel2LDIF für den Directory Import

CSS Programming Image

Ziel:

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

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

' 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

    '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