Angemeldete Benutzer
1. 🕵️♂️ Letzte Anmeldung von Domänenbenutzern ermitteln
Dieses Skript fragt alle Domain Controller (DCs) ab, um den aktuellsten Anmeldezeitpunkt jedes aktivierten Benutzers zu ermitteln.
Funktion:
- Holt alle aktiven Benutzer aus dem Active Directory.
- Fragt jeden DC nach dem
LastLogon-Wert des Benutzers. - Konvertiert den Zeitwert in ein lesbares Datum.
- Gibt Benutzername + letztes Anmeldedatum aus.
Nutzen: Überblick über die zuletzt aktiven Benutzer in der Domäne.
Import-Module ActiveDirectory
$dcs = Get-ADDomainController -Filter {Name -like "*"}
$users = Get-ADUser -Filter "Enabled -eq 'True'" -Properties LastLogon
foreach ($user in $users) {
$lastLogon = 0
foreach ($dc in $dcs) {
$logon = (Get-ADUser $user.SamAccountName -Server $dc.HostName -Properties LastLogon).LastLogon
if ($logon -gt $lastLogon) { $lastLogon = $logon }
}
if ($lastLogon -ne 0) {
$dt = [DateTime]::FromFileTime($lastLogon)
Write-Output "$($user.SamAccountName) zuletzt angemeldet am $dt"
}
}
2. 📋 Liste aller Anmeldungen mit Zeit und Computername
Dieses Skript analysiert die Sicherheitsprotokolle der DCs und listet erfolgreiche Anmeldungen (Event ID 4624) auf.
Funktion:
- Holt bis zu 1000 Anmeldeereignisse pro DC.
- Extrahiert Benutzername, Computername und Zeitstempel.
- Erstellt eine sortierte Tabelle.
- Optional: Export als CSV-Datei.
Nutzen: Historische Übersicht, wann und wo sich Benutzer angemeldet haben.
$DCs = Get-ADDomainController -Filter *
$Ergebnisse = @()
foreach ($DC in $DCs) {
$Events = Get-WinEvent -ComputerName $DC.HostName -LogName Security -FilterXPath "*[System[(EventID=4624)]]" -MaxEvents 1000
foreach ($Event in $Events) {
$Benutzer = $Event.Properties[5].Value
$Computer = $Event.Properties[18].Value
$Zeit = $Event.TimeCreated
if ($Benutzer -and $Computer) {
$Ergebnisse += [PSCustomObject]@{
Benutzer = $Benutzer
Computer = $Computer
Zeitstempel = $Zeit
DC = $DC.HostName
}
}
}
}
# Ausgabe als Tabelle
$Ergebnisse | Sort-Object Zeitstempel -Descending | Format-Table -AutoSize
# Optional: Export als CSV
$Ergebnisse | Export-Csv -Path "Benutzer_Anmeldungen.csv" -NoTypeInformation -Encoding UTF8
3. 🖥️ Anmeldungen mit Clientnamen erfassen
Ähnlich wie das vorherige Skript, aber mit Fokus auf den Clientnamen (Computer, von dem aus die Anmeldung erfolgte).
Funktion:
- Liest Event ID 4624 aus den DCs.
- Extrahiert Benutzername, Clientname und Zeitstempel.
- Exportiert die Daten als CSV-Datei.
Nutzen: Nachvollziehbarkeit, von welchem Gerät aus sich ein Benutzer angemeldet hat.
$DCs = Get-ADDomainController -Filter *
$Ergebnisse = @()
foreach ($DC in $DCs) {
$Events = Get-WinEvent -ComputerName $DC.HostName -LogName Security -FilterXPath "*[System[(EventID=4624)]]" -MaxEvents 1000
foreach ($Event in $Events) {
$Benutzer = $Event.Properties[5].Value
$Clientname = $Event.Properties[18].Value
$Zeit = $Event.TimeCreated
if ($Benutzer -and $Clientname) {
$Ergebnisse += [PSCustomObject]@{
Benutzer = $Benutzer
Clientname = $Clientname
Zeitstempel = $Zeit
DC = $DC.HostName
}
}
}
}
$Ergebnisse | Export-Csv -Path "Benutzer_Anmeldungen_mit_Clientname.csv" -NoTypeInformation -Encoding UTF8
Besten Dank an meinen digitalen Mitarbeiter für den Script -> :-)