PowerCLI
Powershell diğer yazılım dillerindeki kütüphaneler gibi kullanabileceğiniz modüller sunar. PowerShell Gallery | Home üzerinden modüllerin listesine nasıl indirildiğini ve sürümlerini görüntüleyebilirsin
PowerShell modülleri PowerShell script ve komut dosyalarınıza ek fonksiyonelliği eklemek için kullanılan, önceden yazılmış kod blokları ve komut setlerini içeren dosyalardır. PowerShell modülleri, işlevselliklerinizi organize etmek, tekrar kullanmak ve yönetmek için harika bir yol sunar.
Modül Yükleme: PowerShell modüllerini yüklemek için Install-Module komutunu kullanabilirsiniz. Örneğin:
Install-Module -Name ModulAdi
Biz bu örneğimizde VMware’in PowerCLI modülünü kullanacağımız için ;
Install-Module -Name VMware.PowerCLI
Modül İçe Aktarma: Yüklenen bir modülü PowerShell oturumunuza içe aktarmak için Import-Module komutunu kullanabilirsiniz:
Import-Module ModulAdi
PowerCLI için;
Import-Module VMware.PowerCLI
Modül Listeleme: Yüklenmiş modülleri ve mevcut oturumda içe aktarılmış modülleri listelemek için Get-Module komutunu kullanabilirsiniz:
Get-Module -ListAvailable # Yüklü ancak içe aktarılmamış modülleri listeler
Get-Module -Name ModulAdi # Belirli bir modülü listeler
Modül Kaldırma: Yüklenmiş bir modülü kaldırmak için Uninstall-Module komutunu kullanabilirsiniz:
Uninstall-Module -Name ModulAdi
Basit bir kaç bilgiyi verdikten sonra asıl işi yapacak powershell komutuna geçebiliriz.
# vCenter'a bağlanmak için
Connect-VIServer -Server Vcenter-Ip-Adres-veya-FQDN -User Bağlanıcak_KullanıcıAdı -Password Şifre
# Sanal makinelerin listesi (örneğin, txt dosyasından okunacak)
$vmList = Get-Content -Path "C:\Path\To\Your\VMList.txt"
# Her bir sanal makine için snapshot al
foreach ($vmName in $vmList) {
$vm = Get-VM -Name $vmName
# Snapshot al
New-Snapshot -VM $vm -Name "SnapshotName" -Description "SnapshotDescription"
# İşlem tamamlandığında bilgi ver
Write-Host "Snapshot alındı for $vmName"
}
Kısaca yazdıklarımız hakkında bilgi vermek gerekirse “Get-Content -Path” şu işlevi yerine getiriyor belirttiğimiz yolda dosya içeresindeki veriyi alıp $vmList isimli değişkene atıyor. Evet powershell’de diğer yazılım dilleri gibi değişkenlere sahip ve bunları başına “$” işareti koyarak tanımlıyoruz. Yine diğer yazılım dillerinden aşına olduğumuz foreach yapısı bizi karşılıyor. Burada .txt içerisinden aldığımız verileri bir değişkene atamıştık ve bunun içinde tutuyorduk artık bu değişkenin içeresindeki verileri teker teker işleme sokuyoruz. “$vm = Get-VM -Name $vmName” burada Get-VM komutu tek başına çalıştırılırsa VMware Vsphere üzerindeki tüm sunucuların listesini getirecektir. Ama biz $vmName ile sadece döngünün içeresinden gelen sunucuyu getirmiş oluyoruz ve bunu $vm değişkenine atıyoruz ve böylelikle “New-Snapshot -VM $vm -Name “SnapshotName” -Description “SnapshotDescription” dediğimizde listeden gelen sunucunun snaphot’ını alabiliyoruz. Şunu belirtmekte fayda var şöyle düşünebilirsiniz neden tekrar $vm değişkenine atıyoruz ki New-Snapshot -VM ‘den sonra $vm yerine $vmName yazsak zaten iş çözülecek. Evet ancak o zaman doğru bir algoritma kurmuş olmuyoruz. Listeden aldığımız sunucunun ismi yanlış olabilir veya VSphere üzerinde bu isimle bulunmuyor olabilir aslında Get-VM ile bu sunucunun sanalda var olduğunu ve sanalda hangi sunucu üzerinde işlem yapacağımızı biliyor oluyoruz. “Write-Host “Snapshot alındı for $vmName”” komutu ile de snapshot’ı alınan sunucunun bilgisini ekrana yazıyoruz. Write-Host ‘u diğer yazılım dillerinde ki gibi örneğin C# Console.Writeline() Python da ki Print() ile aynı işlevi görmekte ekrana bilgi yazdırmak için kullanıyoruz.
Ekstra olarak bir şey daha eklemekte fayda var;
New-Snapshot -VM $vm -Name “SnapshotName” -Description “SnapshotDescription” snapshot almamızı sağlayan bu kodun yanına birde -Memory parametresini eklersek (Parametreler “-“ belirtilir)
New-Snapshot -VM $vm -Name “SnapshotName” -Description “SnapshotDescription” -Memory şeklinde eklersek aşağıdaki görseldeki Snapshot the virtual machine’s memory seçeneğinizde işaretlemiş oluyoruz. Bu seçeneğin ve altındaki seçeneğin ne olduğunu daha detaylı şekilde açıklayacağımız bir yazımızda sitemizde olacak şimdilik “Sanal makinenin belleğini anlık olarak kaydetmek” diyerek yazımı sonlandırıyorum. İyi okumalar…



