8 Eki, 2017 Windows PowerShell – PSProviders – Bölüm 10
Burak Bingöl 16/12/2018 Okuma süresi: 5dk, 18sn
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.
Ö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.
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.
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.
$credential (Get-Credential)#vcenter a bağlanıyoruz
#Tüm VM bilgilerini çekiyoruz
= @() #Tüm VM(Virtual machine)leri içerisine atacağımz liste
“*Clone*”) -or ($VM.PowerState.ToString() -ne
“PoweredOff”)) #Clone ve Poweroff olan makinaları dikkate almıyoruz.
$VM.Guest.Disks) #VM in her bir diski için aşağıdaki işlemleri tekrar ediyoruz.
#Yeni bir obje oluşturuyoruz
[Math]::Truncate($disk.CapacityGB) #Disk kapasitesini alıyoruz
0) -or ($capactiyGB
1)) #Eğer 0 veya 1 değil ise aşağıdaki kodları gerçekleştiriyoruz.
#Aşağıda tüm gelen disk değerlerini objenin özelleklerine göre yazdırıyoruz.
#Oluşturulan objeyi dizinin içerisine atı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.
TAGs: Active Directory, PowerCLI kurulumu, Virtual Machine, VMware sanallaştırma platformu,PowerShell ile Pratik Çözümler
Etiketler: active directory, PowerCLI kurulumu, Powershell ile pratik çözümler, virtual machine, VMware sanallaştırma platformu
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.