Esecuzione di PowerShell in Utilità di pianificazione

Sto usando PowerShell per scaricare i dati dalla posta elettronica.

Voglio eseguire questo processo con PowerShell. Quando eseguo script come questo:

D:\script.ps1 

in powershell.exe funziona benissimo.

Quando lo pianifico in Utilità di pianificazione non succede nulla.

Ho provato a impostarlo come programma / script:

     powershell Powershell.exe powershell.exe 

    Aggiungi argomenti:

     -executionpolicy bypass -file D:\script.ps1 -file D:\script.ps1 -file "D:\script.ps1" 

    E niente funziona. Sto usando Windows 2008 R2.

    La risoluzione dei problemi relativi alle attività pianificate è un problema nella parte posteriore, perché non si può davvero vedere cosa sta succedendo. Queste sono alcune cose che potresti voler controllare:

    • Verifica che la linea di comando funzioni in linea di principio, ad esempio eseguendola da CMD (nel tuo caso prova a eseguire powershell.exe -File "D:\script.ps1" ). Se questo ti dà degli errori, devi prima aggiustarli.

    • Se si intende eseguire l’attività come un particolare utente, avviare CMD come tale utente ed eseguire la stessa riga di comando per verificare se l’utente dispone di tutte le autorizzazioni richieste per ciò che lo script sta facendo.

    • Verificare se l’attività è effettivamente terminata o se il processo è ancora in esecuzione (tramite Process Explorer , Get-Process , Task Manager, …).

    • Controllare il risultato dell’ultima esecuzione per il codice di uscita del comando.

    • Abilita la cronologia per le attività pianificate ( Azione → Abilita cronologia di tutte le attività ). Questo ti darà almeno alcune informazioni su cosa sta facendo l’attività, se inizia o meno, e se / quali errori si sono verificati. Sono necessari i diritti amministrativi per abilitare la cronologia delle attività.

    • Controllare il registro eventi per errori / avvisi correlati all’esecuzione dell’attività.

    • Aggiungi le dichiarazioni di registrazione allo script che stai utilizzando per registrare le informazioni sullo stato di avanzamento. Personalmente preferisco accedere al registro degli eventi, perché questo evita problemi di permessi per il filesystem.

       Write-EventLog -LogName Application -Source EventSystem -EventID 100 -EntryType Information -Message 'Your log message.' 

      Se disponi di privilegi di amministratore sul sistema, puoi registrare un’origine di eventi di tua scelta e utilizzarla nell’istruzione di registro sopra invece di abusare di una fonte esistente come EventSystem :

       New-EventLog -Source MyEventSource -LogName Application 

    Ulteriore aiuto dipenderà molto dai risultati che hai ottenuto seguendo questi passaggi e dal tuo codice di script effettivo.

    Ho trovato questo sito abbastanza utile: http://www.microsoftpro.nl/2011/07/07/how-to-schedule-a-powershell-script-using-scheduled-tasks-in-windows-server-2008 -r2 /

    Ho anche modificato la proprietà dell’opzione Secure e mi ha aiutato.

    Non ho controllato: non memorizzare la password e ora funziona senza che io sia connesso alla rete.

    Pace

    Poche osservazioni importanti che ho dovuto affrontare:

    1. Invece di dare solo powershell.exe , prova a dare il percorso completo di C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe .

    2. Il permesso è una preoccupazione in più. L’utente attraverso il quale si sta eseguendo l’attività potrebbe non avere il permesso di eseguirlo.

    3. Politica di esecuzione: accertarsi di ignorare la politica di esecuzione utilizzando -ExecutionPolicy Bypass .

    4. Assicurati di eseguire l’attività con i privilegi più alti .

    5. Finalmente, attraverso l’analisi dei log.