about_Scheduled_Jobs_Advanced

Deskripsi singkat

Menjelaskan topik pekerjaan terjadwal tingkat lanjut, termasuk struktur file yang mendasar pekerjaan terjadwal.

Deskripsi panjang

Untuk informasi selengkapnya tentang cmdlet yang terkandung dalam modul PSScheduledJob , lihat PSScheduledJob.

Direktori dan file pekerjaan terjadwal

Pekerjaan terjadwal PowerShell adalah pekerjaan PowerShell dan tugas Task Scheduler. Setiap pekerjaan terjadwal terdaftar di Task Scheduler dan disimpan pada disk dalam format XML Serialisasi Microsoft .NET Framework.

Saat Anda membuat pekerjaan terjadwal, PowerShell membuat direktori untuk pekerjaan terjadwal di $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs direktori di komputer lokal. Nama direktori sama dengan nama pekerjaan.

Berikut ini adalah sampel direktori ScheduledJobs .

Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
               \Microsoft\Windows\PowerShell\ScheduledJobs

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         9/29/2011  10:03 AM            ArchiveProjects
d----         9/30/2011   1:18 PM            Inventory
d----        10/20/2011   9:15 AM            Backup-Scripts
d----         11/7/2011  10:40 AM            ProcessJob
d----         11/2/2011  10:25 AM            SecureJob
d----         9/27/2011   1:29 PM            Test-HelpFiles
d----         9/26/2011   4:22 PM            DeployPackage

Setiap pekerjaan terjadwal memiliki direktorinya sendiri. Direktori berisi file XML pekerjaan terjadwal dan subdirektori Output .

$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
               \ScheduledJobs\ProcessJob

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         11/1/2011   3:00 PM            Output
-a---         11/1/2011   3:43 PM       7281 ScheduledJobDefinition.xml

Direktori Output untuk pekerjaan terjadwal berisi riwayat eksekusinya. Setiap kali pemicu pekerjaan memulai pekerjaan terjadwal, PowerShell membuat direktori bernama tanda waktu di direktori output. Direktori tanda waktu berisi hasil pekerjaan dalam file Results.xml dan status pekerjaan dalam file Status.xml .

Perintah berikut menunjukkan direktori riwayat eksekusi untuk pekerjaan terjadwal ProcessJob .

$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft
               \Windows\PowerShell\ScheduledJobs\ProcessJob\Output

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         11/2/2011   3:00 AM            20111102-030002-260
d----         11/3/2011   3:00 AM            20111103-030002-277
d----         11/4/2011   3:00 AM            20111104-030002-209
d----         11/5/2011   3:00 AM            20111105-030002-251
d----         11/6/2011   3:00 AM            20111106-030002-174
d----         11/7/2011  12:00 AM            20111107-000001-914
d----         11/7/2011   3:00 AM            20111107-030002-376
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
               \ScheduledJobs\ProcessJob\Output\20111102-030002-260

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         11/2/2011   3:00 AM     581106 Results.xml
-a---         11/2/2011   3:00 AM       9451 Status.xml

Anda dapat membuka dan memeriksa file ScheduledJobDefinition.xml, Results.xml, dan Status.xml atau menggunakan Select-XML cmdlet untuk mengurai file.

Peringatan

Jangan edit file XML. Jika ada file XML yang berisi XML yang tidak valid, PowerShell akan menghapus pekerjaan terjadwal dan riwayat eksekusinya, termasuk hasil pekerjaan.

Segera mulai pekerjaan terjadwal

Anda dapat segera memulai pekerjaan terjadwal dengan salah satu dari dua cara:

  • Jalankan Start-Job cmdlet untuk memulai pekerjaan terjadwal apa pun.
  • Tambahkan parameter RunNow ke perintah Anda Register-ScheduledJob untuk memulai pekerjaan segera setelah perintah dijalankan.

Pekerjaan yang dimulai dengan menggunakan Start-Job cmdlet adalah pekerjaan latar belakang PowerShell standar, bukan instans pekerjaan terjadwal. Seperti semua pekerjaan latar belakang, pekerjaan ini segera dimulai, pekerjaan tersebut tidak tunduk pada opsi pekerjaan atau terpengaruh oleh pemicu pekerjaan. Output pekerjaan tidak disimpan di direktori Output direktori pekerjaan terjadwal.

Perintah berikut menggunakan parameter DefinitionName cmdlet Start-Job untuk memulai pekerjaan terjadwal ProcessJob.

Start-Job -DefinitionName ProcessJob

Untuk mengelola pekerjaan dan mendapatkan hasil pekerjaan, gunakan cmdlet pekerjaan. Untuk informasi selengkapnya tentang cmdlet pekerjaan, lihat about_Jobs.

Catatan

Untuk menggunakan cmdlet Pekerjaan pada instans pekerjaan terjadwal, modul PSScheduledJob harus diimpor ke dalam sesi. Untuk mengimpor modul PSScheduledJob , ketik Import-Module PSScheduledJob atau gunakan cmdlet pekerjaan terjadwal apa pun, seperti Get-ScheduledJob.

Mengganti nama pekerjaan terjadwal

Untuk mengganti nama pekerjaan terjadwal, gunakan parameter Set-ScheduledJob Nama cmdlet. Saat Anda mengganti nama pekerjaan terjadwal, PowerShell mengubah nama pekerjaan terjadwal dan direktori pekerjaan terjadwal. Namun, itu tidak mengubah nama instans pekerjaan terjadwal yang telah berjalan.

Mendapatkan waktu mulai dan berakhir

Untuk mendapatkan tanggal dan waktu instans pekerjaan dimulai dan berakhir, gunakan properti PSBeginTime dan PSEndTime dari objek ScheduledJob yang Get-Job mengembalikan untuk pekerjaan terjadwal.

Contoh berikut menggunakan parameter Format-Table Properti cmdlet untuk menampilkan properti PSBeginTime dan PSEndTime dari setiap instans pekerjaan dalam tabel. Properti terhitung bernama Label menampilkan waktu yang berlalu dari setiap instans pekerjaan.

Get-job -Name UpdateHelpJob |
  Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id   PSBeginTime             PSEndTime                Elapsed Time
--   -----------             ---------                ------------
 2   11/3/2011 3:00:01 AM    11/3/2011 3:00:39 AM     00:00:38.0053854
 3   11/4/2011 3:00:02 AM    11/4/2011 3:01:01 AM     00:00:59.1188475
 4   11/5/2011 3:00:02 AM    11/5/2011 3:00:50 AM     00:00:48.3692034
 5   11/6/2011 3:00:01 AM    11/6/2011 3:00:54 AM     00:00:52.8013036
 6   11/7/2011 3:00:01 AM    11/7/2011 3:00:38 AM     00:00:37.1930350
 7   11/8/2011 3:00:01 AM    11/8/2011 3:00:57 AM     00:00:56.2570556
 8   11/9/2011 3:00:03 AM    11/9/2011 3:00:55 AM     00:00:51.8142222
 9   11/10/2011 3:00:02 AM   11/10/2011 3:00:42 AM    00:00:40.7195954

Mengelola riwayat eksekusi

Anda dapat menentukan jumlah hasil instans pekerjaan yang disimpan untuk setiap pekerjaan terjadwal dan menghapus riwayat eksekusi dan menyimpan hasil pekerjaan dari pekerjaan terjadwal apa pun.

Properti ExecutionHistoryLength dari pekerjaan terjadwal menentukan berapa banyak hasil instans pekerjaan yang disimpan untuk pekerjaan terjadwal. Ketika jumlah hasil yang disimpan melebihi nilai properti ExecutionHistoryLength , PowerShell menghapus hasil instans terlama untuk memberikan ruang bagi hasil instans terbaru.

Secara default, PowerShell menyimpan riwayat eksekusi dan hasil 32 instans dari setiap pekerjaan terjadwal. Untuk mengubah nilai tersebut , gunakan parameter MaxResultCount dari Register-ScheduledJob cmdlet atau Set-ScheduledJob .

Untuk menghapus riwayat eksekusi dan semua hasil untuk pekerjaan terjadwal, gunakan parameter ClearExecutionHistory cmdlet Set-ScheduledJob . Menghapus riwayat eksekusi ini tidak mencegah PowerShell menyimpan hasil instans baru dari pekerjaan terjadwal.

Contoh berikut menggunakan splatting untuk membuat $JobParms yang merupakan nilai parameter yang diteruskan ke Register-ScheduledJob cmdlet. Untuk informasi selengkapnya, lihat about_Splatting.md. Penggunaan Register-ScheduledJob@JobParms untuk membuat pekerjaan terjadwal. Perintah menggunakan parameter MaxResultCount dengan nilai 12 untuk hanya menyimpan 12 hasil instans pekerjaan terbaru dari pekerjaan terjadwal.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  MaxResultCount = "12"
}

Register-ScheduledJob @JobParms

Perintah berikut menggunakan parameter MaxResultCount dari Set-ScheduledJob cmdlet untuk meningkatkan jumlah hasil instans yang disimpan menjadi 15.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

Perintah berikut menghapus riwayat eksekusi dan hasil pekerjaan terjadwal ProcessJob yang disimpan saat ini.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

Perintah berikut mendapatkan nilai nama dan properti ExecutionHistoryLength dari semua pekerjaan terjadwal di komputer dan menampilkannya dalam tabel.

Get-ScheduledJob |
  Format-Table -Property Name, ExecutionHistoryLength -AutoSize

Lihat juga