Cara menjadualkan tugas dalam PowerShell untuk mengautomasikan pentadbiran

Kemaskini terakhir: 30/06/2025
Pengarang Ishak
  • dengan PowerShell Anda boleh mengautomasikan tugasan berkala, bersyarat dan acara dalam Windows.
  • Terdapat kaedah klasik (GUI, schtasks) dan moden (cmdlet dan kerja berjadual) untuk mengkonfigurasi tugas.
  • Menggunakan parameter yang betul semasa menjalankan skrip adalah penting untuk mengelakkan ralat dan ranap.

Mengautomasikan Tugas dengan PowerShell

Mengawal masa dan kekerapan pelaksanaan skrip anda merupakan satu kuasa besar apabila bekerja dengan Windows dan PowerShell. Mengautomasikan tugas rutin atau kritikal bukan sahaja menjimatkan masa tetapi juga mengurangkan ralat dan membebaskan sumber untuk menumpukan pada perkara yang lebih penting. Sama ada anda seorang pentadbir sistem, pembangun atau sekadar ingin tahu, menguasai penjadualan tugas dalam PowerShell akan menjadi salah satu aset terbesar anda.

Dalam artikel ini, kita akan mendalami semua cara untuk menjadualkan pelaksanaan skrip dan arahan dengan PowerShell . Kita akan merangkumi segala-galanya daripada penggunaan klasik Penjadual Tugas Windows hingga pendekatan moden dengan cmdlet tertentu, termasuk petua , cadangan dan butiran yang boleh membuat perbezaan antara kejayaan dan kekacauan dalam automasi anda.

Mengapa mengautomasikan dan menjadualkan tugas dengan PowerShell?

Jangka hayat skrip anda tidak sepatutnya bergantung pada anda berada di papan kekunci pada masa yang sama. Mengautomasikan tugasan berulang atau atas permintaan dapat menghapuskan kebosanan, mengurangkan kemungkinan kesilapan dan memastikan operasi kritikal berjalan walau apa pun.

Sebab paling biasa untuk menjadualkan tugas adalah untuk menjalankan skrip penyelenggaraan, sandaran, pemantauan atau pelaporan pada masa tertentu: secara berkala, sebagai tindak balas kepada acara atau dalam keadaan tertentu.

Windows menyediakan beberapa alat dan kaedah untuk jenis automasi ini, dan sementara Penjadual Tugas adalah seorang veteran, PowerShell telah menciptanya semula dengan cmdlet moden yang membolehkan anda mencipta, mengurus dan mengawal tugas daripada konsol atau daripada skrip.

Memahami Penjadual Tugas Windows dan PowerShell

Penjadual Tugas Windows telah menjadi alat pilihan untuk mengautomasikan pelaksanaan program, arahan dan skrip selama beberapa dekad. Walau bagaimanapun, apabila melibatkan skrip PowerShell, keraguan, ralat pelaksanaan atau tingkah laku yang tidak dijangka sering timbul jika pilihan tidak dikonfigurasikan dengan betul.

Di sinilah PowerShell menawarkan dua laluan kepada anda :

  • Gunakan Penjadual Tugas melalui antara muka grafiknya, menambah PowerShell sebagai program dan skrip sebagai hujah.
  • Gunakan cmdlet PowerShell untuk mencipta dan mengurus tugas berjadual daripada baris arahan atau skrip. Ini lebih berkuasa, fleksibel dan boleh diulang.

Nota penting: PowerShell 3.0 dan yang lebih baharu menyertakan modul PSScheduledJob , yang menambah suit cmdlet untuk mengendalikan tugasan berjadual. Ini membolehkan anda mencipta tugasan yang berjalan secara berkala di latar belakang dan menyimpan hasil pelaksanaannya secara automatik.

  Copilot berhenti bertindak balas pada Windows 11: Panduan lengkap untuk membetulkannya

Bagaimanakah penjadualan tugas berfungsi dengan PowerShell?

Aliran asas untuk pengaturcaraan skrip dalam PowerShell adalah seperti berikut:

  1. Simpan skrip yang anda mahu automasi di lokasi yang boleh diakses oleh pengguna yang akan menjalankannya.
  2. Tentukan pencetus atau kekerapan: harian, mingguan, berasaskan peristiwa atau atas permintaan.
  3. Konfigurasikan tindakan untuk dilakukan: biasanya jalankan PowerShell dengan skrip anda sebagai hujah.
  4. Daftar tugas yang dijadualkan supaya Windows menjalankannya secara automatik.

Walau bagaimanapun, butirannya membuat semua perbezaan. Hanya meletakkan laluan skrip dalam penjadual dan mengharapkan ia berfungsi tidak mencukupi. Terdapat pilihan kritikal seperti kebenaran, argumen, dasar pelaksanaan dan keistimewaan lanjutan yang harus anda fahami sepenuhnya, baik dari segi kelebihannya mahupun cara mengelakkan kesilapan biasa.

Kaedah untuk menjadualkan tugas dengan PowerShell

Terdapat beberapa cara untuk mengautomasikan tugas dalam PowerShell. Yang paling biasa ialah:

  • Penciptaan manual daripada GUI Penjadual Tugas
  • Menggunakan arahan schtasks.exe daripada konsol
  • Menggunakan cmdlet PowerShell asli seperti New-ScheduledTask, Register-ScheduledTask atau modul PSScheduledJob

Penciptaan manual dengan Penjadual Tugas (GUI)

Kaedah tradisional terdiri daripada:

  • Buka Panel Kawalan > Alat Pentadbiran > Penjadual Tugas.
  • Pilih pilihan Buat tugas bukannya "Buat tugas asas" untuk mempunyai semua pilihan lanjutan.
  • Dalam tab Umum, tetapkan nama dan pilih Jalankan sama ada pengguna log masuk atau tidak y Berlari dengan keistimewaan tertinggi jika skrip anda memerlukannya.
  • Dalam tab Pencetus, tentukan kekerapan: harian, mingguan, semasa log masuk, pada permulaan sistem, dsb.
  • En tindakan, pilih "Mulakan program." Inilah intipatinya: dalam Program atau skrip anda mesti menulis powershell.exe dan dalam Tambah hujah, parameter yang akan melaksanakan skrip anda.

Konfigurasi yang betul bagi pelaksanaan skrip PowerShell

Di sinilah titik permulaan pertama berlaku. Hanya meletakkan laluan ke fail .ps1 seolah-olah ia adalah fail .bat tidak mencukupi, kerana PowerShell memerlukan arahan eksplisit tentang apa yang perlu dilakukan.

Cara yang paling boleh dipercayai untuk memastikan skrip .ps1 anda berjalan seperti yang anda mahu adalah dengan menyediakan argumen berikut dalam medan "Tambah argumen":

-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'ruta-completa-al-script.ps1'"

Mengapa parameter ini?

  • -TiadaProfil: Mengelakkan memuatkan profil pengguna, menjadikannya lebih mudah diramal dan mengelakkan kemungkinan ranap.
  • -Tidak Interaktif: memastikan bahawa skrip tidak akan cuba memaparkan dialog yang memerlukan campur tangan.
  • -ExecutionPolicy Bypass: Pintas sekatan pelaksanaan (selagi anda pasti skrip itu selamat).
  • -Perintah: melaksanakan blok arahan, dan & berfungsi sebagai pengendali panggilan dalam PowerShell.
  Cara Membuka CMD daripada Pemasang Windows 11: Kaedah dan Pilihan Persediaan

Nota: Panggilan skrip mesti didahului oleh & dan disertakan dalam tanda petik tunggal dalam tanda petik berganda global.

Contoh praktikal tugas berjadual dalam PowerShell

Katakan anda mempunyai skrip C:\Data\MonitorDiscosServidor.ps1 dan anda mahu ia dijalankan setiap minggu pada hari Isnin jam 15:45 PTG.

  • Program atau skrip: powershell.exe
  • Tambah hujah: -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'C:\Data\MonitorDiscosServidor.ps1'"

Ini memastikan bahawa PowerShell melancarkan fail anda tanpa gangguan dan tidak membiarkan tugasan tergantung pada pertengahan pelaksanaan - kesilapan yang sangat biasa apabila parameter ini ditinggalkan.

Automasi Lanjutan dengan PowerShell Cmdlet

Sejak PowerShell 3.0, kita mempunyai modul dan satu siri cmdlet khusus untuk mencipta, mengurus dan membuat pertanyaan tugasan berjadual dengan lebih fleksibel dan daripada skrip. Ini amat berguna apabila anda ingin melaksanakan automasi yang kompleks, mereplikasi tugasan merentasi pelayan, menyimpan konfigurasi sebagai kod atau menjana tugasan kelompok.

cmdlet utama yang terlibat:

  • New-ScheduledTaskAction: Mentakrifkan perkara yang akan dilaksanakan (cth., powershell.exe dan skrip).
  • New-ScheduledTaskTrigger: mencipta pencetus (harian, mingguan, semasa permulaan, dll.).
  • Register-ScheduledTask: Mendaftarkan tugas dalam sistem.
  • Get-ScheduledTask: : Tanya tugas sedia ada.

Contoh asas satu baris:

Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'notepad.exe') -Trigger (New-ScheduledTaskTrigger -Daily -At 16:25pm) -TaskName 'Update'

Arahan ini mencipta tugasan yang membuka Notepad setiap hari pada pukul 16:25 PTG. Anda hanya perlu menggantikan notepad.exe dengan "PowerShell.exe" dan menambah argumen yang betul.

Mencipta Kerja Berjadual dalam PowerShell

Satu lagi ciri menarik ialah tugas berjadual , yang berfungsi sebagai gabungan antara tugas Penjadual dan tugas latar belakang PowerShell.

Kelebihan utamanya ialah anda boleh menentukan, membuat pertanyaan dan mengawal daripada PowerShell bila, bagaimana dan apa yang dilaksanakan , termasuk hasil pengelogan dan pentadbiran lanjutan.

Contoh: Buat kerja berjadual harian pada 3:00 pagi yang dijalankan Get-Process walaupun sistem berjalan pada bateri:

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -Trigger $trigger -ScheduledJobOption $options

Semak kerja berjadual sedia ada:

Get-ScheduledJob

Lihat pencetus untuk kerja tertentu:

Get-JobTrigger -Name ProcessJob

Kumpulkan hasil pelaksanaan kerja terakhir:

Receive-Job -Id 51

Dan jika anda mahu memadamkan kerja yang dijadualkan dan hasil yang disimpan:

Unregister-ScheduledJob ProcessJob

Ini membolehkan pengurusan terpusat dan maju, sesuai untuk senario perniagaan atau makmal di mana anda ingin mengekalkan rekod pelaksanaan dan keputusan.

  Pembaikan: Kod Ralat Kumpulan Microsoft Caa70007

Jadualkan tugas untuk acara tertentu dalam Windows

Penjadual tugas bukan sahaja untuk penjadualan berasaskan masa. Anda juga boleh menjalankan skrip PowerShell sebagai tindak balas kepada peristiwa sistem (contohnya, apabila ralat pengesahan berlaku atau sebarang peristiwa log peristiwa lain).

Menyediakan ini adalah mudah:

  • Daripada Pemapar Acara, cari acara yang akan berfungsi sebagai pencetus.
  • Pilih pilihan "Lampirkan tugas pada acara ini" atau serupa.
  • Ikut wizard dan tunjukkan cara untuk melaksanakan tindakan. powershell.exe dan, dalam hujah, -Fail 'full-path-of-script.ps1'.
  • Ingat untuk mengubah suai tetapan supaya tugasan berjalan dengan kebenaran yang diperlukan dan sama ada pengguna log masuk atau tidak.

Automasi jenis ini sesuai untuk makluman proaktif – contohnya, PowerShell yang menghantar e-mel sebaik sahaja ia mengesan corak keselamatan dalam log.

Contoh lengkap: Mencipta, mendaftar dan mengesahkan tugas dalam PowerShell

Di bawah ialah senario lengkap untuk mencipta dan mengesahkan tugas yang dijadualkan:

  1. Sediakan skrip: Simpan PowerShell anda dalam C:\scripts\MonitorLog.ps1Sebagai contoh, skrip yang memantau perubahan kepada log.
  2. Konfigurasikan dasar pelaksanaan (kali pertama sahaja):
    Set-ExecutionPolicy Ditandatangani Jauh
  3. Buat tugas dengan cmdlet:
    $action = New-ScheduledTaskAction -Laksanakan 'PowerShell.exe' -Argument '-NoProfile -NonInteractive -ExecutionPolicy Bypass -Arahan "& ''C:\scripts\MonitorLog.ps1''"' $trigger = New-ScheduledTaskTrigger -Mingguan -MingguanTaskTrigger -Mingguan -1Minggu 2:40pm Daftar-Tugas Berjadual -TaskName 'MonitorLog' -Prigger $trigger -Pengguna 'Administrator' -Tindakan $accion -RunLevel Tertinggi –Force
  4. Sahkan bahawa tugasan muncul dengan betul:
    Get-ScheduledTask -TaskName 'MonitorLog'
  5. Semak keputusan selepas pelaksanaan: Semak log pengaturcara atau gunakan Get-ScheduledJob Jika anda menggunakan kerja berjadual, untuk mengesahkan pelaksanaan dan keputusan.

Automasi dengan PowerShell dan platform awan

Anda bukan sahaja boleh menjadualkan tugasan secara setempat dalam Windows, tetapi dengan PowerShell dan penyepaduannya dengan platform seperti Microsoft 365 , Azure dan Dynamics, anda boleh mencipta automasi berskala besar dalam awan . Anda boleh mengembangkan pengetahuan anda tentang penjadualan tugasan dalam PowerShell dengan sumber khusus kami, " Cara Menggunakan Microsoft Flow untuk Automasi ."

Beberapa cmdlet berguna termasuk:

  • Get-AdminPowerAppEnvironment: untuk menyenaraikan persekitaran dan bekerja dengan Power Apps.
  • Azure Cmdlet: untuk melancarkan skrip terhadap sumber awan secara berkala.
  • Automasi lesen dan pengurusan pengguna dalam Microsoft 365.