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

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

Frage Entwicklung Batch & Shell

Mitglied: Spitzending

Spitzending (Level 1) - Jetzt verbinden

22.12.2010, aktualisiert 18:29 Uhr, 5486 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 ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Robocopy - Das System kann die angegebene Datei nicht finden (15)

Frage von imebro zum Thema Batch & Shell ...

Windows Server
Server Upgrade SBS 2008 auf Server 2016 (19)

Frage von heisenberg4 zum Thema Windows Server ...

Exchange Server
gelöst SBS 2008 (Exchange 2007 SP3) - externe URL ändern - neues Zertifikat (8)

Frage von Ezekiel666 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...