May 08 2020 07:45 AM
PowerShell ile sistem yöneticilerinin iş akışlarını kolaylaştırması çok basit. Hemen hemen yapılan her rutin iş için komutlardan oluşan kısa bir script ile sıkıcı süreçlere dönüşen işlerden kurtulabilirsiniz. Örneğin bir dosyanız var ve sürekli yedeklenmesi lazım yada 3rd party veya profesyonel bir yedekleme yazılımı kullanmıyor/kullanamıyorsunuz. Bu tip durumlarda düzenli copy paste şeklinde yedek almakla zaman kaybet ve kopyalama sırasında oluşacak hatalarla boğuşmak yerine siz kahvenizi için aşağıdaki script sizin için tanımladığınız süreçte ilgili dosyalarınızı yedeklesin.
Çok basit bir mantığı var scheduled task manager üzerinden zamanlanmış bir görev belirliyor ve bu görev içine robocopy komutu ile ilgili dosya dizininden istediğim dosya dizinine dosyalarımı düzenli olarak kopyalıyorum.
Hemen denemek için aşağıdaki kodu kendinize göre derleyin ve deneyin.
$schedule= New-ScheduledTaskTrigger -At 10:00am –Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe <SourceDestination> <TargetDestination> /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt"
Register-ScheduledTask -TaskName "test" -Trigger $schedule -User $User -Action $Action -RunLevel Highest –Force
Örnek uygulama çıktısı aşağıdaki gibidir.
PS C:\Users\Administrator\Desktop> $schedule= New-ScheduledTaskTrigger -At 10:00am -Daily
PS C:\Users\Administrator\Desktop> $User= "NT AUTHORITY\SYSTEM"
PS C:\Users\Administrator\Desktop> $Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe C:\a C:\b /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt"
PS C:\Users\Administrator\Desktop> Register-ScheduledTask -TaskName "test" -Trigger $schedule -User $User -Action $Action -RunLevel Highest -Force
TaskPath TaskName State
-------- -------- -----
\ test Ready
PS C:\Users\Administrator\Desktop>