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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 247286
Url: https://administrator.de/contentid/247286
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
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
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