Esecuzione di un file batch dall'Utilità di pianificazione senza che l'utente abbia effettuato l'accesso


10

Sto cercando di eseguire un file batch su Windows 7 dall'Utilità di pianificazione. Posso eseguire correttamente il file batch se lo eseguo dal prompt dei comandi.

Se lo eseguo dall'Utilità di pianificazione per essere eseguito solo quando l'utente ha effettuato l'accesso, l'attività verrà eseguita senza problemi. Tuttavia, quando viene eseguito quando l'utente non è connesso, l'Utilità di pianificazione sembra che stia eseguendo il file ma non succede nulla.

Ho provato a cambiare il file batch con nient'altro che la seguente riga per assicurarmi che non sia dovuto al contenuto del file batch:

echo "success" >> c:\temp\test.log

e quello non funziona. Qualche idea? L'ho eseguito con i privilegi più alti e con un account amministratore che dispone delle autorizzazioni complete per il file batch e la cartella in cui il file viene scritto.


Quale account stai usando per eseguire l'attività? Quali trigger hai impostato?
Camilohe,

Prova a eseguire l'attività come account del servizio di sistema.
SamAndrew81,

Risposte:


20

TASK SCHEDULER: SCRIPT DI LOTTO PROGRAMMATO NON CORRENTE

Proprietà Utilità di pianificazione. . .

Da Windows Task Schedulersul lavoro Properties (vedi in basso la maggior parte delle schermate) in. . .

  • 1. General scheda, assicurarsi che le seguenti opzioni siano selezionate / selezionate o deselezionate proprio come mostrato nella schermata di stampa A

    • Deseleziona Run only when user is logged on
    • Dai un'occhiata Run whether user is logged on or not
    • Dai un'occhiata Run with the highest privileges
  • 2. Conditions scheda, assicurarsi che le seguenti opzioni siano selezionate , selezionate o deselezionate proprio come mostrato nella schermata di stampa B

    • Dai un'occhiata Wake the computer to run this task
  • 3. Actions scheda, fare clic Edite assicurarsi che Start in (optional)sia impostato esattamente come mostrato nell'esempio seguente ( NON inserire doppi apici tra virgolette) per il percorso completo che punta dove si trova lo script batch SENZA una barra rovesciata finale " \" Stampa schermata C


CONSIDERAZIONI SULLA SICUREZZA

  • Dopo aver premuto OK( 2. sopra), verrà richiesto di eseguire le credenziali per eseguirlo come tale, e tale credenziale è ciò che avrà bisogno dell'accesso al EXECUTEfile batch in cui esiste, e dovrà anche avere accesso per fare qualunque cosa il file batch sia in esecuzione che hai scritto.

  • Potrebbe essere meglio impostare un account utente proxy / servizio statico per questo processo e quindi utilizzare le sue credenziali per eseguire il processo. Dovresti assicurarti che la sua password sia solida e che non scada mai, e ha bisogno di accedere al EXECUTEbatch ed eseguire qualunque sia il processo di script batch in esecuzione e qualsiasi comando e risorsa, ecc. utilizza anche.

  • Sembra che l'opzione Run whether user is logged on or notDEVE verificare l'opzione Run with highest privilegesaffinché funzioni effettivamente come previsto dall'Utilità di pianificazione.

Controllo errori

  • Se si verifica un problema con lo script batch effettivo ma l' Utilità di pianificazione di Windows lo esegue effettivamente per eseguirlo ma la logica dello script batch si guasta , ecc. Per qualsiasi motivo, l' Utilità di pianificazione potrebbe non vedere questo errore a questo livello. Dal suo punto di vista (per impostazione predefinita la maggior parte delle volte), sta eseguendo il file batch in modo che, purché possa eseguirlo e abbia accesso a farlo, il suo lavoro venga eseguito correttamente.

  • Aggiungere il controllo degli errori o la registrazione nella logica dello script batch per rilevare (o risolvere i problemi ) a questo livello, incluso garantire che il contesto di sicurezza che lo scheduler batch lo esegue abbia un accesso appropriato a comandi, risorse, ecc. Su cui viene eseguito lo script batch.


Considerazioni sui criteri di gruppo

CONTROLLARE LA POLITICA DEL GRUPPO E ACCEDERE COME PERMESSI DI LAVORO A LOTTO

Risposta: Su Windows, questo privilegio è concesso tramite i Criteri di sicurezza locali o di dominio . Per fare ciò utilizzando la politica di sicurezza locale , attenersi alla seguente procedura.

  1. Nel Pannello di controllo , apri Strumenti di amministrazione , quindi Criteri di sicurezza locali .
  2. Sotto Impostazioni di sicurezza , apri Politiche locali ed evidenzia Assegnazione diritti utente .
  3. Individua Accedi come processo batch . Apri le proprietà e aggiungi tutti gli utenti che necessitano di questo diritto.
  4. Al termine, salvare le modifiche e chiudere la finestra Impostazioni di sicurezza locali .

Le modifiche dovrebbero avere effetto immediato. Per apportare modifiche alla politica di sicurezza del dominio, su un controller di dominio, utilizzare l' utilità Politica di sicurezza del dominio nel Pannello di controllo


Logica di script batch con unità mappate o percorso UNC completo e problemi. . .

Se lo script fa riferimento a un'unità di rete mappata ma si desidera Run whether the user is logged on or not, in questo contesto, la mappatura dell'unità potrebbe non essere effettivamente presente per il processo batch per fare ciò che è previsto.

Se possibile, utilizzare UNCpercorsi nella logica dello script batch anziché una lettera di unità mappata per evitare problemi. In caso contrario, potrebbe essere necessario utilizzare PUSHD \\ServerName\ShareNameall'inizio del processo batch e quindi utilizzare POPDalla fine del processo batch. È possibile mappare l'unità con NET USE X: \\ServerName\ShareNameall'inizio del processo batch e quindi disconnettere l'unità con NET USE X: /DELETEalla fine del processo batch.


ALTRI

  • MS HOTFIX (KB977353): l'elemento della preferenza Attività immediata di Criteri di gruppo non viene eseguito su un computer client che esegue Windows 7 o Windows Server 2008 R2

  • Guarda la Settingsscheda dell'attività pianificata e l'opzione elencata come Stop the task if it runs longer than:. Se questa opzione è selezionata e il periodo di tempo è inferiore a uno script in esecuzione, l'Utilità di pianificazione lo ucciderà in anticipo e quindi potresti non ottenere i risultati previsti. Questo è qualcos'altro da controllare durante la risoluzione dei problemi per ogni evenienza.

    inserisci qui la descrizione dell'immagine

  • Dalla Triggersscheda dell'attività pianificata quando si seleziona l' Editopzione assicurarsi di impostare l' Start:ora e la data di un valore NON già passato. Assicurati che questa abbia la data e l'ora impostate su quella di un valore nel futuro . Altrimenti potresti notare che il lavoro afferma che è pianificato per essere eseguito alla successiva ora pianificata come previsto; tuttavia, non viene eseguito dall'Utilità di pianificazione né dalla scheda Utilità di pianificazione History mostra che è mai stato eseguito (perché non lo è). È sufficiente modificare il trigger e aggiornarlo con una data e / o ora future per risolvere questo problema se lo si verifica.

    inserisci qui la descrizione dell'immagine


SCHERMATE DI STAMPA

Stampa schermo A

inserisci qui la descrizione dell'immagine

Stampa schermo B

inserisci qui la descrizione dell'immagine

Stampa schermo C

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.