$dc = Get-ADDomainController | select -first 1
$events = get-eventlog -ComputerName $dc -LogName Security -InstanceId 4740
$resultList = @()
foreach ($e in $events) {
$callerComputerMatch = $e.Message -match "Caller Computer Name:\s*(\S+)"
$accountNameMatches = [regex]::Matches($e.Message, "Account Name:\s*(\S+)")
$Trigger_Time = $e.TimeGenerated
#Wenn der Caller Computer Name gefunden wurde
if ($callerComputerMatch) {
$callerComputerName = $matches[1] #Computername
}
#Wenn der zweite(!) Account Name gefunden wurde
if ($accountNameMatches.Count -ge 2) {
$secondAccountName = $accountNameMatches[1].Groups[1].Value #Account Name
}
#Füge die Ergebnisse der Liste hinzu
$resultList += [PSCustomObject]@{
Trigger_Time = $Trigger_Time
Triggering_Client = $callerComputerName
Triggering_Account_Name = $secondAccountName
}
}
$resultList | Format-Table -AutoSize
Zunächst Wähle ich einen DC aus. Auf diesem lese ich dann aus dem Securtity Eventlog alle Eintrage der ID 4740 aus.
Es wird eine Resultlist erstellt, in die dann die Ergebnisse kommen.
Nun wird im Message Feld der “Caller Computer Name” gesucht und der Zeitstempel des Events festgehalten.
Im nächsten Schritt wird der im Message Feld des Events enthaltene 2.(!) Account Name gesucht und festgehalten
Danach wird alles in die Liste gepackt und ausgegeben.