Próbuję uruchomić plik wsadowy w systemie Windows 7 z Harmonogramu zadań. Mogę dobrze uruchomić plik wsadowy, jeśli uruchomię go z wiersza polecenia.
Jeśli uruchomię go z Harmonogramu zadań, aby uruchamiał się tylko wtedy, gdy użytkownik jest zalogowany, zadanie uruchomi się bez żadnych problemów. Jednak gdy działa, gdy użytkownik nie jest zalogowany, Harmonogram zadań wygląda tak, jakby uruchamiał plik, ale nic się nie dzieje.
Próbowałem zmienić plik wsadowy na inny niż następujący wiersz, aby upewnić się, że nie jest to spowodowane zawartością pliku wsadowego:
echo "success" >> c:\temp\test.log
i to nie działa. Jakieś pomysły? Mam go uruchamiany z najwyższymi uprawnieniami i kontem administratora, który ma pełne uprawnienia do pliku wsadowego i folderu, w którym plik jest zapisywany.
źródło
Odpowiedzi:
ZADANIE HARMONOGRAMU: ZAPLANOWANY SKRIP SERII NIE DZIAŁA
Właściwości harmonogramu zadań. . .
Z systemu Windows
Task Scheduler
w pracyProperties
(patrz większość zrzutów ekranu na dole) w. . .1.
General
kartę, upewnij się, że poniższe opcje są zaznaczone / zaznaczone lub niezaznaczone, tak jak pokazano na ekranie drukowania ARun only when user is logged on
Run whether user is logged on or not
Run with the highest privileges
2.
Conditions
Zakładka upewnić się, że są poniżej opcji wybrać , zaznaczone lub odznaczone tak jak pokazano na Print Screen BWake the computer to run this task
3.
Actions
tab, kliknijEdit
i upewnij się, żeStart in (optional)
jest ustawiony dokładnie tak, jak pokazano w poniższym przykładzie ( NIE umieszczaj wokół niego podwójnych cudzysłowów) dla pełnej ścieżki wskazującej, gdzie znajduje się skrypt wsadowy BEZ ostatniego ukośnika odwrotnego ”\
„ Drukuj ekran CUWAGI DOTYCZĄCE BEZPIECZEŃSTWA
Po naciśnięciu
OK
( 2. powyżej) powinien zostać wyświetlony monit o podanie poświadczenia, aby uruchomić to jako, a to poświadczenie będzie wymagało dostępu doEXECUTE
pliku wsadowego tam, gdzie on istnieje, i będzie również wymagało dostępu do wykonywania dowolnego pliku wsadowego które napisałeś.Najlepszym rozwiązaniem może być skonfigurowanie statycznego konta użytkownika usługi / serwera proxy dla tego procesu, a następnie użycie jego poświadczeń do uruchomienia procesu. Musisz upewnić się, że jego hasło jest silne i ustawione, aby nigdy nie wygasało - i musi mieć dostęp do
EXECUTE
partii i uruchamiać wszystko, co jest uruchomione, oraz wszelkie polecenia i zasoby. wykorzystuje również.Wygląda na to,
Run whether user is logged on or not
że MUSISZ zaznaczyć opcjęRun with highest privileges
, aby faktycznie działała zgodnie z oczekiwaniami z Harmonogramu zadań.Sprawdzanie błędów
Jeśli występuje problem z rzeczywistym skryptem wsadowym, ale Harmonogram zadań systemu Windows faktycznie go uruchamia, aby go uruchomić, ale błędy logiki skryptu wsadowego są wyłączone itp. Z jakiegokolwiek powodu, Harmonogram zadań może nie zobaczyć tego niepowodzenia na tym poziomie. Z perspektywy (domyślnie przez większość czasu) wykonuje on plik wsadowy, o ile tylko może go wykonać i ma do tego dostęp, jego zadanie jest wykonywane pomyślnie.
Dodaj sprawdzanie błędów lub logowanie do logiki skryptu wsadowego, aby wychwytywać (lub rozwiązywać problemy ) na tym poziomie, w tym upewnić się, że kontekst bezpieczeństwa, który wykonuje harmonogram wsadowy, ma odpowiedni dostęp do poleceń, zasobów itp. Uruchamianych przez skrypt wsadowy.
Uwagi dotyczące zasad grupy
SPRAWDŹ POLITYKĘ GRUPY I ZALOGUJ SIĘ JAKO ZEZWOLENIE NA PRACĘ
Logika skryptów wsadowych z mapowanymi dyskami lub pełną ścieżką UNC i problemy. . .
Jeśli skrypt odwołuje się do zmapowanego dysku sieciowego, ale tego chcesz
Run whether the user is logged on or not
, to w tym kontekście mapowanie dysku może nie istnieć, aby proces wsadowy mógł wykonać to, czego się spodziewano.Jeśli to możliwe, użyj
UNC
ścieżek w logice skryptu wsadowego zamiast litery dysku zamapowanego, aby uniknąć problemów. W przeciwnym razie może być konieczne użyciePUSHD \\ServerName\ShareName
na początku procesu wsadowego, a następnie użyciePOPD
na końcu procesu wsadowego. Możesz zmapować dyskNET USE X: \\ServerName\ShareName
na początku procesu wsadowego, a następnie odłączyć dyskNET USE X: /DELETE
przy końcu procesu wsadowego.INNE
MS HOTFIX (KB977353): Element preferencji Zadanie natychmiastowe zasad grupy nie działa na komputerze klienckim z systemem Windows 7 lub Windows Server 2008 R2
Spójrz na kartę zaplanowanego zadania
Settings
i opcję wymienioną jakoStop the task if it runs longer than:
. Jeśli ta opcja jest zaznaczona, a przedział czasu jest krótszy niż uruchomiony skrypt, Harmonogram zadań zabije go wcześnie, a zatem możesz nie uzyskać oczekiwanych rezultatów. Jest to coś innego do sprawdzenia podczas rozwiązywania problemów na wszelki wypadek.Po
Triggers
wybraniuEdit
opcji na karcie zaplanowanego zadania pamiętaj, aby ustawićStart:
datę i godzinę wartości, która NIE została jeszcze przekazana. Upewnij się, że data i godzina są ustawione na wartość o wartości w przyszłości . W przeciwnym razie możesz zauważyć, że zadanie stwierdza, że zostanie zaplanowane do uruchomienia w następnym zaplanowanym czasie, tak jak można się spodziewać; nie jest on jednak wykonywany przez Harmonogram zadań, ani karta Harmonogram zadań nieHistory
pokazuje, że jest on kiedykolwiek wykonywany (ponieważ tak nie jest). Po prostu edytuj wyzwalacz i zaktualizuj go o przyszłą datę i / lub godzinę, aby rozwiązać ten problem, jeśli występuje.DRUKUJ EKRANY
Drukuj ekran A
Drukuj ekran B
Drukuj ekran C
źródło