Top-Themen

Aktuelle Themen (A bis Z)

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

WinEvt-Logs auf SBS 2008 - System kann die angegebene Datei nicht finden

Mitglied: Spitzending

Spitzending (Level 1) - Jetzt verbinden

22.12.2010, aktualisiert 18:29 Uhr, 5575 Aufrufe, 2 Kommentare

Guten Tag allerseits. Ich möchte auf einem SBS 2008 die Eventlogs von Windows an einen anderen Ort archivieren. Ich habe eine bestehende Batchdatei von http://www.dostips.com/DtTipsDateTime.php genommen und nach meinen Wünschen modifiziert, Quelltext siehe unten.

Ich durchlaufe den Ordner %windir%\System32\winevt\Logs, zippe alle Dateien älter als sieben Tage an einen anderen Ort und lösche das Original. Das klappt für die meisten *.evtx mit Ausnahme sämtlicher Archive-Security-*.evtx. Für jede dieser Dateien bekomme ich die Meldung "Das System kann die angegebene Datei nicht finden.", d.h. mein Skript kann kein ZIP-Archiv von diesen Protokollen erstellen. Diese Dateien sind sehr wohl vorhanden und zumeist sehr alt, so daß sie nicht mehr geöffnet sein sollten, weil längst mehrere neue Logs danach geschrieben wurden. Dafür spricht auch, daß ich bei anderen Dateien, die noch geöffnet sind, auch eine entsprechende Meldung erhalte: "WARNING: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.", so z.B. für das PowerShell.evtx. Bei den Archive-Security-*.evtx muß also ein anderer Grund vorliegen, der aber aus der Fehlermeldung nicht hervorgeht.

Die Berechtigungen auf die Dateien habe ich geprüft und nur Gemeinsamkeiten gefunden: selbe Zugriffsgruppen, selbe Rechte (SYSTEM, Administratoren, EventLog jeweils mit Vollzugriff). Alle Dateien haben in ihren Zeitstempeln jeweils das gleiche Datum und die gleiche Uhrzeit (Erstellt, Geändert, Letzter Zugriff). Die relevanten weiteren Dateiattribute (Schreibgeschützt ...) sind auch gleich. Hat jemand einen Tipp für mich? Mit der Hoffnung auf Erleuchtung, was ich tun muß, um auch die Sicherheitslogs mit archivieren zu können, nachfolgend das Skript:

01.
 
02.
SETLOCAL ENABLEEXTENSIONS 
03.
SETLOCAL ENABLEDELAYEDEXPANSION 
04.
 
05.
cd /d "%windir%\System32\winevt\Logs" 
06.
 
07.
call:jdate tnow "%date%" 
08.
for %%F in (*.*) do ( 
09.
	call:ftime tfile "%%F" 
10.
	set /a diff=tnow-tfile 
11.
	if !diff! LEQ 7 ( 
12.
	echo.%%~nxF ist !diff! <= 7 Tage alt und wird deshalb nicht archiviert. 
13.
	) else ( 
14.
	echo.%%~nxF ist !diff! Tage alt und wird als ZIP-Archiv nach D:\winevt\Logs\ archiviert. 
15.
	C:\Programme\7-Zip\7z.exe a -tzip D:\winevt\Logs\%%F.zip %%F 
16.
	del %%F 
17.
	echo %%F wurde nach "D:\winevt\Logs" archiviert. Das Original wurde geloescht. 
18.
19.
20.
echo %date% > D:\winevt\Logs\00-letztes-Archiv.txt 
21.
echo Die Archivierung ist abgeschlossen. Das Datum der letzten Archivierung wurde in der Datei "D:\winevt\Logs\00-letztes-Archiv.txt" gespeichert. 
22.
ECHO.&PAUSE&GOTO:EOF 
23.
 
24.
 
25.
::----------------------------------------------------------------------------------- 
26.
::-- Functions start below here 
27.
::----------------------------------------------------------------------------------- 
28.
 
29.
 
30.
:ftime JD filename attr -- returns the file time in julian days 
31.
::                      -- JD    [out]    - valref file time in julian days 
32.
::                      -- attr  [in,opt] - time field to be used, creation/last-access/last-write, see 'dir /?', i.e. /tc, /ta, /tw, default is /tw 
33.
:$created 20060101 :$changed 20090322 :$categories DateAndTime 
34.
:$source http://www.dostips.com 
35.
SETLOCAL 
36.
set file=%~2 
37.
set attr=%~3 
38.
if not defined attr (call:jdate JD "- %~t2" 
39.
) ELSE (for /f %%a in ('"dir %attr% /-c "%file%"|findstr "^^[0-9]""') do call:jdate JD "%%a") 
40.
( ENDLOCAL & REM RETURN VALUES 
41.
    IF "%~1" NEQ "" (SET %~1=%JD%) ELSE (echo.%JD%) 
42.
43.
EXIT /b 
44.
 
45.
 
46.
:jdate JD DateStr -- converts a date string to julian day number with respect to regional date format 
47.
::                -- JD      [out,opt] - julian days 
48.
::                -- DateStr [in,opt]  - date string, e.g. "03/31/2006" or "Fri 03/31/2006" or "31.3.2006" 
49.
:$reference http://groups.google.com/group/alt.msdos.batch.nt/browse_frm/thread/a0c34d593e782e94/50ed3430b6446af8#50ed3430b6446af8 
50.
:$created 20060101 :$changed 20080219 
51.
:$source http://www.dostips.com 
52.
SETLOCAL 
53.
set DateStr=%~2&if "%~2"=="" set DateStr=%date% 
54.
for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('"echo.|date"') do ( 
55.
    for /f "tokens=1-3 delims=/.- " %%A in ("%DateStr:* =%") do ( 
56.
        set %%a=%%A&set %%b=%%B&set %%c=%%C)) 
57.
set /a "yy=10000%yy% %%10000,mm=100%mm% %% 100,dd=100%dd% %% 100" 
58.
set /a JD=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4 
59.
ENDLOCAL & IF "%~1" NEQ "" (SET %~1=%JD%) ELSE (echo.%JD%) 
60.
EXIT /b
Mitglied: 60730
22.12.2010 um 17:09 Uhr
moin,

bitte schreibe deinen Quelltext zwischen <code> und </code> -denn so haben nicht nur meine Augen ein Problem mit dem lesen..

Dann nehme ich diese Vbs, die im "Zielordner" der logs sein sollte.
Das mit Datum beschriftete security.evt solltest du so auch wunderbar zippen und danach in die Tonne treten können.

01.
strComputer = "."        
02.
Set objWMIService = GetObject("winmgmts:" _ 
03.
    & "{impersonationLevel=impersonate, (Backup, Security)}!\\" _ 
04.
        & strComputer & "\root\cimv2") 
05.
Set colLogFiles = objWMIService.ExecQuery _ 
06.
    ("Select * from Win32_NTEventLogFile where LogFileName='Security'") 
07.
For Each objLogfile in colLogFiles 
08.
     OutputFile = "C:\script\eventlog\" & "Security " 
09.
     OutputFile = OutputFile & Day(Now) & "-" & month(now) & "-" & year(now) 
10.
     OutputFile = OutputFile & ".evt" 
11.
    errBackupLog = objLogFile.BackupEventLog(OutputFile) 
12.
    If errBackupLog = 0 Or errBackupLog = 183 Then 
13.
         objLogFile.ClearEventLog() 
14.
    End If 
15.
Next
btw: Eigentlich schreibe ich ja keine kompletten Scripte mehr, aber das lag eh fertig im SchnippselOrdner.
btw²: Eh klar, dass das nur ein Admin machen darf....

Gruß
Bitte warten ..
Mitglied: Spitzending
27.12.2010 um 16:57 Uhr
Danke für Dein Skript. Meins hatte ich zuerst in [code], [/code] gesetzt, kein Ergebnis gesehen und die Tags darum wieder entfernt. Künftig also in spitzen Klammern.

Dein Skript verstehe ich noch nicht vollständig. Da ich von VBS keine Ahnung habe, habe ich mir zeilenweise alles herausgesucht, bis ich schlüssige Erklärungen fand. Aus meiner Sicht nimmt Dein Skript zuerst die Rolle eines Backup-Admins an und liest alle Eventlogs, die mit 'Security' beginnen, nacheinander ein und schreibt sie in Dateien nach dem Muster c:\script\eventlog\Security-27-12-2010.evt. Wenn es kein .evtx gibt (Rückgabewert 0) oder die Zieldatei bereits exisitert (Rückgabewert 183), dann wird das entsprechende .evtx gelöscht. Ist das so richtig? Nur was passiert, wenn es mehrere Security-Logs vom gleichen Datum gibt? Dann ist die Zieldatei ja schon vorhanden. Und warum soll das Skript im Zielordner liegen und von dort aufgerufen werden, wenn die Dateien eh nach c:\script\eventlog geschrieben werden?

Ich habe Dein Skript in einem leeren Testordner abgelegt und von dort per Kommandozeile ausgeführt, doch beendet es sich gleich (offenbar ordentlich), so daß keine Dateien im Zielordner landen.

Für meine Lösung fehlen da außerdem noch ein paar Punkte. Deshalb wäre mir eine Lösung basierend auf meinem Skript oben lieber, weil ich dann nicht alles nochmal neu in einer anderen Sprache machen müßte, von der ich bisher keine Ahnung habe. Die ganze Arbeit würde von vorn beginnen. Vielleicht hat jemand einen plausiblen Grund, warum die Security-Logs als einzige nicht geöffnet werden können und wie ich das behebe. Zumindest hatte ich mit Deinem Skript da noch keinen Erfolg.
Bitte warten ..
Ähnliche Inhalte
Windows Server

Aufgabenplanung - Das System kann die angegebene Datei nicht finden

gelöst Frage von HenereWindows Server2 Kommentare

Servus zusammen, entweder ich seh den Wald vor lauter Bäumen nicht oder ? Server 2012 Ich habe in der ...

Batch & Shell

Robocopy - Das System kann die angegebene Datei nicht finden

gelöst Frage von imebroBatch & Shell15 Kommentare

Hallo, ich habe eine 1TB Festplatte in 2 Partitionen aufgeteilt (D und F). Nun möchte ich Daten von der ...

Windows Server

Robocopy Fehler 2 Das system kann die angegebene Datei nicht finden

Frage von winservohuWindows Server3 Kommentare

Hallo Zusammen, habe ein Problem mit Robocopy. Und zwar soll jede Nacht eine Batch ausgeführt werden die so aussieht: ...

Windows Server

Windows Server Sicherung (Fehler: Das System kann die angegebene Datei nicht finden.)

Frage von excedraWindows Server7 Kommentare

Hi, ich habe folgendes Problem mit der Windows Server Sicherung (Windows Server 2008R2): Die Sicherung beginnt normal, es soll ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 5 StundenErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 7 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 7 StundenMicrosoft7 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1026 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Server
Route-Befehl Unterstützung (unter CMD)
Frage von FKRR56Server12 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...