Saya mencoba menyinkronkan tugas yang berbeda secara bersamaan di PowerShell karena masing-masing membutuhkan waktu sekitar 2-4 jam. Script yang saya miliki sekarang hanya memproses setiap tugas satu demi satu. Saya tahu ada opsi yang disebut pekerjaan latar belakang di PowerShell. Apakah ada cara untuk mengubah kode berikut sehingga memproses beberapa file .cmd secara bersamaan?

$handler_button1_Click= 
{
$answer= $finalcheck.popup("text",0,"text",4)
If($answer-eq 6) {
   [Windows.Forms.MessageBox]::Show("text", "Information", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
   $listBox1.Items.Clear();    
    if ($checkBox1.Checked)    { 
    Try{ 
    & K:\sample.cmd
    }catch [System.Exception]{
    $listBox1.Items.Add("Error")}
    }

    if ($checkBox2.Checked)    { 
    Try{ 
    & K:\sample2.cmd
    }catch [System.Exception]{
    $listBox1.Items.Add("Error")}
    }
0
Tehc 11 Agustus 2016, 13:43

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan Start-Job:

$job = Start-Job { & K:\sample.cmd }

Pada titik ini Anda mungkin perlu menambahkan beberapa kode untuk melihat status pekerjaan yang telah Anda mulai. Kemungkinan Anda dapat memeriksa $job.State secara berkala.

Memperluas ini, Anda mungkin menolak untuk memulai pekerjaan dengan jenis yang sama jika ada yang sudah berjalan.

Selain Start-Job, Anda harus melihat:

  • Get-Job - Untuk mendapatkan pekerjaan apa pun (berjalan atau lainnya)
  • Terima-Pekerjaan - Untuk mendapatkan hasil kembali
  • Hapus-Pekerjaan - Untuk menghapus pekerjaan setelah Anda selesai melakukannya.
  • Stop-Job - Untuk menghentikan pekerjaan jika Anda perlu membunuhnya.
1
Chris Dent 11 Agustus 2016, 13:49
Terima kasih. Apakah ada cara untuk memeriksa apakah suatu Pekerjaan telah selesai? Seperti ketika saya memulai sample.cmd proses berlangsung selama ~ 3 jam dan memasukkan file ke dalam database Oracle saya. Saya ingin mencetak pesan kepada pengguna, setiap kali pekerjaan telah selesai.
 – 
Tehc
11 Agustus 2016, 14:45
Ya, Anda memeriksa $job.State, yang akan Menjalankan, Selesai, Gagal, dll, dll.
 – 
Chris Dent
11 Agustus 2016, 14:46