Angemeldete Benutzer: Unterschied zwischen den Versionen

Aus HB9FDZ
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Um Herauszufinden welche Benutzer zuletzt angemeldet wwaren, kann über Powershell folgende Abfrage gestartet werden.


<pre>
=== 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 <code>LastLogon</code>-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.<pre>
Import-Module ActiveDirectory
Import-Module ActiveDirectory


Zeile 18: Zeile 27:
}
}
</pre>
</pre>
Dies zeigt dann in der Shell eine Zusammenfassung der zuletzt angemeldeten Domänenbenutzer.


Um auszulesen wo welcher und zu welcher Zeit jemand angemeldet war kann dies in Form einer Liste ebenfalls über Powershell ausgegeben werden.
=== 2. 📋 Liste aller Anmeldungen mit Zeit und Computername ===
<pre>
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.<pre>
$DCs = Get-ADDomainController -Filter *
$DCs = Get-ADDomainController -Filter *
$Ergebnisse = @()
$Ergebnisse = @()
Zeile 50: Zeile 67:
$Ergebnisse | Export-Csv -Path "Benutzer_Anmeldungen.csv" -NoTypeInformation -Encoding UTF8
$Ergebnisse | Export-Csv -Path "Benutzer_Anmeldungen.csv" -NoTypeInformation -Encoding UTF8
</pre>
</pre>
Anmeldungen mit Clientnamen erfassen  
<pre>
=== 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.<pre>
$DCs = Get-ADDomainController -Filter *
$DCs = Get-ADDomainController -Filter *
$Ergebnisse = @()
$Ergebnisse = @()

Version vom 7. August 2025, 08:03 Uhr

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 -> :-)