Exchange PowerShell in un'attività pianificata viene eseguito per sempre


8

Ho un paio di script di Exchange 2010 PowerShell che vorrei eseguire come attività pianificate.

Se avvio PowerShell usando "Esegui come utente diverso", posso eseguire gli script e questi vengono eseguiti correttamente.

Se pianifico un'attività utilizzando lo stesso utente, l'attività rimarrà per sempre nello stato In esecuzione.

Come posso capire dove si blocca l'attività?

Per riferimento, ecco come abilito le cose di Exchange:

. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

Ed ecco i modi in cui ho provato a eseguire lo script dall'Utilità di pianificazione:

  • powershell -command "& {. 'c: \ windows \ script.ps1'}"
  • powershell -file 'c: \ windows \ script.ps1'
  • powershell -file "c: \ windows \ script.ps1"

Tutti con lo stesso risultato. Grr ...


Commentando in ritardo alla festa, ma ho avuto lo stesso comportamento. Un'attività pianificata registrata utilizzando PowerShell Register-ScheduledJobnon è mai terminata e si è conclusa dopo aver chiuso la console PowerShell e ISE.
user4317867

Risposte:


3

È necessario modificare la politica di esecuzione o specificare il -ExecutionPolicy Bypassparametro come riga di comando.

powershell -Command "<path to .ps1 script>" -ExecutionPolicy Bypass

1
Ho aggiunto l'opzione ExecutionPolicy ai parametri della mia riga di comando. Nessun cambiamento; l'attività è ancora in esecuzione per sempre.
collo lungo

2

Non sono sicuro che sia così, ma quando eseguo gli script PowerShell tramite l'utilità di pianificazione utilizzo l'azione "Avvia un programma" e seleziono powershell e quindi aggiungo gli argomenti da lì. Potrebbe essere quello che stai facendo qui, ma non è chiaro. Ecco uno screenshot: inserisci qui la descrizione dell'immagine

Per TheCompWiz la politica di esecuzione potrebbe anche essere un problema.


Non è nemmeno una sintassi valida della riga di comando per powershell.exe, ma solo per il gusto di farlo, l'ho provato. L'attività non è riuscita immediatamente.
collo lungo

Interessante perché tutte le mie attività quotidiane su PowerShell funzionano in questo modo e funzionano perfettamente.
ZnewmaN,

C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe -command "& 'c: \ windows \ script.ps1'"
ZnewmaN

ah, c'è la differenza. lo screenshot non mostra il-command
longneck

Sì, in realtà non uso personalmente il comando, ma è probabilmente l'uso corretto.
ZnewmaN,

0

Ho avuto lo stesso problema. Nel mio caso la soluzione era specificare la directory "start in" (il mio script avrebbe letto il contenuto di un file che non avrebbe trovato perché non avevo specificato il percorso completo del file).


0

Ho avuto lo stesso problema e il commento di "user279399" per usare il comando taskkill è stato di grande aiuto, bastava una modifica. Ecco la mia soluzione alla fine della sintassi dell'argomento

taskkill /f /fi "USERNAME eq domain\exchadmin" /im powershell.exe

Questo comando uccide solo la sessione PowerShell in esecuzione con quell'account utente. È consigliabile disporre di un account amministratore di Exchange separato per l'esecuzione di attività pianificate.


-3

Prova ad aggiungere alla fine del tuo script [taskkill / f / im "powershell.exe"] questo ucciderà tutti i processi "powershell.exe". Non so come terminare l'attuale processo power-shell (equivalente a [cmd.exe / c]). Ma farà il trucco.


E se ci fossero altri script PowerShell in esecuzione, probabilmente facendo qualcosa di importante? Uccideresti questi processi senza chiedere? In un ambiente di produzione? Di routine? Sul serio?!
Esa Jokinen,
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.