Datum in .txt aus einer .bat
Guten Morgen,
wir nutzen folgendes Script um bei einem Logon eines Clients in der Domäne festzustellen, wer an welchem Rechner angemeldet war und ziehen uns hierbei noch ein paar Hardwareinfos:
klappt auch soweit, ich wollte nun noch das Datum und die Uhrzeit in die Datei rein schreiben. Aber irgendwie erhalte ich nur chinesische Zeichen...
Hat jemand eine Idee? Wenn ich in einer CMD z.B. echo Datum=%date% >> %file% eingebe, erhalte ich in der Datei das gewünschte Ergebnis.
Grüße und danke vorab
wir nutzen folgendes Script um bei einem Logon eines Clients in der Domäne festzustellen, wer an welchem Rechner angemeldet war und ziehen uns hierbei noch ein paar Hardwareinfos:
@echo off
set file=\\PATH\%COMPUTERNAME%.txt
wmic bios get serialnumber > %file%
rem wmic nicconfig get DNSHostName >> %file%
wmic os get Name >> %file%
wmic nicconfig get IpAddress >> %file%
wmic nicconfig get MACAddress >> %file%
echo Datum=%date% >> %file%
echo Zeit=%time% >> %file%
klappt auch soweit, ich wollte nun noch das Datum und die Uhrzeit in die Datei rein schreiben. Aber irgendwie erhalte ich nur chinesische Zeichen...
Hat jemand eine Idee? Wenn ich in einer CMD z.B. echo Datum=%date% >> %file% eingebe, erhalte ich in der Datei das gewünschte Ergebnis.
Grüße und danke vorab
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666374
Url: https://administrator.de/contentid/666374
Ausgedruckt am: 08.11.2024 um 05:11 Uhr
8 Kommentare
Neuester Kommentar
Moin,
wozu das ganze und wieso so umständlich?
In Zeile 3 hast du den Computernamen, ok. Aber wieso brauchst du dann in Zeile 7 noch das OS? Das hast du doch im AD stehen. Und die Datei wird jedes mal in Zeile 5 überschrieben also kannst du auch keine Historie aufbauen. Und wieso Batch und nicht Powershell? 2 Zeilen für Datum und Uhrzeit was mit get-Date() in Powershell schon fertig wäre.
Gruß
Doskias
wozu das ganze und wieso so umständlich?
In Zeile 3 hast du den Computernamen, ok. Aber wieso brauchst du dann in Zeile 7 noch das OS? Das hast du doch im AD stehen. Und die Datei wird jedes mal in Zeile 5 überschrieben also kannst du auch keine Historie aufbauen. Und wieso Batch und nicht Powershell? 2 Zeilen für Datum und Uhrzeit was mit get-Date() in Powershell schon fertig wäre.
Gruß
Doskias
Das kommt weil WMIC das Encoding der Shell nicht beachtet und standardmäßig in Unicode über STDOUT schreibt ...
Gruß w.
@echo off
chcp 1252 >nul
set "file=\\PATH\%COMPUTERNAME%.txt"
>"%file%" (
for /f "tokens=2 delims==" %%a in ('wmic bios get serialnumber /value') do echo Serial=%%a
for /f "tokens=2 delims==" %%a in ('wmic os get Name /value') do echo OS=%%a
for /f "tokens=2 delims==" %%a in ('wmic nicconfig where IPEnabled^=True get IpAddress /value') do echo IP=%%a
for /f "tokens=2 delims==" %%a in ('wmic nicconfig where IPEnabled^=True get MACAddress /value') do echo MAC=%%a
echo Datum=%date%
echo Zeit=%time%
)
Zitat von @lupolo:
1. wmic bios get serialnumber: Bringt dir was? Die ändert sich nicht, wieso muss die bei jedem Start abgefragt werden?
2. rem wmic nicconfig get DNSHostName: Wozu das?
3. wmic os get Name: Ändert sich ebenfalls nicht. Weder die Windows Version noch die Partition auf der es installiert ist. Gleiche Frage wie oben: Wieso bei jedem Start abfragen?
4. wmic nicconfig get IpAddress: Ändert sich auch nicht permanent, hängt ja vom DHCP ab
5. wmic nicconfig get MACAddress: Ändert sich ebenfalls nie.
Sinnvoll wäre meiner Meinung nach:
1. Pro Rechner eine TXT-Datei
2. Oben Seriennummer, Name, Mac-Adresse
3. DHCP Lease auf 90 Tage (dann hast du so gut wie nie sich ändernde Adressen und brauchst die IP nicht mit loggen. Zuordnung MAC-> IP hast du ja im DHCP.
4. Zuordnung Rechnername und OS hast du im AD
5. Bei jeder Anmeldung die Textdatei um das aktuelle Datum erweitern. Dann hast du eine Historie.
Das würde in meinen Augen mehr Sinn machen als einfach immer nur zu Protokollieren wann sich irgendwer (Benutzername wird ja nicht mit protokolliert) am Rechner angemeldet hat. Wobei mir sich der tiefere Sinn noch nicht erschließt, was mit den gesammelten Daten dann gemacht werden soll.
Gruß
Doskias
@Doskias.
Hatte mir tatsächlich auch schon überlegt das in PowerShell umzubauen. Ich weiß aber nicht, ob ein PS Script vielleicht mehr Ressourcen beansprcht, da das Script via GPO ausgeführt wird.
Keine Ahnung aber bei den paar Zeilen wird es, selbst wenn, nicht ins Gewicht fallen. Wir reden hier ja nicht von Minuten, sondern von (wenn überhaupt) Zehntel-Sekunden.Hatte mir tatsächlich auch schon überlegt das in PowerShell umzubauen. Ich weiß aber nicht, ob ein PS Script vielleicht mehr Ressourcen beansprcht, da das Script via GPO ausgeführt wird.
Das war so von den Vorgängern gewollt, dass immer nur bei dem Client, der letzte User angezeigt wird.
Das heißt ja aber nicht, dass du das so übernehmen musst. Wenn du dir wg. der Umstellung von Batch auf PowerShell schon Gedanken bezüglich der Performance machst, dann lasse ich die Aussage (das war vorher schon so) nicht gelten . Wenn du nicht weißt wofür du das brauchst, dann hast du hier schon einen unnötigen Eingriff in die Performance. Auch das was du abfragst, ist und bleibt teilweise unsinnig:1. wmic bios get serialnumber: Bringt dir was? Die ändert sich nicht, wieso muss die bei jedem Start abgefragt werden?
2. rem wmic nicconfig get DNSHostName: Wozu das?
3. wmic os get Name: Ändert sich ebenfalls nicht. Weder die Windows Version noch die Partition auf der es installiert ist. Gleiche Frage wie oben: Wieso bei jedem Start abfragen?
4. wmic nicconfig get IpAddress: Ändert sich auch nicht permanent, hängt ja vom DHCP ab
5. wmic nicconfig get MACAddress: Ändert sich ebenfalls nie.
Sinnvoll wäre meiner Meinung nach:
1. Pro Rechner eine TXT-Datei
2. Oben Seriennummer, Name, Mac-Adresse
3. DHCP Lease auf 90 Tage (dann hast du so gut wie nie sich ändernde Adressen und brauchst die IP nicht mit loggen. Zuordnung MAC-> IP hast du ja im DHCP.
4. Zuordnung Rechnername und OS hast du im AD
5. Bei jeder Anmeldung die Textdatei um das aktuelle Datum erweitern. Dann hast du eine Historie.
Das würde in meinen Augen mehr Sinn machen als einfach immer nur zu Protokollieren wann sich irgendwer (Benutzername wird ja nicht mit protokolliert) am Rechner angemeldet hat. Wobei mir sich der tiefere Sinn noch nicht erschließt, was mit den gesammelten Daten dann gemacht werden soll.
Gruß
Doskias
Hatte mir tatsächlich auch schon überlegt das in PowerShell umzubauen. Ich weiß aber nicht, ob ein PS Script vielleicht mehr Ressourcen beansprcht, da das Script via GPO ausgeführt wird.
Kein Problem. Wir nutzen überall PS und keine Ressourcen-Probleme odgl.