Update Readme + Cleanup
This commit is contained in:
@@ -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 = @"
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
Hallo $($GivenName) $($Surname),
|
||||
<br>
|
||||
Du erhälst diese E-Mail, da du ein Benutzerkonto auf Media-Techport.DE hast.
|
||||
<br>
|
||||
Dein Passwort bei media-techport.de endet am $($PasswordExpireDate).
|
||||
<br>
|
||||
Du hast $($DaysBeforePasswordchange) Tage Zeit dein Kennwort zu ändern.
|
||||
<br>
|
||||
Wenn du der Passwortänderung nicht nachkommst, wirst du dich bei deinem Administrator melden müssen, damit das Kennwort gesetzt werden kann.
|
||||
<br>
|
||||
<br>
|
||||
Freundliche Grüße
|
||||
<br>
|
||||
Media-Techport.DE
|
||||
</body>
|
||||
"@
|
||||
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)
|
||||
}
|
||||
107
README.md
107
README.md
@@ -1,25 +1,106 @@
|
||||
# AD Kennwortbenachrichtigung
|
||||
<p align="center">
|
||||
<a href="https://techniverse.net">
|
||||
<img src="https://assets.techniverse.net/f1/git/graphics/repo-techniverse-logo.png" alt="Techniverse Community" height="70" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
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:
|
||||
<h1 align="center">AD Kennwortablaufbenachrichtigung</h1>
|
||||
|
||||
- **$MaxPasswordAge** Das Skript verwendet die in der Variable $MaxPasswordAge festgelegte Anzahl von Tagen, um das maximale Alter von Kennwörtern festzulegen.
|
||||
<h4 align="center">
|
||||
PowerShell-Skript zur automatischen E-Mail-Benachrichtigung bei bevorstehendem Kennwortablauf im Active Directory
|
||||
</h4>
|
||||
|
||||
- **$WarningLevel:** Das Skript warnt Benutzer, die sich der Kennwortänderung nähern, indem es die in der Variable $WarningLevel festgelegte Anzahl von Tagen verwendet.
|
||||
<h6 align="center">
|
||||
<a href="https://www.cleveradmin.de">🏰 Website</a>
|
||||
·
|
||||
<a href="https://techniverse.net">📰 Community</a>
|
||||
·
|
||||
<a href="https://social.techniverse.net/@donnerwolke">🐘 Mastodon</a>
|
||||
·
|
||||
<a href="https://matrix.to/#/#support:techniverse.net">💬 Support</a>
|
||||
</h6>
|
||||
<br><br>
|
||||
|
||||
- **$SMTPServer:** Hier wird der SMTP Server eingetragen.
|
||||
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.
|
||||
|
||||
- **$FromName:** Der Absendername, welcher der Mail mitgegeben wird.
|
||||
## 🎯 Funktionen
|
||||
|
||||
- **$FromEmail:** Dies ist die Absendermailadresse.
|
||||
- 🔍 **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
|
||||
|
||||
- **$Subject:** Der Betreff der Mail.
|
||||
## ⚙️ Konfiguration
|
||||
|
||||
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.
|
||||
Das Skript ist über folgende Variablen konfigurierbar:
|
||||
|
||||
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.
|
||||
| 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` |
|
||||
|
||||
Die E-Mails werden im HTML-Format erstellt und der Mail Body temporär hier abgelegt: "C:\temp\mailbody.html"
|
||||
## 📋 Voraussetzungen
|
||||
|
||||
**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.
|
||||
- Windows Server 2016 oder neuer
|
||||
- Active Directory-Rollen (RSAT) installiert
|
||||
- PowerShell 5.1+
|
||||
- Zugriff auf SMTP-Mailserver
|
||||
|
||||
Das Script wurde erfolgreich auf einem Windows Server 2016 mit eingerichteten Active Directory getestet.
|
||||
## 🚀 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.
|
||||
|
||||
<br><br>
|
||||
<p align="center">
|
||||
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<sub>
|
||||
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
|
||||
</sub>
|
||||
</p>
|
||||
Reference in New Issue
Block a user