Angemeldete Benutzer

Aus HB9FDZ
Version vom 7. August 2025, 08:07 Uhr von Thomas (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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 Assistenten Copilot von Microsoft, der mir bei der Erstellung und Dokumentation der PowerShell-Skripte geholfen hat.