![]() |
Tasklist in CSV-Datei schreiben
Hallo zusammen,
ich habe mehrer Terminalserver laufen, die mit Loadbalancing die Anwender verteilen. Nun hängen sich ganz gerne die Web-Browser auf und ich muss die User wieder freischalten in dem ich den Prozess abschieße. Jetzt wollte ich die Tasks in eine CSV-Datei schreiben um sie erstmal zu durchsuchen. Mit der DOS-Konsole funktioniert es super.
Code:
Wenn ich es aus Delhpi versuche, wird zwar die Datei tasklist.csv erzeugt, sie bleibt aber leer
tasklist /s 192.168.178.10 /u domain\administrator /p password /fi "Username eq User1" fo/csv >> c:\tasklist.csv
Delphi-Quellcode:
Kann mir jemand einen Tipp geben?
ShellExecute(0, nil, 'cmd.exe', 'tasklist /s 192.168.178.10 /u domain\administrator /p password /fi "Username eq User1" fo/csv >> c:\tasklist.csv', nil, SW_SHOWNORMAL);
|
AW: Tasklist in CSV-Datei schreiben
Kann es sein dass du einfach nur den "/C"-Parameter für die cmd.exe vergessen hast voranzustellen?
|
AW: Tasklist in CSV-Datei schreiben
Ich weiß jetzt leider nicht, was Du mit dem /C-Parameter meinst. Es wird ja die Datei c:\tasklist.csv erzeugt. Also werden Teile des Befehls ja durchgeführt. Wenn ich den Befehl in der DOS-Konsole eingebe, dauert es eine Zeit, bis die Datei vollständig erzeugt ist. Wenn ich es mit Delphi versuche, erscheint nur Kurz das Konsolen-Fenster und schließt sich dann gleich wieder. Also tippe ich, dass die Daten nicht in die Datei geschrieben werden, weil das Konsolen-Fenster zu früh geschlossen wird.
|
AW: Tasklist in CSV-Datei schreiben
/C für "Hey, cmd.exe, führe das aus, was ich dir als Parameter gebe und beende dich dann"
Es fehlte wohl weiterhin noch /A für "Ausgabe an Standard-Pipe im ANSI-Format" Folgendes Programm
Delphi-Quellcode:
erzeugt bei mir eine Datei "x:\test.txt" mit dem Inhalt
program Project1;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, WinApi.Windows, WinApi.ShellApi; begin try if ShellExecute( 0, nil, 'cmd', '/A /c tasklist /s 192.168.178.10 /u domain\administrator /p password /fi "Username eq User1" /fo csv > x:\test.txt', nil, SW_SHOWNORMAL ) < 32 then RaiseLastOSError(); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; readln; end.
Code:
Führe ich das gleiche in der Konsole aus bekomme ich allerdings noch etwas mehr:
INFORMATION: Es werden keine Aufgaben mit den angegebenen Kriterien ausgeführt.
Code:
Wenn du den "stderr"-Ausgabepfad (Fehler und Warnungen) auch in der Datei haben willst musst du die eine Zeile noch so anpassen:
WARNUNG: Benutzeranmeldeinformationen können für lokale Verbindungen nicht verwe
ndet werden. INFORMATION: Es werden keine Aufgaben mit den angegebenen Kriterien ausgeführt.
Code:
'/A /c tasklist /s 192.168.178.10 /u domain\administrator /p password /fi "Username eq User1" /fo csv 1> x:\log.txt 2>&1'
PS: Aber ich glaube das Programm erstmal auf die Festplatte schreiben lassen, dann warten bis es fertig ist um dann diese Datei wieder einzulesen, das geht sicherlich besser. Das ging doch irgendwie, dass man z.B. "tasklist" startet und seinen stdOut direkt im Delphi-Programm abgreift? |
AW: Tasklist in CSV-Datei schreiben
Vielen Dank, schöner Günther,:P:P
es funktioniert und ich versuche jetzt noch, dass zu verstehen. Das in der DOS-Konsole noch mehr angezeigt wird, ist für mich i.M. nicht wichtig. Die Daten, die ich benötige, erhalte ich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz