about_Scheduled_Jobs_Basics

Kısa açıklama

Zamanlanmış işlerin nasıl oluşturulacağını ve yönetileceğini açıklar.

Uzun açıklama

Bu belgede, zamanlanmış işleri oluşturma ve yönetmeyle ilgili temel görevlerin nasıl gerçekleştirilmesi gösterilmektedir. Daha gelişmiş görevler hakkında daha fazla bilgi için bkz . about_Scheduled_Jobs_Advanced.

PSScheduledJob modülünde yer alan cmdlet'ler hakkında daha fazla bilgi için bkz. PSScheduledJob.

Zamanlanmış iş oluşturma

Zamanlanmış iş oluşturmak için cmdlet'ini Register-ScheduledJob kullanın. Cmdlet bir ad ve işin çalıştırıldığı komutlar veya betik gerektirir. RunNow parametresini ekleyerek işi hemen çalıştırabilir veya bir iş tetikleyicisi oluşturabilir ve işi oluştururken iş seçeneklerini ayarlayabilir veya var olan bir işi düzenleyebilirsiniz.

Betik çalıştıran bir iş oluşturmak için FilePath parametresini kullanarak betik dosyasının yolunu belirtin. Komutları çalıştıran bir iş oluşturmak için ScriptBlock parametresini kullanın.

cmdlet'i Register-ScheduledJob bir Get-Process komut çalıştıran ProcessJob'ı oluşturur. Bu zamanlanmış işin varsayılan iş seçenekleri vardır ve iş tetikleyicisi yoktur.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

İş tetikleyicisi oluşturma

İş tetikleyicileri zamanlanmış işi otomatik olarak başlatır. İş tetikleyicisi, bir kullanıcı oturum açtığında veya Windows başlatıldığında olduğu gibi bir kerelik veya yinelenen zamanlama ya da olay olabilir. Her işin sıfır, bir veya birden çok iş tetikleyicisi olabilir.

İş tetikleyicisi oluşturmak için cmdlet'ini New-JobTrigger kullanın. Aşağıdaki komut, her Pazartesi ve Perşembe saat 05:00'te bir iş başlatan bir iş tetikleyicisi oluşturur. komutu, iş tetikleyicisini değişkene $T kaydeder.

$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"

İş tetikleyicileri isteğe bağlıdır. Komutunuz Register-ScheduledJob için RunNow parametresini ekleyerek veya cmdlet'leri kullanarak Start-Job zamanlanmış bir işi istediğiniz zaman başlatabilirsiniz.

İş tetikleyicisi ekleme

Zamanlanmış bir işe iş tetikleyicisi eklediğinizde, iş tetikleyicisi zamanlanan işin zamanlanmış iş XML dosyasına eklenir ve zamanlanan işin bir parçası olur.

Zamanlanmış işi oluştururken zamanlanmış bir işe iş tetikleyicisi ekleyebilir veya var olan bir işi düzenleyebilirsiniz. Zamanlanmış bir işin iş tetikleyicisini istediğiniz zaman değiştirebilirsiniz.

PowerShell, Görev Zamanlayıcı'nın kullandığı aynı iş tetikleyicilerinden bazılarını kullanır. İş tetikleyicileri hakkında ayrıntılı bilgi için New-JobTrigger cmdlet'inin yardım konusuna bakın.

Aşağıdaki örnek, cmdlet'e geçirilen parametre değerleri olan değerleri oluşturmak $JobParms için Register-ScheduledJob splatting kullanır. Daha fazla bilgi için bkz . about_Splatting.md. Register-ScheduledJob Zamanlanmış iş oluşturmak için kullanılanlar@JobParms. Değişkende iş tetikleyicisini belirtmek için Trigger parametresini $T kullanır.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Command}
  Trigger = $T
}

Register-ScheduledJob @JobParms

Ayrıca, istediğiniz zaman mevcut bir zamanlanmış işe iş tetikleyicisi de ekleyebilirsiniz. cmdlet değişkenindeki Add-JobTrigger iş tetikleyicisini $TProcessJob zamanlanmış işine ekler.

Add-JobTrigger -Name ProcessJob -Trigger $T

Sonuç olarak, iş tetikleyicisi ProcessJob'ı her Pazartesi ve Perşembe saat 05:00'te otomatik olarak başlatır.

İş tetikleyicisi alma

Zamanlanmış bir işin iş tetikleyicisini almak için cmdlet'ini Get-JobTrigger kullanın. İş tetikleyicisini değil zamanlanmış işi belirtmek için Ad, Kimlik ve InputObject parametrelerini kullanın.

Get-JobTriggerProcessJob'un iş tetikleyicisini alır.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

İş seçenekleri oluşturma

İş seçenekleri, işi başlatmak ve çalıştırmak için koşullar oluşturur. Siz değiştirmediğiniz sürece her işin varsayılan iş seçenekleri vardır. İş seçenekleri bir işin zamanlanan zamanda çalışmasını engelleyebileceğinden, iş seçeneklerini anlamak ve bunları dikkatle kullanmak önemlidir.

PowerShell, Görev Zamanlayıcı'nın kullandığı iş seçeneklerini kullanır. İş seçenekleri hakkında ayrıntılı bilgi için New-ScheduledJobOption yardım konusuna bakın.

İş seçenekleri zamanlanmış iş XML dosyasında depolanır. Zamanlanmış bir iş oluştururken iş seçeneklerini ayarlayabilir veya istediğiniz zaman değiştirebilirsiniz.

Cmdlet, New-ScheduledJobOption WakeToRun zamanlanmış iş seçeneğinin True olarak ayarlandığı zamanlanmış bir iş seçeneği oluşturur. Bilgisayar zamanlanan başlangıç zamanında Uyku veya Hazırda Beklet durumunda olsa bile WakeToRun seçeneği zamanlanmış işi çalıştırır. komutu, iş seçeneklerini değişkene $O kaydeder.

$O = New-ScheduledJobOption -WakeToRun

İş seçeneklerini alma

Zamanlanmış işin iş seçeneklerini almak için cmdlet'ini Get-ScheduledJobOption kullanın. İş seçeneklerini değil zamanlanmış işi belirtmek için Name, ID ve InputObject parametrelerini kullanın.

Get-ScheduledJobOptionProcessJob'un iş seçeneklerini alır.

Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries     : False
StopIfGoingOnBatteries : True
WakeToRun              : False
StartIfNotIdle         : True
StopIfGoingOffIdle     : False
RestartOnIdleResume    : False
IdleDuration           : 00:10:00
IdleTimeout            : 01:00:00
ShowInTaskScheduler    : True
RunElevated            : False
RunWithoutNetwork      : True
DoNotAllowDemandStart  : False
MultipleInstancePolicy : IgnoreNew
JobDefinition          : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

İş seçeneklerini değiştirme

Zamanlanmış bir iş oluştururken veya var olan bir işi düzenlerken zamanlanmış işin iş seçeneklerini değiştirebilirsiniz.

Splatted $JobParms , işlem işini oluşturmak için Add-JobTrigger cmdlet'ine geçirilir. Değişkendeki iş seçeneklerini belirtmek için ScheduledJobOption parametresini $O kullanır.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

ayrıca, iş seçeneklerini istediğiniz zaman mevcut bir zamanlanmış işle değiştirebilirsiniz. Aşağıdaki komut, ProcessJob scheduledJob öğesinin WakeToRun seçeneğinin değerini True olarak değiştirmek için cmdlet'ini kullanırSet-ScheduledJobOption.

Set CMdlet gibi PSScheduledJob modülündeki Set-ScheduledJobOption cmdlet'lerde Ad veya Kimlik parametreleri yoktur. InputObject parametresini kullanarak zamanlanmış iş seçeneklerini belirtebilir veya cmdlet'inden Get-ScheduledJobOption zamanlanmış bir işi öğesine yöneltebilirsinizSet-ScheduledJobOption.

Bu örnek, ProcessJob'ı almak için cmdlet'ini kullanır Get-ScheduledJob . processjob içindeki Get-ScheduledJobOption iş seçeneklerini almak için cmdlet'ini, Set-ScheduledJobOption ProcessJob içindeki WakeToRun iş seçeneğini True olarak değiştirmek için cmdlet'ini kullanır.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

Zamanlanmış iş örneklerini alma

Zamanlanmış bir iş başlatıldığında PowerShell, standart bir PowerShell arka plan işine benzer bir iş örneği oluşturur. gibi iş cmdlet'lerini Get-JobStop-JobReceive-Job kullanarak iş örneklerini yönetebilirsiniz.

Not

zamanlanmış işlerin örneklerinde iş cmdlet'lerini kullanmak için PSScheduledJob modülü oturuma aktarılmalıdır. PSScheduledJob modülünü içeri aktarmak için, gibi Get-ScheduledJobherhangi bir zamanlanmış iş cmdlet'ini yazın Import-Module PSScheduledJob veya kullanın.

PowerShell zamanlanmış işlerinin tüm örneklerini ve tüm etkin standart işleri almak için cmdlet'ini Get-Job kullanın. cmdlet'i Import-Module PSScheduledJob modülünü içeri aktarır ve Get-Job işleri yerel bilgisayarda alır.

Import-Module PSScheduledJob
Get-Job

Get-Jobyerel bilgisayardaki ProcessJob örneklerini alır.

Get-Job -Name ProcessJob
Id     Name        PSJobTypeName  State    HasMoreData   Location   Command
--     ----        ------------   -----    -----------   --------   -------
45     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
46     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
47     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
48     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
49     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
50     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
51     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process

Varsayılan görüntü, genellikle aynı zamanlanmış işin örneklerini ayırt eden başlangıç saatini göstermez.

Cmdlet, Get-Job nesneleri işlem hattına gönderir. cmdlet'i Format-Table zamanlanmış işin Name, ID ve BeginTime özelliklerini görüntüler.

Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name       Id BeginTime
----       -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM

Zamanlanmış iş sonuçlarını alma

Zamanlanmış bir işin örneğinin sonuçlarını almak için cmdlet'ini Receive-Job kullanın.

Not

zamanlanmış işlerin örneklerinde İş cmdlet'lerini kullanmak için PSScheduledJob modülü oturuma aktarılmalıdır. PSScheduledJob modülünü içeri aktarmak için, gibi Get-ScheduledJobherhangi bir zamanlanmış iş cmdlet'ini yazın Import-Module PSScheduledJob veya kullanın.

Bu örnek, ProcessJob zamanlanmış işinin (KIMLIK = 51) en yeni örneğinin sonuçlarını alır.

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

Zamanlanmış işlerin sonuçları diske kaydedilir, bu nedenle Keep parametresi Receive-Job gerekli değildir. Ancak Keep parametresi olmadan, zamanlanmış bir işin sonuçlarını her PowerShell oturumunda yalnızca bir kez alabilirsiniz. Yeni bir PowerShell oturumu başlatmak için yeni bir PowerShell penceresi yazın PowerShell veya açın.

Ayrıca bkz.