Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anzeigen der ersten Anmelde und letzten Abmeldezeit

Frage Microsoft Windows 7

Mitglied: killtec

killtec (Level 3) - Jetzt verbinden

13.10.2014 um 14:48 Uhr, 1302 Aufrufe, 10 Kommentare

Hallo zusammen,
ich würde gerne aus meinem System die erste Anmeldezeit und die letzte Abmeldezeit aus dem Eventlog filtern.
Versucht habe ich bisher dies:
01.
<QueryList> 
02.
  <Query Id="0" Path="Security"> 
03.
    <Select Path="Security"> 
04.
      *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and ( Task = 
05.
12544 or Task = 12545 )]] 
06.
       and 
07.
      *[EventData[Data[@Name='TargetUsername'] and (Data='meinbenutzer')]] 
08.
    </Select> 
09.
  </Query> 
10.
</QueryList>
Aber das scheint nicht ganz das zu sein, was ich suche. Ich will also nur die Ereignisse filtern. Wo ein Benutzer sich aktiv (per Keyboard) An oder Abgemeldet hat.

OS: Windows 7 Pro

Gruß
Mitglied: colinardo
13.10.2014, aktualisiert um 19:48 Uhr
Hallo killtec,
ich würde gerne aus meinem System die erste Anmeldezeit und die letzte Abmeldezeit aus dem Eventlog filtern.
was meinst du mit erster Anmeldezeit? Die erste Anmeldung des heutigen Tages ?

Beispiel für die erste Anmeldung des Tages und der letzten Abmeldung (Powershell):
01.
$firstLogon = Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Task = 12544)] and EventData[Data[@Name='TargetUsername'] = 'BENUTZERNAME' and Data[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]" | ?{$_.TimeCreated -ge (get-date).Date} | sort TimeCreated | select -First 1 
02.
$lastLogoff = Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Task = 12545)] and EventData[Data[@Name='TargetUsername'] = 'BENUTZERNAME' and Data[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]" | ?{$_.TimeCreated -ge (get-date).Date} | sort TimeCreated -Descending | select -First 1 
03.
 
04.
write-host "Erste Anmeldung:"$firstLogon.TimeCreated 
05.
write-host "Letze Abmeldung:"$lastLogoff.TimeCreated 
06.
write-host "Die Differenz beträgt: "($lastLogoff - $firstLogon).toString("g")
BENUTZERNAME natürlich ersetzen.

Grüße Uwe
Bitte warten ..
Mitglied: killtec
14.10.2014 um 08:00 Uhr
Hi Uwe,
das funktioniert schon gut Danke schon mal. Wie kann ich denn einen Zeitraum angeben? Bsp. 06-10.10. Bzw. ein bestimmtes Datum? muss ich hier einfach das
01.
(get-date).Date}
durch das Datum ersetzen? Also
01.
13.10.2014}
Gruß
Bitte warten ..
Mitglied: colinardo
14.10.2014 um 08:07 Uhr
?{$_.TimeCreated -ge (get-date '06.10.2014') -and  $_.TimeCreated -le (get-date '10.10.2014')}
Grüße Uwe
Bitte warten ..
Mitglied: killtec
14.10.2014 um 08:30 Uhr
Uwe,
ist das korrekt dass die Ausgabe dieses Vefehles leer ist?:
01.
Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Task = 12545)] and EventData[Data[@Name='TargetUsername'] = 'Benutzername' and Data[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]" | ?{$_.TimeCreated -ge (get-date '06.10.2014')} | sort TimeCreated -Descending | select -First 1
Gruß
Bitte warten ..
Mitglied: colinardo
14.10.2014, aktualisiert um 09:09 Uhr
Also ich erkläre das mal genauer.
Get-WinEvent filtert erst mal das komplette Eventlog nach deinen Kriterien. Danach enthält es alle gewünschten Events, jedoch noch aus dem kompletten Zeitraum des Eventlog .d.h soweit dies zurückreicht. Dies muss nun auf einen Datumsbereich eingeschränkt werden. Dazu benötigen wir zwei Zeitangaben, die Anfangszeit und die Endzeit. In deinem geposteten Code sind also alle Events vom 06.10.2014 00:00 Uhr bis jetzt enthalten, weil du die Endzeit nicht einschränkst.
Auch zu erwähnen ist, das der Fall eintreten kann das du dich an einem Tag überhaupt nicht an- oder abgemeldet hast weil z.B. der Rechner über Nacht durchgelaufen ist. Deswegen kann es durchaus sein das eins oder beide Daten leer sein können, je nachdem welchen Zeitraum du filterst. Ebenso kann es sein das sich ein Rechner zwei Tage im Hibernate befindet, dann sind natürlich für diesen Zeitraum ebenfalls keine Daten vorhanden.

Grüße Uwe
Bitte warten ..
Mitglied: killtec
14.10.2014 um 09:25 Uhr
Hi Uwe,
ok, das habe ich soweit verstanden
Jetzt bekomme ich jedoch folgende Ausgabe:
01.
PS C:\Windows\system32> $firstLogon = Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsof 
02.
t-Windows-Security-Auditing'] and (Task = 12544)] and EventData[Data[@Name='TargetUsername'] = 'BENUTZERNAME' and Dat 
03.
a[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]" | ?{$_.TimeCreated -ge (get-date '06.10.2014') -and  $_.TimeC 
04.
reated -le (get-date '10.10.2014')} | sort TimeCreated | select -First 1 
05.
PS C:\Windows\system32> $lastLogoff = Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsof 
06.
t-Windows-Security-Auditing'] and (Task = 12545)] and EventData[Data[@Name='TargetUsername'] = 'BENUTZERNAME' and Dat 
07.
a[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]" | ?{$_.TimeCreated -ge (get-date '06.10.2014') -and  $_.TimeC 
08.
reated -le (get-date '10.10.2014')} | sort TimeCreated -Descending | select -First 1 
09.
PS C:\Windows\system32> 
10.
PS C:\Windows\system32> write-host "Erste Anmeldung:"$firstLogon.TimeCreated 
11.
Erste Anmeldung: 06.10.2014 07:45:39 
12.
PS C:\Windows\system32> write-host "Letze Abmeldung:"$lastLogoff.TimeCreated 
13.
Letze Abmeldung: 
14.
PS C:\Windows\system32> write-host "Die Differenz beträgt: "($lastLogoff - $firstLogon).toString("g") 
15.
Der Vorgang "[$null] - [System.Diagnostics.Eventing.Reader.EventLogRecord]" ist nicht definiert. 
16.
Bei Zeile:1 Zeichen:51 
17.
+ write-host "Die Differenz beträgt: "($lastLogoff - <<<<  $firstLogon).toString("g") 
18.
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException 
19.
    + FullyQualifiedErrorId : NotAdefinedOperationForTypeType 
20.
 
21.
PS C:\Windows\system32>
P.S.: Habe natürlich den Benutzernamen durch meinen ersetzt gehabt.

Die Meldung, dass die Differenz nicht errechnet werden kann liegt vermutlich daran, dass die zweite Variable leer ist.
Da ich den PC abends abschalte, weiß ich. dass dort eigentlich etwas stehen sollte. Hast du hier noch eine Idee?

Danke.

Gruß
Bitte warten ..
Mitglied: colinardo
14.10.2014, aktualisiert um 09:31 Uhr
Zitat von killtec:
P.S.: Habe natürlich den Benutzernamen durch meinen ersetzt gehabt.

Die Meldung, dass die Differenz nicht errechnet werden kann liegt vermutlich daran, dass die zweite Variable leer ist.
Da ich den PC abends abschalte, weiß ich. dass dort eigentlich etwas stehen sollte. Hast du hier noch eine Idee?
Das ist ja klar, die Differenz habe ich nur als einfaches Beispiel ohne Fehlerprüfung mit eingefügt, ohne einen Wert kann ja auch nix berechnet werden
Da musst du dann eine IF-Abfrage davor setzen um zu prüfen ob die Variable einen Wert hat
01.
if ($lastLogoff -ne $null -and $firstLogon -ne $null){ 
02.
  write-host "Die Differenz beträgt:"($lastLogoff - $firstLogon).toString("g") 
03.
}
Bitte warten ..
Mitglied: killtec
14.10.2014 um 09:35 Uhr
Ok,
die Frage ist jedoch, Warum ist der zweite Wert leer obwohl da was stehen müsste?

Gruß
Bitte warten ..
Mitglied: colinardo
14.10.2014, aktualisiert um 09:41 Uhr
Zitat von killtec:
die Frage ist jedoch, Warum ist der zweite Wert leer obwohl da was stehen müsste?
Erstens kenne ich die Einträge in deinem Eventlog nicht, und zweitens ist dein hier geposteter Code in mehrere Zeilen gesplittet in der Konsole eingeben worden, so kann es nicht laufen. Pack das ganze in eine PS1-Datei und führe diese dann aus ...

Check auch mal ob deine Abmelde-Events die aufgeführten LogonType's bei dir besitzen ...
Bitte warten ..
Mitglied: killtec
14.10.2014, aktualisiert um 09:50 Uhr
Da muss ich dir recht geben
So, wenn ich das ganze in eine PS1-Datei packe, bleibt es leider trotzdem leer.

Habe das mal so in die PS eingegeben:
Get-WinEvent -LogName Security -FilterXPath "Event[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (Task = 12545)] and EventData[Data[@Name='TargetUsername'] = 'BENUTZERNAME' and Data[@Name='LogonType'] and (Data=11 or Data=10 or Data=2)]]"

Da kommen Daten raus, aber das sieht ein bisschen komisch aus...
01.
TimeCreated 
02.
----------- 
03.
29.07.2014 10:50:41 
04.
29.07.2014 09:33:05 
05.
15.07.2014 13:35:49 
06.
15.07.2014 13:30:06 
07.
15.07.2014 11:22:03 
08.
15.07.2014 11:22:02 
09.
14.07.2014 11:45:20 
10.
14.07.2014 11:45:19 
11.
14.07.2014 10:00:08 
12.
14.07.2014 09:59:34 
13.
14.07.2014 09:59:26 
14.
03.07.2014 11:39:50 
15.
01.07.2014 11:13:37 
16.
26.06.2014 07:39:42 
17.
25.06.2014 11:45:50 
18.
19.05.2014 10:43:20 
19.
19.05.2014 10:31:16 
20.
28.04.2014 07:37:18 
21.
28.02.2014 12:47:08 
22.
26.01.2014 16:25:03 
23.
26.01.2014 12:07:20 
24.
26.01.2014 11:48:11 
25.
26.01.2014 11:39:36 
26.
18.12.2013 14:56:20 
27.
09.12.2013 07:31:30 
28.
02.10.2013 11:04:02 
29.
02.10.2013 11:01:56 
30.
17.09.2013 16:03:46 
31.
17.09.2013 13:38:37 
32.
17.09.2013 10:34:55 
33.
17.09.2013 10:14:43 
34.
17.09.2013 08:15:43 
35.
16.09.2013 16:59:42 
36.
16.09.2013 16:31:34 
37.
16.09.2013 14:19:29 
38.
16.09.2013 12:12:11 
39.
05.09.2013 15:41:16 
40.
05.09.2013 11:38:57
P.S.: Das ist die gesamte Liste...

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Webbrowser
Fenster und Tabs der letzten Sitzung anzeigen (3)

Frage von EwaldST zum Thema Webbrowser ...

Grafik
PDF-Tool zum Anzeigen der letzten Scans (7)

Frage von TlBERlUS zum Thema Grafik ...

Outlook & Mail
Outlook 2010 Userprofile Foto anzeigen lassen (2)

Frage von staybb zum Thema Outlook & Mail ...

Windows 7
Kopierte Dateien im Hintergrund anzeigen (1)

Frage von MichiBLNN zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...