Powershell ?le Disk Kullan?m?n?n Takibi (Disk Usage Control With Powerhsell)

Merhaba arkada?lar;
Bu makalede sunucu veya bilgisayarlar?n?n?z disk durumlar?n? inceleme ve belli kriterler alt?nda uyar? üretme i?lemininin powershell ile nas?l yap?laca??n? anlataca??m.
Senaryo olarak elimizde sunucular?m?z var. Bu sunucular üzerindeki disklerde hizmet verebilmek için yeterli miktarda bo? yer olmas? gerekiyor. Sunucu disklerinin dolmas?ndan önce kendi belirtece?imiz kriterlere göre sistemin bizi uyarmas?n? istiyoruz. Burada araya girerek ?unu eklemem gerek bu i?lem SCOM ve benzeri sistemler ile zaten yap?labilmektedir. Manuel olarak ise belli aral?klarla diskler kontrol edilerek sorun giderilebilir. Biz senaryo olarak herhangi bir izleme sistemine sahip olmad???m?z? ve manuel kontrol yapmak istemedi?imizi varsay?yoruz. Zaten sununu say?s? artt?kça manuel kontrol i?lemi içinden ç?k?lamaz bir sorun halini al?r. Ayr?ca i?leri powershell’e yapt?rmay? çok sevdi?imizden bu i?i de powershell vas?tas?yla yap?yoruz. JJJ.
Kodumuz sunucu listemizdeki tüm sunucular?n disk bilgilerini okuyacak ve bizim istedi?imiz kritere göre uyar? üretecek. Bu makale için benim tan?mlad???m kriter ?u ?ekilde “Diskte bo? yer 100 GB’?n alt?na indiyse ve diskteki bo? alan miktar? % 15’in alt?nda ise uyar? üret”. Bu kriteri kod üzerinde basit de?i?iklikler ile kendi iste?iniz do?rultusunda de?i?tirebilirsiniz.
Öncelikle Script’in sunucular?n bilgilerini okuyaca?? bir text döküman?na ihtiyac?m?z var. Bizim text döküman?m?z a?a??daki resimdeki gibi. Sunular?n?z?n ismini ya da IP adresini yazman?z yeterli.

Bu a?amadan sonra scriptimizi sizinle payla?ay?m.

H?zl?ca anlatmak gerekirse. Servers.txt dosyas?ndan sunucu bilgilerini okuyoruz. Her sunucudan WM? yard?m?yla disk bilgilerini çekiyoruz. Çekti?imiz disk bililerine göre disk boyutu s?f?r de?il ve 10 GB’dan(burada asl?nda incelenecek disk seçme i?lemi yap?yoruz ve disk tipine göre de i?lem yap?labilir.) büyük ise kriterimizi i?letiyoruz. Kritere uyan hallerde uyar? üretip bir de?i?kene bu uyar?y? yaz?yoruz. En sonda da uyar?lar?n bulundu?u de?i?kenin içeri?ini ekrana yazd?r?yoruz. Script’i makalenin sonunda metin olarak payla?aca??m.
Script’i çal??t?rd?ktan sonraki ekran görüntüsü ?u ?ekilde:

Script’in metni de ?u ?ekilde:
$servers=Get-Content servers.txt
$1GB=1073741824

$metin=””
$tarih=Get-Date

foreach($server in $servers)
{
$disks=get-WmiObject win32_logicaldisk -Computername $server

foreach($disk in $disks)
{
$id=$disk.DeviceID
$size=$disk.Size
$freeSpace=$disk.FreeSpace
$size=[double]$size
$freeSpace=[double]$freeSpace

$free=(($freeSpace/$size)*100)

if(($size -ne 0) -and ($size -gt 10*$1GB))
{
$size=[math]::floor($size/$1GB)
$freeSpace=[math]::floor($freeSpace/$1GB)
$free=[math]::floor($free)
if(($freeSpace -lt 100) -and ($free -lt 15))
{
#Write-Host $server Sunucusunda $id diskinde $freeSpace GB bo? yer kald? ve diskte % $free lik bo? yer var. Diskin Boyutu= $size GB
$metin+=”$server Sunucusunda $id diskinde $freeSpace GB bo? yer kald? ve diskte % $free lik bo? yer var. Diskin Boyutu= $size GB”
$metin+=”`n”
}
}
}
}
$metin+=$tarih

$metin

Bu script ?u haliyle pek de i?e yarar de?il çünkü uyar?y? almak için elle komut çal??t?rmak gerekiyor. Bu scriptin daha i?levsel olabilmesi için bu kontrolü belli aral?klarla otomatik olarak yapmas? ve herhangi bir uyar? olu?ursa bunu mail ile göndermesi daha sa?l?kl? olacakt?r.