Pracuję nad VBScript, aby co tydzień uruchamiać ponownie wszystkie maszyny w naszej sieci. Chcę uruchomić ten skrypt za pomocą Harmonogramu zadań. Skrypt działa o 3:00 rano, ale istnieje niewielka szansa, że użytkownicy mogą być w tym czasie w sieci, i muszę dać im możliwość zakończenia ponownego uruchamiania. Jeśli to zrobią, chciałbym, aby ponowne uruchomienie nastąpiło następnej nocy o 3:00 rano. Ustawiłem Harmonogram zadań, aby powtarzał się w ten sposób.
Jak na razie dobrze. Problem polega na tym, że jeśli użytkownik wybierze opcję „Anuluj” w moim skrypcie, Harmonogram zadań nie zobaczy mojego zadania jako zakończonego niepowodzeniem i nie uruchomi go ponownie następnego dnia.
Jakieś pomysły? Czy mogę przekazać kod błędu do harmonogramu zadań lub w inny sposób przerwać zadanie za pomocą VBScript?
Mój kod jest poniżej:
Option Explicit
Dim objShell, intShutdown
Dim strShutdown, strAbort
' -r = restart, -t 600 = 10 minutes, -f = force programs to close
strShutdown = "shutdown.exe -r -t 600 -f"
set objShell = CreateObject("WScript.Shell")
objShell.Run strShutdown, 0, false
'go to sleep so message box appears on top
WScript.Sleep 100
' Input Box to abort shutdown
intShutdown = (MsgBox("Computer will restart in 10 minutes. Do you want to cancel computer restart?",vbYesNo+vbExclamation+vbApplicationModal,"Cancel Restart"))
If intShutdown = vbYes Then
' Abort Shutdown
strAbort = "shutdown.exe -a"
set objShell = CreateObject("WScript.Shell")
objShell.Run strAbort, 0, false
End if
Wscript.Quit
Doceń wszelkie myśli.
źródło
Odpowiedzi:
Uruchom skrypt co noc, nie tylko raz w tygodniu. Najpierw sprawdź czas pracy komputera . Jeśli czas pracy jest dłuższy niż 7 dni, uruchom ponownie system (z opcją przerwania).
źródło
Wscript.Quit bez argumentu zwraca poziom błędu „0”, co oznacza „brak błędu”.Podaj argument .Quit, aby spowodować wyjście z poziomem błędu innym niż „0”, gdy użytkownik zdecyduje się przerwać:
EDYTOWAĆJak wskazuje @Indrek, okazuje się, że to nie zadziała. Ponieważ Harmonogram zadań (2008) zgłasza kod wynikowy w interfejsie użytkownika, ale w rzeczywistości bierze pod uwagę tylko to, czy zadanie zostało uruchomione, czy nie, niezależnie od kodów wynikowych skryptu.
Źródło
źródło