PowerShell ile Pratik Çözümler Bölüm 2: PowerShell ile PowerCLI Komutları Kullanılarak VMWare Disk Özet Raporu
  1. Anasayfa
  2. Microsoft PowerShell

PowerShell ile Pratik Çözümler Bölüm 2: PowerShell ile PowerCLI Komutları Kullanılarak VMWare Disk Özet Raporu

0

Yazı dizimize devam ederken öncelikle bu yazı dizisinin bizlere hangi açıdan yararı olacağına değinmek isterim. Elbette ki bu yazı dizisinin, sıfırdan bir eğitim seti olmamakla birlikte bazı iş akışlarımızı otomatize etmek adına ve yapılan işlerimizi nasıl daha Pratik bir hale getirebiliriz düşüncesiyle yazılmış olduğunu belirtmek isterim.

Yazımızda; çok büyük kolaylıklar sağlayan ve bir o kadar da eğlenceli olan PowerCLI konusuna değineceğim. Ayrıca güncel olarak kullandığımız bir örneği de sizlerle paylaşacağım.

PowerCLI, VMware sanallaştırma platformunun bize sağladığı ve gördüğüm kadarıyla çoğu sistem yöneticisi tarafından velinimet sayılan bir platform. Bu platform; sanal sunucu oluşturmadan, varolan sunucularınızın bilgilerini çekmeye veya snapshot oluşturmaya kadar, Vcenter arayüzünden yapacağınız hemen hemen tüm işlemleri yapmanıza olanak sağlıyor. Tabi bunca şeyi yaparken, bir de tüm bu işlemleri Powershell üzerinden gerçekleştirmenize imkan veriyor olması tam bir çikolata ve sütlü dondurma uyumuna getiriyor konuyu :)

İsterseniz vakit kaybetmeden bu iki aşığı kavuşturup bize neler verebilirler ona bakalım. Ek olarak konu detayına girmeden belirtmek isterim ki tüm yazı dizilerimde yapmış olduğum işlemlerde ve powershell entegrasyonlarında Powershell 5.0 versiyonunu kullanmaktayım.

Aşağıdaki adres üzerinde Hasan Güral Hocam’ın “Powershell 5.0 (Windows Management Framework 5.0 Preview) İnceleme Yazısı” adlı yazısını okumanız, sizleri Powershell 5.0 hakkında yeterli seviyede fikir sahibi edecektir.

https://www.mshowto.org/powershell-5-0-windows-management-framework-5-0-preview-inceleme-yazisi.html

Öncelikle bu yazı dizisi için ihtiyacınız olan araç ve gereçler;

  • Powershell 5.0 yüklü bir Client makina
  • İnternet bağlantısı (Offline kuruluma da değineceğiz)
  • Bir tutam Powershell bilgisi :)

PowerCLI kurulumuna gelecek olursak; “$PSVersionTable” ile Powershell versiyonumuzu öğrenerek PowerCLI kurulumuna başlamak için kolları sıvamış oluyoruz.

Resim 1

PS version bilgimizi Resim 1′ deki şekilde öğrendiğimize göre bir sonraki adımımız, Powershell üzerine yeni bir modül tanımlamaktan başka birşey değil.

www.powershellgallery.com yolu üzerinden PowerCLI ile ilgili olan modülü buluyoruz.

Resim 2

Basit bir arama sonrası ihtiyacımız olan modül, Resim 2′ deki gibi karşımıımıza çıkıyor ve içeriğinde size bu modülü nasıl yüklemeniz gerektiği de yazıyor.

“Install-Module -Name VMware.PowerCLI” komutu ile yükleme işlemini gerçekleştirip olanak sağladığı methodlarını kullanabilirsiniz.

Gelelim makinanız üzerinde internet erişimi olmadığı duruma;

Bu durumda modülü Offline olarak local diskiniz üzerinde bir alana çıkarmanız gerekiyor. Aşağıdaki komutu kullanarak bu işlemi gerçekleştirebilirsiniz.

“Save-Module -Name VMware.PowerCLI -Path C:\temp\” Bu komut belirtilen temp dizinine PowerCLI modulünün çıkarılmasını sağlar. Bundan sonra yapmanız gereken Powershell in module dizinlerinden herhangi birine bu klasör altındaki tüm dizinleri kopyalamaktır. Powershell in tanımlı dizinlerini görüntülemek için “$Env:PSModulePath” değişken değerine bakabilirsiniz. Ben bu tür işlemler için genelde varsayılan dizin olarak kullanılan “C:\Windows\System32\WindowsPowerShell\v1.0\Modules” dizinini kullanıyorum.

Bu işlemi de gerçekleştirdikten sonra hemen uygulamaya başlayabiliriz. Tavsiyem en azından aşina olana kadar data getiren komutları kullanmanız olacaktır. Aşağıda belki de en fazla ihtiyacınız olacak iki komut yer almaktadır. Bu komutlar ile hayal gücünüze dayalı olarak istediğiniz kadar rapor oluşturabilirsiniz.

Connect-VIServer: Erişmeniz gereken Vcenter makinasına bağlantı sağlar.

Get-VM: Tüm sanal makinaların durumlarını ve özelliklerini görmenizi sağlar.

Şimdi yalnızca bu iki komutu kullanarak hazırladığım (Tabi biraz powershell bilgisi ile) scripti inceleyelim. Bu scriptin amacı; Vcenter üzerindeki makinalarınızdan disk alanlarını çekip herhangi bir dizin üzerinde belirlediğiniz eşik değerini aşmış durumlar için size rapor üreterek bunu mail olarak tarafınıza göndermek.

$vcenterIP
=
“VcenterIPAdresi”

Connect-VIServer
$vcenterIP  -Credential
$credential  (Get-Credential)#vcenter a bağlanıyoruz

$VMs
=
Get-VM
#Tüm VM bilgilerini çekiyoruz

$allVMs
= @() #Tüm VM(Virtual machine)leri içerisine atacağımz liste

ForEach ($VM
in
$VMs)

{

    if(($VM.Name -notlike
“*Clone*”) -or ($VM.PowerState.ToString() -ne
“PoweredOff”)) #Clone ve Poweroff olan makinaları dikkate almıyoruz.

    {

        Write-Host
$VM.Guest.VmName -ForegroundColor
Green
#Bilgilendirme

        foreach($disk
in
$VM.Guest.Disks) #VM in her bir diski için aşağıdaki işlemleri tekrar ediyoruz.

        {

            $informationVM
=
New-Object
PSObject
#Yeni bir obje oluşturuyoruz

            $capactiyGB
=
[Math]::Truncate($disk.CapacityGB) #Disk kapasitesini alıyoruz

            if(($capactiyGB
-ne
0) -or ($capactiyGB
-ne
1)) #Eğer 0 veya 1 değil ise aşağıdaki kodları gerçekleştiriyoruz.

            {

                $freeSpaceGB
=
[Math]::Truncate($disk.FreeSpaceGB)

                if(($capactiyGB$freeSpaceGB) -eq
0)

                {

                    Write-Host
Diskin
tamamı
boş
-ForegroundColor
Green

                    $usage
=
0

                }

                else

                {

                    $usage
=
[Math]::Truncate($((($capactiyGB$freeSpaceGB)*100)/$capactiyGB))

                }

                if($usage
-ge
90
-and
$usage
-le
100)

                {

                    #Critical

                    Write-Host
Kullanım
oranı
%90
ile
%100
arası
-ForegroundColor
Red

                    $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Status”
-Value
1

                }

                elseif($usage
-ge
80
-and
$usage
-lt
90)

                {

                    #Major

                    Write-Host
Kullanım
oranı
%80
ile
%89
arası
-ForegroundColor
Yellow

                    $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Status”
-Value
2

                }

                else

                {

                    #Normal

                    Write-Host
Kullanım
oranı
normal
düzeyde
-ForegroundColor
Green

                    $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Status”
-Value
3

                }

                #Aşağıda tüm gelen disk değerlerini objenin özelleklerine göre yazdırıyoruz.

                $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“VMName”
-Value
$VM.Guest.VmName

                $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Disk Path”
-Value $($disk.Path)

                $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Capacity”
-Value
$capactiyGB

                $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Free”
-Value
$freeSpaceGB

                $informationVM
|
Add-Member
-MemberType
NoteProperty
-Name
“Usage%”
-Value
$usage

                $allVMs
+=
$informationVM
#Oluşturulan objeyi dizinin içerisine atıyoruz.

            }

        }

    }

}

$allVMs
|
ft
#Ekrana yazdırıyoruz

Umarız ki bu yazıda paylaşmış olduğumuz bilgiler, Powershell ile pratik çözümler bulma yolunda sizlere ışık tutmuştur. Bir sonraki yazımızda; Powershell ile Active Directory Şifre Süresi Dolan Kullanıcı Bilgilendirmesi nasıl hazırlanır? konusuna değineceğiz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://support.microsoft.com/tr-tr

TAGs: Active Directory, PowerCLI kurulumu, Virtual Machine, VMware sanallaştırma platformu,PowerShell ile Pratik Çözümler

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Burak Bingöl, Sakarya Üniversitesi Bilgisayar Mühendisliği mezunudur. 2014 yılından bu yana profesyonel olarak IT sektöründe çalışmaktadır. Halen Netaş'ta Sistem Mühendisi ve Süreç Yönetim Uzmanı olarak görev almaktadır. Genelde Powershell üzerine uzmanlaşmakla beraber, Otomasyon ve Süreç Yönetim araçlarıyla da ilgilenmektedir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir