ElAdMi 10 Geschrieben 16. Februar 2012 Melden Teilen Geschrieben 16. Februar 2012 Hallo zusammen. Ich möchte das Security Event Log von unseren DCs Nach einem bestimmten Nutzer Filtern und in eine Tabelle exportieren. Ich habe folgendes Script gefunden und etwas angepasst: # +--------------------------------------------------------------------------- # | File : EventLogs.ps1 # | Version : 1.5 # | Purpose : Export Remote Event Logs to CSV. # | Synopsis: Creates a CSV file containing all Errors and Warnings from the # | "Application", "System" & "Operations Manager" Event Logs # | Usage : .\EventLogs.ps1 -days NUMDAYS # +---------------------------------------------------------------------------- # | Maintenance History # | ------------------- # | Name Date Version Description # | ------------------------------------------------------------------------------ # | Craig Wilson 25/11/2011 1.0 Initial Release # | Craig Wilson 28/11/2011 1.1 Added '$store' variable for Log Location # | Craig Wilson 28/11/2011 1.2 Added Help Infomration # | Craig Wilson 28/11/2011 1.3 BUG FIX: added "-Credential $user" switch in for all logs # | Craig Wilson 28/11/2011 1.4 Added filter for Events # | Craig Wilson 01/12/2011 1.5* Added Array to loop through all servers in array and removed Paramter for servers. # +------------------------------------------------------------------------------- ################## ## HELP SECTION ## ################## <# .SYNOPSIS Script to export specific events from remote event logs to a CSV file .DESCRIPTION This script will read the event logs of the array of Servers and export all but all relevant logs to a CSV File for the specified server over the period of history requested at the command line. Logs can be filtered by modifing the Query for the appropriate log.. .EXAMPLE .\EventLogs.PS1 -days 7 .NOTES Script may error if there are no events to record and will prompt for the password. NO username or password information is stored by this script and nothing is written back to the server. #> # Specify Command Line parameters param([string]$days=$(throw "Days cannot be null")) $servers = @("Server1", "Server2") #Set namespace and calculate the date to start from $namespace = "root\CIMV2" $BeginDate=[system.Management.ManagementDateTimeConverter]::ToDMTFDateTime((get-date).AddDays(-$days)) $store = "C:\Logs" # No trailing slash, Folder must already exist foreach ($computer in $servers) { get-wmiobject -query "Select * from Win32_NTLogEvent Where Logfile = 'Security' AND (TimeWritten > '$BeginDate')" -computername $computer | Export-Csv "$store\$computer-Security.csv" } Nun fehlen mir noch zwei Dinge: 1. Ich würde gerne nach einer bestimmten UserID oder SID filtern 2. Ich hätte das exportierte CSV gerne tabellarisch und es muss nicht alle Informationen enthalten Habt Ihr eventuell ein paar Tipps für mich? Tausend Dank und Gruss Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 16. Februar 2012 Melden Teilen Geschrieben 16. Februar 2012 Moin, ich würde sowas mit Log Parser machen ... Download: Log Parser 2.2 - Microsoft Download Center - Download Details .: www.kaczenski.de :. » Suchergebnisse » Log parser Gruß, Nils Zitieren Link zu diesem Kommentar
ElAdMi 10 Geschrieben 16. Februar 2012 Autor Melden Teilen Geschrieben 16. Februar 2012 Hallo Nils, danke für Dein Feedback. Es sind sehr viele Server und ich muss auch WAN Bandbreite bedenken. Ich möchte nicht zuerst das komplette Log ziehen. Danke und lieben Gruss Zitieren Link zu diesem Kommentar
MichaTo 10 Geschrieben 17. Februar 2012 Melden Teilen Geschrieben 17. Februar 2012 Hallo, du könntest in Excel über die Funktion "Text in Spalten" die *.csv ordentlich darstellen. Mit einem Auto-Filter kannst du dann komfortable nach bestimmten Kriterien suchen. MfG Micha Zitieren Link zu diesem Kommentar
ElAdMi 10 Geschrieben 17. Februar 2012 Autor Melden Teilen Geschrieben 17. Februar 2012 Hallo Micha, danke für die Antwort. Ich mache dies auch schon, bei einigenZeilen bekommt CSV aber Probleme und Stellt falsch dar. Ich poste morgen mal den Code, den ich bis jetzt habe. LG Zitieren Link zu diesem Kommentar
frr 11 Geschrieben 18. Februar 2012 Melden Teilen Geschrieben 18. Februar 2012 Wenn Du die WAN Bandbreite beachten musst, dann würde ich das nicht über WMI realisieren. Ich würde das eher über einen Remotejob machen. $scriptblock = {get-eventlog -log security | ?{$_.message -match "Kontoname:*$Administrator" -and $_.eventid -eq 4771}} invoke-command $scriptblock -computer SRV1 -asjob Danach eine Warterunde im Skript mit start-sleep Jetzt benötigst Du eine Schleife, die prüft ob alle Jobs den Status "completed" haben. Wenn das so ist, kannst Du die Ergebnisse abholen und verarbeiten. Viele Grüße Frank Zitieren Link zu diesem Kommentar
ElAdMi 10 Geschrieben 19. Februar 2012 Autor Melden Teilen Geschrieben 19. Februar 2012 Hallo Frank, danke für Deine Antwort. Mir sind die extrem langen Laufzeiten aufgefallen. Ich habe dies jetzt mit invoke-command gelöst. Mein verbleibendes Problem ist noch die Darstellung in CSV. Anbei ein Bild, damit Ihr wisst, was ich meine: Entschuldigt das Geschmiere. Mir werden beispielsweise alle Events mit der ID 4672 falsch dargestellt. Bei einigen weiteren Events besteht das gleiche Problem. Irgendwie klappt hier die CSV-Codierung nicht. Vielen Dank und liebe Grüsse Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.