Angemeldete Benutzer: Unterschied zwischen den Versionen

Aus HB9FDZ
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
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 = @()
Zeile 77: Zeile 103:
</pre>
</pre>


Besten Dank an meinen digitalen Mitarbeiter für den Script -> :-)
💡 Besten Dank an meinen digitalen Assistenten Copilot von Microsoft, der mir bei der Erstellung und Dokumentation der PowerShell-Skripte geholfen hat.
   
   
[[Kategorie:Active Directory]]
[[Kategorie:Active Directory]]
[[Kategorie:Powershell Scripte]]

Aktuelle Version vom 7. August 2025, 08:07 Uhr

1. 🕵️‍♂️ Letzte Anmeldung von Domänenbenutzern ermitteln

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

Ä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.