Aracılığıyla paylaş


about_Scheduled_Jobs_Advanced

Kısa açıklama

Zamanlanmış işleri destekleyen dosya yapısı da dahil olmak üzere gelişmiş zamanlanmış iş konularını açıklar.

Uzun açıklama

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

Zamanlanmış iş dizinleri ve dosyaları

PowerShell zamanlanmış işleri hem PowerShell işleri hem de Görev Zamanlayıcı görevleridir. Zamanlanan her iş Görev Zamanlayıcı'ya kaydedilir ve Microsoft .NET Framework Serileştirme XML biçiminde diske kaydedilir.

Zamanlanmış bir iş oluşturduğunuzda PowerShell, yerel bilgisayardaki dizinde $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs zamanlanmış iş için bir dizin oluşturur. Dizin adı, iş adıyla aynıdır.

Aşağıda örnek bir ScheduledJobs dizini verilmiştir .

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

Zamanlanan her işin kendi dizini vardır. Dizin, zamanlanmış iş XML dosyasını ve output alt dizinini içerir.

$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

Zamanlanmış bir işin Output dizini yürütme geçmişini içerir. bir iş tetikleyicisi zamanlanmış bir işi her başlattığında PowerShell çıkış dizininde zaman damgası adlı bir dizin oluşturur. Zaman damgası dizini, bir Results.xml dosyasında işin sonuçlarını ve Status.xml dosyasındaki iş durumunu içerir.

Aşağıdaki komut, ProcessJob zamanlanmış işinin yürütme geçmişi dizinlerini gösterir.

$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

ScheduledJobDefinition.xml, Results.xml ve Status.xml dosyalarını açıp inceleyebilir veya dosyaları ayrıştırmak için cmdlet'ini kullanabilirsinizSelect-XML.

Uyarı

XML dosyalarını düzenlemeyin. Herhangi bir XML dosyası geçersiz XML içeriyorsa, PowerShell zamanlanmış işi ve iş sonuçları dahil yürütme geçmişini siler.

Zamanlanmış işi hemen başlatma

Zamanlanmış bir işi iki yoldan biriyle hemen başlatabilirsiniz:

  • Start-Job Zamanlanmış herhangi bir işi başlatmak için cmdlet'ini çalıştırın.
  • komutu çalıştırılır çalıştırılır çalıştırlanmaz işi başlatmak için komutunuza Register-ScheduledJob RunNow parametresini ekleyin.

cmdlet'i kullanılarak Start-Job başlatılan işler, zamanlanmış işin örnekleri değil standart PowerShell arka plan işleridir. Tüm arka plan işleri gibi bu işler de hemen başlar, iş seçeneklerine tabi değildir veya iş tetikleyicilerinden etkilenmez. İş çıktısı, zamanlanan iş dizininin Çıkış dizinine kaydedilmez.

Aşağıdaki komut, ProcessJob zamanlanmış işini başlatmak için cmdlet'in Start-Job DefinitionName parametresini kullanır.

Start-Job -DefinitionName ProcessJob

İşi yönetmek ve iş sonuçlarını almak için iş cmdlet'lerini kullanın. İş cmdlet'leri hakkında daha fazla bilgi için bkz . about_Jobs.

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.

Zamanlanmış işi yeniden adlandırma

Zamanlanmış işi yeniden adlandırmak için cmdlet'in Name parametresini Set-ScheduledJob kullanın. Zamanlanmış bir işi yeniden adlandırdığınızda PowerShell, zamanlanmış işin adını ve zamanlanmış iş dizinini değiştirir. Ancak, zaten çalıştırılan zamanlanmış işin örneklerinin adlarını değiştirmez.

Başlangıç ve bitiş saatlerini alma

İş örneklerinin başlayıp sonlandırıldığı tarihleri ve saatleri almak için, zamanlanmış işler için döndüren ScheduledJob nesnesinin PSBeginTime ve PSEndTime özelliklerini kullanın.Get-Job

Aşağıdaki örnek, bir tablodaki her iş örneğinin Format-Table PSBeginTime ve PSEndTime özelliklerini görüntülemek için cmdlet'in Property parametresini kullanır. Label adlı hesaplanan özellik, her iş örneğinin geçen süresini görüntüler.

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

Yürütme geçmişini yönetme

Zamanlanan her iş için kaydedilen iş örneği sonuçlarının sayısını belirleyebilir ve zamanlanmış herhangi bir işin yürütme geçmişini ve kaydedilmiş iş sonuçlarını silebilirsiniz.

Zamanlanmış işin ExecutionHistoryLength özelliği, zamanlanan iş için kaç iş örneği sonucunun kaydedileceğini belirler. Kaydedilen sonuçların sayısı ExecutionHistoryLength özelliğinin değerini aştığında PowerShell, en yeni örneğin sonuçlarına yer açmak için en eski örneğin sonuçlarını siler.

Varsayılan olarak, PowerShell her zamanlanmış işin 32 örneğinin yürütme geçmişini ve sonuçlarını kaydeder. Bu değeri değiştirmek için veya cmdlet'lerinin Register-ScheduledJob MaxResultCount parametrelerini kullanın.Set-ScheduledJob

Zamanlanmış bir işin yürütme geçmişini ve tüm sonuçlarını silmek için cmdlet'in ClearExecutionHistory parametresini Set-ScheduledJob kullanın. Bu yürütme geçmişinin silinmesi, PowerShell'in zamanlanmış işin yeni örneklerinin sonuçlarını kaydetmesini engellemez.

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. Komut, zamanlanan işin yalnızca en yeni 12 iş örneği sonucunu kaydetmek için 12 değerine sahip MaxResultCount parametresini kullanır.

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

Register-ScheduledJob @JobParms

Aşağıdaki komut, kaydedilen örnek sonuçlarının sayısını 15'e artırmak için cmdlet'in MaxResultCount parametresini Set-ScheduledJob kullanır.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

Aşağıdaki komut, ProcessJob zamanlanmış işinin yürütme geçmişini ve geçerli kaydedilmiş sonuçlarını siler.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

Aşağıdaki komut, bilgisayardaki tüm zamanlanmış işlerin name ve ExecutionHistoryLength özelliklerinin değerlerini alır ve bunları bir tabloda görüntüler.

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

Ayrıca bkz.