Powershell ile IIS Log larının Arşivlenerek Silinmesi
Powershell ile Büyüyen Exchange IIS Log larının Arşivlenerek Silinmesi
Exchange Sunucusu üzerinde IIS Log ları fazla yer kaplamaya başlamıştı ve diskin dolmaya yaklaştığını farkettim. Bunları arşivlemem ve daha sonra silmem gerekiyordu.
Bu işlemi otomatik hale getirmek amacıyla “.bat” uzantılı bir script hazırlamıştım ve onunla yapıyordum. Daha sonra PowerShell ile tekrardan aynı işi yapabileceğim bir PowerShell scripti hazırladım.
Hazırladığım “.ps1” uzantılı Powershell script dosyasını ve sıkışıtrma işlemi için kullanacağım 7za.exe programını IIS sunucusu üzerinde C:\Script dizinini oluşturup içine ekliyorum.
Hazırlamış olduğum script şu şekilde işlem yapıyor;
1-C:\Script\Cache\ klasörü oluşturuyorum.
2-Önceki gün için oluşan “u_ex*.log” formatındaki logları C:\inetpub\logs\LogFiles\W3SVC1\ dizininden keserek cache klasörüne taşıyorum.
3-Boyuttan kazanmak için 7za.exe‘yi kullanarak, oluşacak olan zip uzantılı dosya ismi ise tarih ve sunucu ismi olacak şekilde (Exchange01_IIS_160224.zip gibi) sıkıştırma işlemi yapıyorum.
4-Daha sonra sıkışan .zip uzantılı IIS loglarını logları arşivlemek için kullandığım depolama alanına gönderiyorum.
5-En son olarak ise Cache klasörü ve içindeki log dosyalarını tamamen siliyorum.
Bu oluşturmuş olduğum scripti, hergün çalışması için Görev Zamanlayıcı (Task Scheduler)‘ya tanımlıyorum.
Task Scheduler tanımlarken, bir önceki günün loglarını sıkıştırma işlemi yapacak şekilde oluşturduğum için Hergün Saat 02.00‘da çalışacak şekilde tanımladım. Siz isteğinize göre de tanımlayabilirsiniz. Ben genellikle bu tür işlemler için hazırladığım Task’ları geceleri çalıştırıyorum.
Oluşturduğum Scripti aşağıda paylaşıyorum. Sizde kendi isteklerinize göre düzenleyip kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# C:\Script klasöründe "Cache" adında klasör oluşturuyorum. md C:\Script\Cache -Force # Dosya adı BilgisayarAdı+IIS+Tarih içerecek şekilde, filename adında bir değişken tanımlıyorum. $filename= $env:computername+"_"+"IIS_"+$(get-date -f yy-MM-dd) #İlgili dizinde Oluşturma Tarihi bugünden 1 eksilterek dün ve varsa önceki dosyaları getiriyorum. $bugundenoncekiloglar=Get-ChildItem C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log | Where{$_.CreationTime -le (Get-Date).AddDays(-1)} #Sıkıştırma işlemi için logları önceden oluşturduğum cache klasörüne taşıyorum. Move-Item $bugundenoncekiloglar -Destination C:\Script\Cache #7zip kullanarak, cache klasörüne taşıdığım mevcut log dosyasını zip olarak sıkıştırıyorum. #filename değişkeni sayesinde ise dosya adının "Exchange01_IIS_160224.zip" olmasını sağlıyorum. C:\Script\7Za.exe a C:\Script\$filename.zip C:\Script\Cache\*.* #Sıkıştırmış olduğum logları, log yedeklemeleri yaptığım sunucuya taşınmasını sağlıyorum. Move-Item *.zip -Destination \\192.168.6.10\LogArchive\ExchangeIIS\ #Daha sonra sıkıştırma işlemi yapmak için taşımış olduğum Cache klasörünü siliyorum. Remove-Item C:\Script\Cache\ -Recurse |
"Powershell ile IIS Log larının Arşivlenerek Silinmesi" yazısı için hiç yorum yapılmamış..