Selamlar arkadaşlar bu makalemde sizlere PowerShell üzerinde JOB çalıştırmayı anlatacağım.
Sonuçlanması uzun sürecek bir kodu PowerShell konsolunda çalıştırdığınızda, yapmış olduğunuz işlem bitmeden yeni komutlar anlık konsolunuzun üzerinde çalıştaramazsınız. Varsayılan olarak PowerShell bu komut tamamlanana kadar konsolu kapatacaktır ve işlem yapmanıza izin vermeyecektir. Böylesi bir durumda komutun tamamlanmasını beklemeli ya da yeni bir konsol açarak kod yazmalısınız ancak yeni bir konsol açmanız durumunda öncesinde oluşturmuş olduğunuz değişkenleri vs. kullanamayacaksınız.
Bu tür olayları engellemek için oluşturulan JOB ile komutunuz arkaplanda çalıştırılması sağlayabilir ve bu sırada sizde konsol üzerinde çalışmaya devam edebilirsiniz. Microsoft bu JOBlara Background Job, Remote Job, VMI Job adlarını vererek katogorilere ayırmıştır ancak hepsinin çalışma mantığı aynıdır. Ör olarak bir VMI sorgunusunu JOB olarak çalıştırırsanız bu bir VMI JOB olacaktır.
> Start-Job -ScriptBlock { Get-ADObject -Filter * -Properties * }
// Komutu
yardımıyla -ScriptBlock‘ta { } (Süslü Parantezlerin) arasındaki
yazılan kodlar arka planda çalıştırılacaktır.
> Get-Job -Name Job
// Kodu yardımıyla JOB‘ımız durumunu
State alanında görebilmekteyiz. Bu sorgulama işlemini -Id yardımıyla JOB Id bilgisini
girerekte yapabiliriz.
> Get-Job -Id 1 -IncludeChildJob
// Çalıştırılan bir JOB otomatik
olarak PowerShell tarafından alt JOB‘lara bölünecektir. Bu kod
yardımıyla alt JOB‘ları
görebilirsiniz.
> Receive-Job
-Id 1
// Komutu yardımıyla çalıştırılan JOB‘ın
sonuçları gösterilecektir.
> Receive-Job
-Id 1 -Keep
// Ek olarak -Keep komutu ile
çalıştırmanız durumunda sonuçlar silinmeyecek
ve HasMoreData alanı her zaman True olarak kalacaktır.
> Receive-Job 3
> C:\Sonuc.txt
// Komutu yardımıylada sonuçları dışarı export
edebilirsiniz.
Bir sonraki makalemde görüşmek üzere kolaylıklar dilerim.