diff --git a/.archiv/password-reminder.v1.ps1 b/.archiv/password-reminder.v1.ps1
deleted file mode 100644
index 9a9a674..0000000
--- a/.archiv/password-reminder.v1.ps1
+++ /dev/null
@@ -1,80 +0,0 @@
-# Active Directory Passwort Policy:
-$MaxPasswordAge = 365 # Max Password age in days
-$WarningLevel = 364 # Warn Users XX Days before Password expires
-
-# Mail Settings:
-$SMTPServer = "smtp.media-techport.int"
-$FromName = "Media-Techport.DE | Passwort Erinnerung"
-$FromEmail = "noreply@media-techport.de"
-$Subject = "Dein Passwort muss geändert werden!"
-
-# Funktion zur expliziten Zeichencodierung
-function Encode-StringToUTF8 ($inputString) {
- $utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($inputString)
- return [System.Text.Encoding]::UTF8.GetString($utf8Bytes)
-}
-
-# Message Template (Mailbody)
-function New-MailBody ($GivenName, $Surname, $DaysBeforePasswordchange, $PasswordExpireDate) {
- $Mailbody = @"
-
-
-
-
- Hallo $($GivenName) $($Surname),
-
- Du erhälst diese E-Mail, da du ein Benutzerkonto auf Media-Techport.DE hast.
-
- Dein Passwort bei media-techport.de endet am $($PasswordExpireDate).
-
- Du hast $($DaysBeforePasswordchange) Tage Zeit dein Kennwort zu ändern.
-
- Wenn du der Passwortänderung nicht nachkommst, wirst du dich bei deinem Administrator melden müssen, damit das Kennwort gesetzt werden kann.
-
-
- Freundliche Grüße
-
- Media-Techport.DE
-
-"@
- return Encode-StringToUTF8 $Mailbody
-}
-
-# Import all active AD-Users
-$AllADUsers = Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties PasswordLastSet, mail
-
-# Calculate expiring passwords and store them in an object
-$today = Get-Date
-$ExpirePasswordList = @()
-foreach ($ADUser in $AllADUsers) {
- $GivenName = $ADUser.GivenName
- $Surname = $ADUser.Surname
- $MailAddress = $ADUser.mail
-
- $PasswordLastSet = $ADUser.PasswordLastSet
- $PasswordExpireDate = $PasswordLastSet.AddDays(+$MaxPasswordAge)
-
- $DaysBeforePasswordchange = ($PasswordExpireDate - $today).Days
- if ($DaysBeforePasswordchange -le $WarningLevel) {
- $ExpirePasswordList += New-Object PSObject -property @{Givenname=$Givenname;Surname=$Surname;MailAddress=$MailAddress;DaysBeforePasswordchange=$DaysBeforePasswordchange;PasswordExpireDate=$PasswordExpireDate}
- }
-}
-
-# Filter Users with Mailaddresses
-$ExpirePasswordList = $ExpirePasswordList | Where-Object {$_.mailaddress}
-
-# Send mail to every user with expired password
-foreach ($ADUser in $ExpirePasswordList) {
- $GivenName = $ADUser.GivenName
- $Surname = $ADUser.Surname
- $MailAddress = $ADUser.MailAddress
- $DaysBeforePasswordchange = $ADUser.DaysBeforePasswordchange
- $PasswordExpireDate = $ADUser.PasswordExpireDate
-
- $Body = New-MailBody $GivenName $Surname $DaysBeforePasswordchange $PasswordExpireDate
-
- # Erstelle den "From" Header mit Sendername und E-Mail-Adresse
- $FromHeader = "{0} <{1}>" -f $FromName, $FromEmail
-
- Send-MailMessage -SmtpServer $SMTPServer -To $MailAddress -From $FromHeader -Body $Body -BodyAsHtml -Subject $Subject -Encoding ([System.Text.Encoding]::UTF8)
-}
\ No newline at end of file
diff --git a/README.md b/README.md
index 022b978..fdeed24 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,106 @@
-# AD Kennwortbenachrichtigung
+
+
+
+
+
-Dieses PowerShell-Skript dient dazu, Kennwortablaufbenachrichtigungen an Benutzer zu senden. Das Skript beruht auf Active Directory-Passwortrichtlinien und sendet E-Mails an Benutzer, deren Kennwörter in Kürze ablaufen. Hier sind die wichtigsten Variablen:
+AD Kennwortablaufbenachrichtigung
-- **$MaxPasswordAge** Das Skript verwendet die in der Variable $MaxPasswordAge festgelegte Anzahl von Tagen, um das maximale Alter von Kennwörtern festzulegen.
-
-- **$WarningLevel:** Das Skript warnt Benutzer, die sich der Kennwortänderung nähern, indem es die in der Variable $WarningLevel festgelegte Anzahl von Tagen verwendet.
-
-- **$SMTPServer:** Hier wird der SMTP Server eingetragen.
+
+ PowerShell-Skript zur automatischen E-Mail-Benachrichtigung bei bevorstehendem Kennwortablauf im Active Directory
+
-- **$FromName:** Der Absendername, welcher der Mail mitgegeben wird.
+
+
-- **$FromEmail:** Dies ist die Absendermailadresse.
+Dieses PowerShell-Skript automatisiert die Kennwortablaufbenachrichtigung für Active Directory-Benutzer. Es überwacht kontinuierlich die Kennwortablaufdaten und sendet rechtzeitig E-Mails an Benutzer, deren Kennwörter in Kürze ablaufen.
-- **$Subject:** Der Betreff der Mail.
-
-Es durchläuft alle aktiven Active Directory-Benutzer, berechnet das Ablaufdatum ihrer Kennwörter und speichert diejenigen, die sich dem Ablaufdatum nähern, in einer Liste.
+## 🎯 Funktionen
-Schließlich werden Benachrichtigungs-E-Mails an diese Benutzer gesendet, die sie darüber informieren, dass ihr Kennwort in Kürze abläuft. Die E-Mails enthalten Informationen über den Dienst, für den das Kennwort verwendet wird, das Ablaufdatum des Kennworts und die Anweisungen zum Ändern des Kennworts gemäß den Kennwortrichtlinien.
+- 🔍 **Automatische Überwachung**: Ermittelt alle aktiven AD-Benutzer mit ablaufenden Kennwörtern
+- 📊 **Intelligente Filterung**: Berücksichtigt nur Benutzer mit gültiger E-Mail-Adresse
+- 📧 **HTML-E-Mails**: Versendet formatierte, mehrsprachige E-Mail-Benachrichtigungen
+- ⏰ **Zeitgesteuerte Warnung**: Konfigurierbare Warnfrist (Standard: 14 Tage vor Ablauf)
+- 📋 **Detaillierte Informationen**: E-Mails enthalten Ablaufdatum, Services und Kennwortrichtlinien
-Die E-Mails werden im HTML-Format erstellt und der Mail Body temporär hier abgelegt: "C:\temp\mailbody.html"
+## ⚙️ Konfiguration
-**Hinweis:** Das Skript ist spezifisch für die Verwendung in einer bestimmten Umgebung konfiguriert und erfordert möglicherweise Anpassungen, um in anderen Umgebungen ordnungsgemäß zu funktionieren.
+Das Skript ist über folgende Variablen konfigurierbar:
-Das Script wurde erfolgreich auf einem Windows Server 2016 mit eingerichteten Active Directory getestet.
+| Variable | Beschreibung | Standardwert |
+|----------|-------------|--------------|
+| `$MaxPasswordAge` | Maximales Kennwortalter in Tagen | `365` |
+| `$WarningLevel` | Tage vor Ablauf für Warnung | `14` |
+| `$SMTPServer` | SMTP-Server für E-Mail-Versand | `smtp.media-techport.int` |
+| `$FromName` | Absendername | `Media-Techport.DE \| Account Service` |
+| `$FromEmail` | Absender-E-Mail | `noreply@media-techport.de` |
+| `$Subject` | E-Mail-Betreff | `Wichtige Mitteilung - Dein Kennwort läuft bald ab` |
+
+## 📋 Voraussetzungen
+
+- Windows Server 2016 oder neuer
+- Active Directory-Rollen (RSAT) installiert
+- PowerShell 5.1+
+- Zugriff auf SMTP-Mailserver
+
+## 🚀 Verwendung
+
+Das Skript wird ohne Parameter ausgeführt:
+
+```powershell
+.\password-reminder.v2.ps1
+```
+
+## 📧 E-Mail-Inhalt
+
+Die E-Mail enthält:
+- Persönliche Ansprache mit Vorname
+- Liste der verknüpften Services (Subsonic, NextCloud, FTP)
+- Ablaufdatum und letzte Kennwortänderung
+- Link zur Kennwortänderung
+- Detaillierte Kennwortrichtlinien
+- Kontaktinformationen für Support
+
+## 📁 Projektstruktur
+
+```
+ad-kennwortbablaufbenachrichtigung/
+├── password-reminder.v2.ps1 # Hauptskript
+├── README.md # Diese Datei
+├── LICENSE # Lizenzinformationen
+└── Aufgabenplanung/ # Windows Task Scheduler Konfiguration
+ └── Kennwortablaufbenachrichtigung-für-alle.xml
+```
+
+## ⚠️ Hinweis
+
+Das Skript ist für eine spezifische Umgebung konfiguriert. Für andere Umgebungen müssen die Konfigurationsvariablen angepasst werden.
+
+## 🐛 Bekannte Einschränkungen
+
+**Aktuelles Problem:** Bei jeder Ausführung des Skripts werden E-Mails an alle betroffenen Benutzer versendet, auch wenn bereits eine Benachrichtigung gesendet wurde. Dies führt zu mehreren E-Mails an dieselben Benutzer.
+
+**Lösung in Planung:** In Zukunft wird das Skript einen Status speichern (z. B. in einer Log-Datei oder Datenbank), um doppelte E-Mail-Versand zu verhindern.
+
+## ✅ Teststatus
+
+Das Script wurde erfolgreich auf einem Windows Server 2016 mit Active Directory getestet.
+
+
+
+
+
+
+
+
+ © Patrick Asmus · Techniverse Network · Lizenz
+
+
\ No newline at end of file