citroendsvier
Goto Top

VBS als Aufgabe startet Programm nicht

Guten Abend,

Vorneweg: Ich konnte mich nicht entscheiden, ob das hier eher Thema Windows 7 oder Shell ist.

Ich habe eine VBS geschrieben, die per Aufgabenplanung alle 5 min läuft. Sie prüft, ob eine Datei existiert, und startet, wenn sie existiert, Teamviewer. Den Vorgang speichert sie in eine Log Datei, deshalb sehe ich, dass alles andere läuft. Nur der Befehl

WshShell.run "D:\Programme\Teamviewer\Teamviewer.exe"

funktioniert wohl nicht richtig. Wenn ich ihn durch ein WScript.Echo ersetze, bekomme ich auch keine Meldung. Also in der Aufgabenplanung nachgesehen, und gesehen, dass die Aufgabe länger als 1:30 min ausgeführt wird. Manuell Beendet und neugestartet (Die Aufgabe, nicht das Skript) und wieder nichts passiert. In die LogDatei wird aber trotzdem geschrieben.

Kann es sein, dass ich der Aufgabe noch weitere Rechte geben muss, um ein Programm zu starten? Hier ist nochmal das gesamte Skript:

Option Explicit
' Variablen für 1. Teil
Dim FileSystemObject, File, WshShell, Drive, Path, Time, User
'On Error Resume Next
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
if FileSystemObject.FileExists("D:\Teamviewer.txt") Then
Set File = FileSystemObject.GetFile("D:\Teamviewer.txt")
End if
Set WshShell = CreateObject("WScript.Shell")
' Systemviariablen importieren
Drive = WshShell.ExpandEnvironmentStrings("%~d0")
User = WshShell.ExpandEnvironmentStrings("%Username%")
' Drive mit Path funktioniert noch nicht ganz...
'Path = Drive & "\VBScript\Aufgabe LogFile\LogFile.log"
Path = "J:\VBScript\LogFile.log"
' Zeit festlegen
Time = now()

'
' zweiter Teil *
'

Dim Erfolgreich, LogFile, YesNo
if FileSystemObject.FileExists(File) Then
WshShell.run "D:\Programme\Teamviewer\Teamviewer.exe"
WScript.Echo "Datei gefunden"
' Datei wird später gelöscht
Erfolgreich = "1"
Else
Erfolgreich = "0"
End if

if FileSystemObject.FileExists(Path) Then
Const ForAppending = 8
Set LogFile = FileSystemObject.OpenTextFile(Path, ForAppending, True)
Else
Set LogFile = FileSystemObject.CreateTextFile(Path, True)
End if

if Erfolgreich = "1" then
Erfolgreich = "erfolgreich."
Else
Erfolgreich = "nicht erfolgreich."
YesNo = "nicht "
End if
LogFile.WriteLine(Time & " - " & "Aufgabenausfuehrung war " & Erfolgreich & " Teamviewer wurde " & YesNo & "gestartet.")
LogFile.WriteLine("Benutzername: "& User)
LogFile.WriteLine("-----------------------------------------------------------------------------------------------------")
Set Erfolgreich = nothing
Set YesNo = nothing
LogFile.Close

if FileSystemObject.FileExists(File) Then
FileSystemObject.deleteFile(File)
End if

Ich bin für jede Antwort dankbar!

LG DS4

Content-Key: 247286

Url: https://administrator.de/contentid/247286

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: colinardo
Lösung colinardo 24.08.2014 aktualisiert um 18:06:58 Uhr
Goto Top
Moin DS4,
unter welchem Sicherheitskontext läuft denn deine Aufgabe im Aufgabenplaner ?
Ein WScript.Echo "Datei gefunden" in deinem Script bewirkt, wenn es unter einem anderen Useraccount im Taskplaner gestartet wird, das das Script mit der Messagebox unsichtbar im Hintergrund hängt, da ja keiner die Messagebox wegklicken kann !!
Außerdem sei natürlich erwähnt das Teamviewer nicht sichtbar im Hintergrund gestartet wird, wenn du einen anderen als den aktuellen User für die Ausführung der Aufgabe verwendest, was du im Taskmanager überprüfen kannst.
Wenn die Anwendung nicht in den Tasks aufgeführt wird, prüfe ob der Useraccount mit dem du den Task ausführst die entsprechenden Rechte auf den Ordner hat im dem die Teamviewer-Exe liegt und hake das Kästchen bei Mit höchsten Privilegien ausführen im Task an, dann läuft das wie gewünscht.

Grüße Uwe
Mitglied: citroendsvier
citroendsvier 24.08.2014 um 18:06:31 Uhr
Goto Top
Den Haken bei ,,Mit höchsten Priviligien" habe ich gesetzt, ändert nichts. Des weiteren arbeite ich nur mit einem Useraccount - dort kann das Problem auch nicht liegen. Wenn ich das Skript manuell anklicke, läufts ja auch. Und TV startet im Vordergrund, als Fenster.

Ich werde das Problem jetzt anders lösen: Ich schreibe ein weiteres Skript, was dann das oben geschriebene alle 5 min startet. Das neue Skript kommt dann in den Startup Ordner.. ;)

Aber trotzdem danke für deine Hilfe!