Angemeldete Benutzer: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „Um Herauszufinden welche Benutzer zuletzt angemeldet wwaren, kann über Powershell folgende Abfrage gestartet werden. <pre> 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).LastLogo…“ |
Thomas (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
<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> | ||
=== 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.<pre> | |||
$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 | |||
</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 * | |||
$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 | |||
</pre> | |||
💡 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: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.