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 ...
exchange
exchange-2010
powershell
scheduled-task
leher panjang
sumber
sumber
Register-ScheduledJob
tidak pernah 'berakhir' itu berakhir setelah saya menutup konsol PowerShell dan ISE saya.Jawaban:
Anda perlu memodifikasi kebijakan eksekusi, atau menentukan
-ExecutionPolicy Bypass
sebagai parameter baris perintah.sumber
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:
Kebijakan pelaksanaan Per TheCompWiz mungkin juga menjadi masalah.
sumber
-command
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).
sumber
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
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.
sumber
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.
sumber