Bir zamanlanmış görevim var. Her 5 dakikada bir çalışıyor. Powershell kullanarak bunun süresini değiştirmek istiyorum. İsmini kullanarak görev nesnesini bir değişkene atıyorum.
$gorev = Get-ScheduledTask -TaskName "Temizlik"Bu görevin birden fazla tetiklemesi olabilir. Mevcut durumu görelim:
$gorev.TriggersTriggers dizisinin içindeki 1 numaralı tetiklemenin tekrarlama sıklığını görelim:
$gorev.Triggers[1].Repetition.IntervalPT5MBu dönen değer ISO 8601 standardına göre bir süre ifadesi:
P: Periyot
T: Time (zaman)
M: Zaman ifadesi olduğu için 1 dakika (Minute)
P1M olsaydı 1 ay (Month) olacaktı. P1M2DT3M gibi bir ifade de 1 ay 2 gün 3 saat yapar. Windows görev zamanlayıcısı bu ifadelerin tümünü desteklemiyor. Basit ifadeler kullanmak lazım.
Bu 5 dakikayı 1 dakika olarak değiştirmek istiyorum. Önce $gorev nesnesini değiştirelim.
$gorev.Triggers[1].Repetition.Interval = "PT1M"2 tetikleyiciden biri periyodik tekrarlayan, diğeri oturum açma/event tabanlı ise bunu aşağıdaki gibi ayırt edebilirim:
$gorev.Triggers | % {
if ($_.CimClass.CimClassName -eq 'MSFT_TaskTimeTrigger') {
$_.Triggers.Repetition.Interval = "PT1M"
}
}Bu nesne henüz sadece RAM'de. Bunu bir de görev zamanlayıcı nesnesi olarak yazalım.
Set-TaskScheduler -InputObject $gorevSonrasında bir de kontrol edelim, uygulanmış mı:
(Get-TaskScheduler -TaskName "Temizlik").Triggers[1].Repetition.IntervalPT1M Olduğunu görmek güzel.
Hiç yorum yok:
Yorum Gönder