Zeiten von Servern abfragen und anschließend ordentlich formatiert per Email senden
Moin Administrator Forum,
ich habe zu meinem Problem in diesem Forum schon viel Hilfe gefunden, und wende mich daher jetzt mit meinem letzten kleinen Problem an euch.
Aber erst Mal von Anfang an:
Problem:
Auf den Servern sind Zeitunterschiede aufgetreten, die zu einigen Problemen geführt haben. Eigentlich sollten die Server ihre Zeit ja regelmäßig vom unternehmenseigenen Zeitserver abfragen, dass haben viele aber nur erstmalig beim Start gemacht. Die Server, die dann schon einige hundert Tage ohne Reboot online waren, hatten dann ganz andere Uhrzeiten.
Daher möchte ich mir jetzt täglich eine Email senden lassen mit den aktuellen Serverzeiten, hier mein aktuelles Skript:
Ich habe zwei txt Dateien im Vorfeld angefertigt, die Server.txt enthält alle Server, die recipients.txt alle Empfänger.
Die erste For Schleife führt für jeden eingetragenen Server net time aus und leitet die Ausgabe in die times.txt.
Anschließend lösche ich den für mich unnötigen Satz The command completed mit frgep und erstelle die neue txt newtimes.txt.
Dann lösche ich noch die Wörter Current time at und ersetze is durch mehrere Tabstopps.
Dadurch wird aus der unformatierten Ausgabe
Die Email versende ich anschließend einfach mit blat, klappt einwandfrei.
Das Problem:
Wenn der Servername zu lang ist, rutscht die Zeit zu weit nach rechts:
Nun hätte ich aber gerne, das alle Zeiten schön übersichtlich untereinander in einer Reihe stehen
Leider komme ich nicht weiter, mit den Tabstopps die ich einfüge wird das Ganze ja einfach weiter nach rechts verschoben..
Würde ich das ganze per Hand machen, würde ich mit Excel Daten in Spalten benutzen und gut ist. Allerdings kenne ich keine Skript Funktion, die mir so etwas machen könnte.
Es wäre echt super wenn Ihr mir bei dem letzten Feinschliff helfen könntet!
Vielen Dank und schöne Grüße,
user2367
ich habe zu meinem Problem in diesem Forum schon viel Hilfe gefunden, und wende mich daher jetzt mit meinem letzten kleinen Problem an euch.
Aber erst Mal von Anfang an:
Problem:
Auf den Servern sind Zeitunterschiede aufgetreten, die zu einigen Problemen geführt haben. Eigentlich sollten die Server ihre Zeit ja regelmäßig vom unternehmenseigenen Zeitserver abfragen, dass haben viele aber nur erstmalig beim Start gemacht. Die Server, die dann schon einige hundert Tage ohne Reboot online waren, hatten dann ganz andere Uhrzeiten.
Daher möchte ich mir jetzt täglich eine Email senden lassen mit den aktuellen Serverzeiten, hier mein aktuelles Skript:
cd "C:\Display Server Time"
FOR /F %%z IN (server.txt) DO net time \\%%z >>times.txt
fgrep -v "The command completed" times.txt>newtimes.txt
@echo off & setlocal enabledelayedexpansion
set "Datei=newtimes.txt"
set "Von=Current Time at \\"
set "Nach="
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & >>"%t%" echo !Line!
move "%t%" "%Datei%"
@echo off & setlocal enabledelayedexpansion
set "Datei=newtimes.txt"
set "Von=is"
set "Nach= "
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set "Line=!Line:%Von%=%Nach%!" & >>"%t%" echo !Line!
move "%t%" "%Datei%"
blat.exe
blat newtimes.txt -tf recipients.txt -subject "Aktuelle Serverzeiten"
del times.txt
del newtimes.txt
Ich habe zwei txt Dateien im Vorfeld angefertigt, die Server.txt enthält alle Server, die recipients.txt alle Empfänger.
Die erste For Schleife führt für jeden eingetragenen Server net time aus und leitet die Ausgabe in die times.txt.
Anschließend lösche ich den für mich unnötigen Satz The command completed mit frgep und erstelle die neue txt newtimes.txt.
Dann lösche ich noch die Wörter Current time at und ersetze is durch mehrere Tabstopps.
Dadurch wird aus der unformatierten Ausgabe
Current time at \\sap01 is 08.12.2015 08:45:02
The command completed successfully.
Current time at \\sap02 is 08.12.2015 08:45:02
The command completed successfully.
sap01 08.12.2015 08:45:02
sap02 08.12.2015 08:45:02
Die Email versende ich anschließend einfach mit blat, klappt einwandfrei.
Das Problem:
Wenn der Servername zu lang ist, rutscht die Zeit zu weit nach rechts:
sql01 08.12.2015 08:45:02
saperion01 08.12.2015 08:45:02
sap01 08.12.2015 08:45:02
testerv01 08.12.2015 08:45:04
sap02 08.12.2015 08:45:02
Nun hätte ich aber gerne, das alle Zeiten schön übersichtlich untereinander in einer Reihe stehen
Leider komme ich nicht weiter, mit den Tabstopps die ich einfüge wird das Ganze ja einfach weiter nach rechts verschoben..
Würde ich das ganze per Hand machen, würde ich mit Excel Daten in Spalten benutzen und gut ist. Allerdings kenne ich keine Skript Funktion, die mir so etwas machen könnte.
Es wäre echt super wenn Ihr mir bei dem letzten Feinschliff helfen könntet!
Vielen Dank und schöne Grüße,
user2367
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290360
Url: https://administrator.de/forum/zeiten-von-servern-abfragen-und-anschliessend-ordentlich-formatiert-per-email-senden-290360.html
Ausgedruckt am: 30.04.2025 um 08:04 Uhr
11 Kommentare
Neuester Kommentar

Powershell EInzeiler:
Mit
kommst du auch zuverlässig an die Zeit, ohne dieses Stringauslesegedöhns ...,was sich übrigens hiermit machen lässt:
Die Server vernünftig zu konfigurieren wäre aber Zielgerichteter...
Gruß jodel32
gc 'c:\servers.txt' | ?{Test-Connection -ComputerName $_ -Count 1 -Quiet} | %{"$_ = " + ((gwmi -Computername $_ Win32_OperatingSystem) | %{$_.ConverttoDateTime($_.LocalDateTime)})} | out-file 'C:\zeiten.txt'
Mit
wmic /node:HOSTXYZ os get localdatetime /format:csv
for /f "tokens=6,7" %%a in ('net time \\localhost ^| findstr ":"') do @echo %%a %%b
Die Server vernünftig zu konfigurieren wäre aber Zielgerichteter...
Gruß jodel32
Hallo,
Wie sind die Server Konfiguriert - eine Domäne - jeder macht eigene Domäne - Workgroup - jeder tut was er will?
https://technet.microsoft.com/en-us/library/cc773263(v=ws.10).aspx
https://technet.microsoft.com/en-us/library/cc773013(v=ws.10).aspx
https://technet.microsoft.com/de-de/library/cc816748(v=ws.10).aspx
https://technet.microsoft.com/en-us/library/cc786897(v=ws.10).aspx
http://www.timetoolsglobal.com/2013/06/21/how-to-synchronize-microsoft- ...
http://blogs.technet.com/b/nepapfe/archive/2013/03/01/it-s-simple-time- ...
http://serverfault.com/questions/307398/how-can-i-sync-time-between-two ...
http://superuser.com/questions/577495/how-can-i-sync-date-time-in-two-c ...
http://stackoverflow.com/questions/389417/synchronization-of-clocks-bet ...
http://www.howtogeek.com/tips/how-to-sync-your-linux-server-time-with-n ...
http://askubuntu.com/questions/254826/how-to-force-a-clock-update-using ...
http://www.tecmint.com/how-to-synchronize-time-with-ntp-server-in-ubunt ...
Gruß,
Peter
Wie sind die Server Konfiguriert - eine Domäne - jeder macht eigene Domäne - Workgroup - jeder tut was er will?
Eigentlich sollten die Server ihre Zeit ja regelmäßig vom unternehmenseigenen Zeitserver abfragen
Aber nur wenn entsprechend Konfiguriert bzw. die Voraussetzungen stimmen.dass haben viele aber nur erstmalig beim Start gemacht.
Normales Verhalten von Server beim Starten.Die Server, die dann schon einige hundert Tage ohne Reboot online waren, hatten dann ganz andere Uhrzeiten.
Vermutlich weil die keinen Zeit Server fanden oder nicht erreichen konnten. Steht im Ereignisprotokoll schön drin.Daher möchte ich mir jetzt täglich eine Email senden lassen mit den aktuellen Serverzeiten, hier mein aktuelles Skript:
Man könnte auch die Server richtig konfigurieren....https://technet.microsoft.com/en-us/library/cc773263(v=ws.10).aspx
https://technet.microsoft.com/en-us/library/cc773013(v=ws.10).aspx
https://technet.microsoft.com/de-de/library/cc816748(v=ws.10).aspx
https://technet.microsoft.com/en-us/library/cc786897(v=ws.10).aspx
http://www.timetoolsglobal.com/2013/06/21/how-to-synchronize-microsoft- ...
http://blogs.technet.com/b/nepapfe/archive/2013/03/01/it-s-simple-time- ...
http://serverfault.com/questions/307398/how-can-i-sync-time-between-two ...
http://superuser.com/questions/577495/how-can-i-sync-date-time-in-two-c ...
http://stackoverflow.com/questions/389417/synchronization-of-clocks-bet ...
http://www.howtogeek.com/tips/how-to-sync-your-linux-server-time-with-n ...
http://askubuntu.com/questions/254826/how-to-force-a-clock-update-using ...
http://www.tecmint.com/how-to-synchronize-time-with-ntp-server-in-ubunt ...
Gruß,
Peter

Zitat von @user2367:
Zeichen 91 ist der Teil nach ComputerName, weißt du woran das genau liegt?
Finde die Lösung leider nicht
Wie sieht deine Textdatei aus, bzw wie ist diese aufgebaut, evt. auch in UTF8?Zeichen 91 ist der Teil nach ComputerName, weißt du woran das genau liegt?
Finde die Lösung leider nicht
Funktioniert hier soweit problemlos ...
Powershell-Version ? (zeigt dir $PSVersiontable auf der PS-Konsole)

Zitat von @user2367:
Powershell Version ist die 2.0
Dann erst mal Update, vollkommen veraltet und voller Fehler ...Wie sieht deine Textdatei aus, bzw wie ist diese aufgebaut, evt. auch in UTF8?
Funktioniert hier soweit problemlos ...
Powershell-Version ? (zeigt dir $PSVersiontable auf der PS-Konsole)
Funktioniert hier soweit problemlos ...
Powershell-Version ? (zeigt dir $PSVersiontable auf der PS-Konsole)
Powershell Version ist die 2.0
Notepad++ zeigt mir außerdem noch an, dass es sich um UTF-8 w/o BOM handelt.
Ab PS 3.0 gibt es den Parameter -Encoding bei Get-Content, aber mal eine einfach Ausgabe der Rechnernamen in der Shell sollte Klarheit schaffen ob das die Ursache ist. Ansonsten einfach mal als ANSI speichern und durchjagen. Kommt man eigentlich auch selber drauf.
Werde ich nicht schlau draus, denn wenn ich Test-Connection manuell ausführe wird der Zugriff nicht verweigert..
Das liegt auch nicht an Test-Connection sondern an Get-WMIObject, sagt die Fehlermeldung ja auch ...Du hast mit deinem Account nicht genügend Rechte um per WMI die Clients remote abzufragen, das ist der Grund !!
Die Clients müssen natürlich ebenfalls per WMI remote verwaltbar sein (Firewall Regeln der Clients checken).
