tollo: VBScript: Ausgabe eines Programmes speichern

Hallo Forum, guten Morgen

Google hat mir nicht weitergeholfen, da es meine eingegebenen Suchbegriffe missinterpretiert.
In meinem VBScript wird ein Konsolen-Programm (PsLogList, ein Windows-Server-Programm um die eventlog auszulesen) gestartet (siehe unten), das eine bestimmte Ausgabe erzeugt. Diese Ausgabe möchte ich in eine Variable speichern, damit ich sie auswerten kann.
Momentan habe ich nur die Möglichkeit gefunden, die Ausgabe des Programms in eine Text-Datei zu leiten, die vom VBScript dann gelesen wird. Aber selbst das funktioniert nicht (habe den Grund noch nicht erarbeiten können, der Code führt den psloglist-Befehl vermutlich nicht oder nicht richtig aus).
Das ist bisher mein Script:

-----------------------------------------------------
Dim a, b
Set a = CreateObject("WScript.Shell")
b = a.Run("PsLogList -n 1 -i 1500 -s Application > eventlog.txt")

Dim objReadFile
Dim objFSO
Dim contents

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objReadFile = objFSO.OpenTextFile("eventlog.txt", 1, False)
contents = objReadFile.ReadAll

objReadFile.close
-----------------------------------------------------

Was ich möchte: Den Umweg über die Datei "eventlog.txt" zu umgehen, und die Konsolen-Ausgabe direkt im VBScript in eine Variable zu packen. Kennt sich da jemand besser als Google und ich?

MfG
tollo

  1. Hallo

    Kannst du PSLogList ändern oder ist das ein fertiges Programm?

    Wenn es ein Windows-Programm ist und du an den Code rankommst, dann gibt es eine Windows-API mit dem Namen ExitProcess und mit der kannst du zumindest Integer-Werte rückschreiben.

    Herzliche Grüße
    Wolfgang

    1. Hi

      Kannst du PSLogList ändern oder ist das ein fertiges Programm?

      Nein, das ist ein von Windows Server 2003 Enterprise in den Resource Kits mitgeliefertes Programm, das die eventlogs auslesen kann.
      An den Code komm ich natürlich nicht ran. Selbst wenn, dann dürfte ich ihn nicht ändern.
      Habe aber jetzt gerade eine Möglichkeit gefunden, die aussieht wie folgt:

      Dim a, b, c
      Set a = CreateObject("WScript.Shell")
      Set b = a.Exec("PsLogList -n 1 -i 1500 -s Application")

      c = LCase(b.StdOut.ReadAll)

      Also nicht RUN, sondern EXEC, mit dem man aus dem StdOut lesen kann.
      Mir stellt sich immer mehr die Frage, ob es irgendwo eine Liste der Methoden aller Objekte gibt (also die, die nach dem . stehen). Ohne die ist für mich ein effizientes Arbeiten nicht möglich...

      Lg
      tollo

      1. Also nicht RUN, sondern EXEC, mit dem man aus dem StdOut lesen kann.

        Stimmt - sorry daran habe ich nicht gedacht. Run startet das Programm im eigenen Thread und macht weiter, ohne auf das Programmende zu warten. EXEC wartet auf das Ende. Also die Statusübergabe würde auch nur bei EXEC funktionieren.

        Mir stellt sich immer mehr die Frage, ob es irgendwo eine Liste der Methoden aller Objekte gibt (also die, die nach dem . stehen). Ohne die ist für mich ein effizientes Arbeiten nicht möglich...

        Die gibt es und zwar in den MSDN-Ausgaben.

        Shell-Object und FSO

        Wolfgang Uhr

  2. Hallo,

    Google hat mir nicht weitergeholfen, da es meine eingegebenen Suchbegriffe missinterpretiert.

    die hiesige Suche hätte Dir helfen können:

    http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=vb-script+ausgabe+speichern+variable&lang=on&feld=alle&index_7=on&hits=100

    Freundliche Grüße

    Vinzenz