Powershell-Script, welches Dateien vom aktuellen Tag einsammelt
Hallo zusammen,
Ich habe ein etwas in die Tage gekommenes Batch_Script, was mir von mehreren Remote-Servern, jeweils immer die aktuellen Logfiles vom heutigen Tag aus bestimmten Ordner einsammelt und geordnet zur Verfügung stellt.
Das ganze soll nun ein Powershell Script werden. Das Einsammeln der Scripts an sich ist nicht das Problem. Ich tue mich aber schwer die Abfrage nach Dateiänderungsdatum und heutigem Datum umzusetzten. Auch hab ich keine Idee, wie ich es hinbekomme, die Funktion des Servers im späteren Ordnerpfad der IP anzufügen.
Hier mal das aktuelle Batch-Script:
Dieser Part:
und dieser Part :
sind meine Sorgenkinder
Vielen Dank schonmal
Ich habe ein etwas in die Tage gekommenes Batch_Script, was mir von mehreren Remote-Servern, jeweils immer die aktuellen Logfiles vom heutigen Tag aus bestimmten Ordner einsammelt und geordnet zur Verfügung stellt.
Das ganze soll nun ein Powershell Script werden. Das Einsammeln der Scripts an sich ist nicht das Problem. Ich tue mich aber schwer die Abfrage nach Dateiänderungsdatum und heutigem Datum umzusetzten. Auch hab ich keine Idee, wie ich es hinbekomme, die Funktion des Servers im späteren Ordnerpfad der IP anzufügen.
Hier mal das aktuelle Batch-Script:
@echo off
setlocal EnableDelayedExpansion
::--------------------------------------------------------------------
:: load environment
call D:\enterprise\bin\tools\enterprise_environment.bat || (
echo environment file not found or not executable under %~dp0\enterprise_environment.bat
exit /b 17
)
::--------------------------------------------------------------------
::-----------------------------------------------------
::Systemunabhängiges Datum erzeugen
for /f %%g in ('wmic os get localdatetime ^| find "."') do set _DTS=%%g
set _day=%_DTS:~6,2%
set _month=%_DTS:~4,2%
set _year=%_DTS:~0,4%
set _hour=%_DTS:~8,2%
set _minute=%_DTS:~10,2%
set _datestamp=%_DTS:~0,8%
set _timestamp=%_day%%_month%%_year%_%_hour%%_minute%
set _hosts=10.241.182.239,10.241.183.58,10.241.183.17,10.241.183.77,10.241.182.229,10.241.183.11,10.241.183.82,10.241.183.56,10.241.183.72,
set _hosts_function=MySQL,Client1,WEBSERVER1,WEBSERVER2,BACKUP,INTERFACE1,INTERFACE2,INTERFACE3,INTERFACE5,
set _storage=d:\temp\hypercare-logs
set "nowDate=%date:~0,10%"
set _title=SBB_PROD
set _zipper=D:\enterprise\bin\tools\7z.exe
set _root_dir=%_storage%\%_title%_%_timestamp%
mkdir %_root_dir%
if not exist %_root_dir% (
echo could not create '%_root_dir%'
goto :error
)
::--------------------------------------------------------------------
set i=0
for %%h in (%_hosts%) do set /A i+=1 & set _hosts[!i!]=%%h
set i=0
for %%f in (%_hosts_function%) do set /A i+=1 & set _hosts_function[!i!]=%%f
set n=%i%
::--------------------------------------------------------------------
for /L %%i in (1,1,%n%) do (
set _host=!_hosts[%%i]!
set _hostname=!_hosts[%%i]!-!_hosts_function[%%i]!
set _current_dir=%_root_dir%\!_hostname!
echo !_current_dir!
mkdir !_current_dir!
pushd \\!_host!\d$
for /f "tokens=*" %%a in ('dir /b /s /a-d "\enterprise\log\*.*"') do (
set "fileTime=%%~ta"
set "fileDate=!fileTime:~0,10!" & rem Dateidatum von Dateizeit abtrennen
if [!fileDate!]==[%nowDate%] (
echo %%~a, Tag der letzen Aenderung=!fileDate! , Heutiger Tag=%nowDate%
if [%%~xa] neq [.zip] copy /b "%%a" "!_current_dir!" >nul 2>&1 && echo %%~nxa nach !_current_dir! kopiert... || echo %%~nxa Zugriff verweigert ^^!^^!
echo:
)
)
for /f "tokens=*" %%a in ('dir /b /s /a-d "\3rdparty\apache-tomcat-9\logs\*.*"') do (
set "fileTime=%%~ta"
set "fileDate=!fileTime:~0,10!" & rem Dateidatum von Dateizeit abtrennen
if [!fileDate!]==[%nowDate%] (
echo %%~a, Tag der letzen Aenderung=!fileDate! , Heutiger Tag=%nowDate%
if [%%~xa] neq [.zip] copy /b "%%a" "!_current_dir!" >nul 2>&1 && echo %%~nxa nach !_current_dir! kopiert... || echo %%~nxa Zugriff verweigert ^^!^^!
echo:
)
)
for /f "tokens=*" %%a in ('dir /b /s /a-d "\enterprise\dat\mysql57\data\*.err"') do (
copy /b "%%a" "!_current_dir!"
)
xcopy /EY \enterprise\conf !_current_dir!\conf\
popd
)
:end
::Zip Archiv erzeugen
::--------------------------------------------------------------------
%_zipper% u "%_root_dir%".zip "%_root_dir%"
echo success
::Verzeichnis löschen
::--------------------------------------------------------------------
rd /s /q %_root_dir%"
exit /b 0
:error
echo error
exit /b 1
endlocal
Dieser Part:
set _hosts=10.241.182.239,10.241.183.58,10.241.183.17,10.241.183.77,10.241.182.229,10.241.183.11,10.241.183.82,10.241.183.56,10.241.183.72,
set _hosts_function=MySQL,Client1,WEBSERVER1,WEBSERVER2,BACKUP,INTERFACE1,INTERFACE2,INTERFACE3,INTERFACE5,
und dieser Part :
set "fileTime=%%~ta"
set "fileDate=!fileTime:~0,10!" & rem Dateidatum von Dateizeit abtrennen
if [!fileDate!]==[%nowDate%] (
echo %%~a, Tag der letzen Aenderung=!fileDate! , Heutiger Tag=%nowDate%
if [%%~xa] neq [.zip] copy /b "%%a" "!_current_dir!"
sind meine Sorgenkinder
Vielen Dank schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7736523964
Url: https://administrator.de/contentid/7736523964
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
Arrays in Powershell:
Datum von Dateien vergleichen und kopieren
Zeppel
$computers ="10.241.182.239","10.241.183.58","10.241.183.17","10.241.183.77"
foreach($computer in $computers){
Get-ChildItem "\\$computer\share\enterprise\log" -File -Filter *.log | ?{$_.LastWriteTime.Date -eq (get-date).Date}) | copy-item -Destination "D:\Irgendwo\$computer\lokal" -verbose
}
Zeppel
Hier mal nur ein Snipped mit dem du prinzipiell mal den Zeitraum einschränken kannst. Für den Rest ist es mir schon zu spät:
Geht natürlich auch mit Änderungs-Zeit:
Grüße!
Get-ChildItem -Path "DEIN PFAD" -Recurse | ? {$_.CreationTime -gt (get-date).AddDays(-10) -and $_.CreationTime -lt (get-date).AddDays(-5) }
Geht natürlich auch mit Änderungs-Zeit:
Get-ChildItem -Path "DEIN PFAD" -Recurse | ? {$_.LastWriteTime -gt (get-date).AddDays(-10) -and $_.LastWriteTime -lt (get-date).AddDays(-5) }
Grüße!