Exchange PowerShell dalam Tugas Terjadwal berjalan selamanya

8

Saya punya beberapa skrip Exchange 2010 PowerShell yang ingin saya jalankan sebagai Tugas Terjadwal.

Jika saya meluncurkan PowerShell menggunakan "Run as different user", saya dapat menjalankan skrip dan dijalankan dengan benar.

Jika saya menjadwalkan tugas menggunakan pengguna yang sama, tugas tetap dalam status Menjalankan selamanya.

Bagaimana saya bisa mengetahui di mana tugas macet?

Untuk referensi, inilah cara saya mengaktifkan hal-hal Exchange:

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

Dan inilah cara saya mencoba menjalankan skrip dari Penjadwal Tugas:

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

Semua dengan hasil yang sama. Grr ...

leher panjang
sumber
Mengomentari terlambat ke pesta, tetapi saya memiliki perilaku yang sama. Tugas terjadwal yang didaftarkan menggunakan PowerShell's Register-ScheduledJobtidak pernah 'berakhir' itu berakhir setelah saya menutup konsol PowerShell dan ISE saya.
user4317867

Jawaban:

3

Anda perlu memodifikasi kebijakan eksekusi, atau menentukan -ExecutionPolicy Bypasssebagai parameter baris perintah.

powershell -Command "<path to .ps1 script>" -ExecutionPolicy Bypass
TheCompWiz
sumber
1
Saya menambahkan opsi ExecutionPolicy ke parameter baris perintah saya. Tidak ada perubahan; tugas masih berjalan selamanya.
longneck
2

Tidak yakin apakah ini yang Anda lakukan, tetapi ketika saya menjalankan skrip PowerShell melalui penjadwal tugas, saya menggunakan tindakan "Mulai program" dan pilih PowerShell lalu tambahkan argumen dari sana. Mungkin itu yang Anda lakukan di sini, tapi agak tidak jelas. Berikut screenshotnya: masukkan deskripsi gambar di sini

Kebijakan pelaksanaan Per TheCompWiz mungkin juga menjadi masalah.

ZnewmaN
sumber
Itu bahkan bukan sintaks baris perintah yang valid untuk powershell.exe, tetapi hanya untuk itu saya mencobanya. Tugas segera gagal.
longneck
Menarik karena semua tugas powerhell harian saya berjalan seperti itu dan berfungsi dengan baik.
ZnewmaN
C: \ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe-perintah "& 'c: \ windows \ script.ps1'"
ZnewmaN
ah, ada bedanya. tangkapan layar Anda tidak menunjukkan-command
longneck
Ya, sebenarnya saya pribadi tidak menggunakan -command, tapi itu mungkin penggunaan yang tepat.
ZnewmaN
0

Saya memiliki masalah yang sama. Dalam kasus saya, solusinya adalah untuk menentukan direktori "mulai di" (skrip saya akan membaca isi file yang tidak akan ditemukan karena saya tidak menentukan path lengkap ke file).

Azimut
sumber
0

Saya memiliki masalah yang sama dan komentar oleh "user279399" untuk menggunakan perintah taskkill sangat membantu, hanya perlu modifikasi. Inilah solusi saya di akhir sintaks argumen

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

Perintah ini hanya membunuh sesi PowerShell yang berjalan di bawah akun pengguna itu. Ini adalah praktik terbaik untuk memiliki akun admin pertukaran yang terpisah untuk menjalankan tugas yang dijadwalkan.

Leon B
sumber
-3

Coba tambahkan ke akhir skrip Anda [taskkill / f / im "powershell.exe"] ini akan membunuh semua proses "powershell.exe". Saya tidak tahu cara mematikan proses power-shell saat ini (setara dengan [cmd.exe / c]). Tapi itu akan melakukan trik.

pengguna279399
sumber
Dan bagaimana jika ada skrip PowerShell lain yang sedang berjalan, mungkin melakukan sesuatu yang penting? Apakah Anda hanya akan membunuh proses ini tanpa bertanya? Di lingkungan produksi? Sebagai rutin? Serius ?!
Esa Jokinen