Hyper-V Server Yönetirken Bilmeniz Gereken Basit Powershell Komutları
Önceki yazılarımda Hyper-V Server’ın GUI ve CORE arabirimleri arasındaki farklarından detaylıca bahsetmiştim. Okumak isteyenler için bu yazının en altına linkleri yerleştirdim. Grafik arabirimi yönetmesi ve sorun çözmesi nispeten daha kolaydır. Bu durum genel olarak tüm sistemlerde böyledir çünkü herkes kod satırlarına alışık değildir. Full-Desktop (GUI) yada Core kurulumları Hyper-V Manager, Server Manager, Admin Center ve System Center VMM gibi GUI araçlarla yönetebilirsiniz ama istenmeyen durumlarda bazen kontrol sizden çıkabilir ve yerinden yönetim yapmanız gerektiğinde yolunuz Powershell gibi güçlü bir araçla kesişebilir. İşte bu durumlarda temel düzeyde bilmeniz gereken komutlar.
Not: İşlemlerin çoğu yönetici yetkisi gerektirdiği için yönetici hakları ile oturum açmanız gerekmektedir.
Get-Command
İçerisinde -vm geçen komutları bu komut sayesinde getirebiliriz. Anlık durumlarda ‘acaba bunu powershell ile yapabilir miyim?’ derken işinize yarayabilecek komutları önünüze dökebilir.
Get-Command *-vm şeklinde kullanırsanız sonuç aşağıdaki gibi döner.
Get-VM
Hyper-v hostu üzerinde kurulu sanal makineleri listeler. Bu listelemeyi yaparken sanal makinelerin adını, açık-kapalı durumunu, cpu kullanımını, yüklü ram miktarını, çalışma zamanını, durumunu ve versiyon bilgilerini görebilirsiniz. Böylece hangi makineye müdahale etmeniz gerektiğini anlayabiliriz.
Start-VM
Windows 10 test makinem off yani kapalı durumda. Bir şekilde Hyper-V Manager ile bağlantı kuramadığımız sunucumuza elle müdahele etmemiz gerektiğinde bu komutlar çok işimize yarar.
Start-VM -Name ‘Windows 10 Test’ yazarak makinemi başlatıyorum.
İsterseniz tek komut ile adında Windows geçen tüm sanal makineleri de başlatabilirsiniz. Bunun için Start-VM -Name Windows* yazdım ve adında Windows geçen iki makinem de açıldı. Bu komut ile isimlendirmede belirli bir standardı olan sunucularda hızlı sonuçlar alabiliriz.
Stop-VM
Bu komut ise Start-VM komutunun tam tersidir ve makineleri normal şekilde shutdown komutu vermek için kullanılır.
Stop-VM -Name ‘VmName’ şeklinde kullanılır.
Grafik arabirimde olan ‘power off’ butonunun powersell karşılığı;
Stop-VM -Name ‘VmName’ -Turnoff
Bu komut sayesinde tabiri caiz ise çat diye kapatırsınız ancak dikkatli kullanmanız gerekiyor çünkü sanal makineler düzensiz kapandığı için tekrar açılmakta sorun yaratabilir. Zor durumda kaldığınızda kullanmanızı tavsiye ederim.
Makine normal şekilde kapatmaya cevap vermiyor ise Stop-VM -Name ‘VmName’ -Force yazarak kapatmaya zorla komutu verebilirsiniz. Bu durum makine üzerinde çalışan program veya veritabanının işlemleri kaydetmesini beklemediği için yine zorda kalmadıkça kullanmayın.
Save-VM
Bu komut ile sanal makinenin durumunu kaydederiz.
Save-VM -Name ‘Windows10’
Measure-VMReplication
Hyper-V Replika etkin ise replikasyonu yapılan makinelerin durumuna bakmak için kullanılır. Son replikasyonun sağlıklı bir şekilde yapılıp yapılmadığını bakarak gerekli aksiyonu alabiliriz.
Measure-VMReplication VM1, VM2, VM3 gibi çoklu seçim ile replikasyon durumunu birden fazla sanal makinede sorgulayabiliriz.Örnek aşağıdaki gibi…
Export-VM
Sanal makineyi dışarı aktarmak için kullanılır. Klon ihtiyacı yada farklı ihtiyaçlar durumunda oldukça işe yarar bir komuttur. Hyper-V Server üzerindeki sanal makineyi herşeyi ile dışarı aktarmak için aşağıdaki şekilde komutu kullanabilirsiniz.
Export-VM -Name SanalMakineAdı -Path ‘C:\hyper-v exports\’
Chekpoint-VM
Sistemin anlık görüntüsünü almak için kullanılır. Bir sanal makine üzerinde işlem yapmamız gerekiyor ise ne olur ne olmaz diye snapshot almamız gerekebilir. Örnek kullanımı aşağıdaki gibidir.
Checkpoint-VM -Name SanalMakineAdı -SnapshotName Açıklama
Get-VmSwitch ve Get-VMNetworkAdapter
Get-VmSwitch komutu ile Hyper-V Host üzerinde oluşturulmuş sanal switchleri görebilirsiniz. Get-VmNetworkAdapter ise daha detaylı sonuçlar verir. Sanal makinenin bağlı olduğu switch, mac adresi, durumu ve IP adres bilgisine kadar sonuç dönderir. Örnek kullanımları aşağıdaki gibidir.
Get-Process
Bu komut arka planda çalışan işlemleri listeler. Hyper-V Server zaten minimal sayıda arkaplan hizmeti içerdiği için anormallik bulunan prosesi kolayca bulup inceleyerek kill komutu ile sonlandırabiliriz. Bazı durumlarda sunucuya yüklenmemesi gereken farklı amaçtaki programlar aşırı CPU tüketebilir ve bağlantı yapmanız zorlaşabilir.
Bu durumlarda Stop-Process -Name “preses adı” yada Stop-Process -ID IdNumarası şeklinde bir komut kullanarak işlemi sonlandırabiliriz. Direk taskmgr yazarak görev yöneticisini de çalıştırabilirsiniz.
Get-Service | Where-Object {$_.Status -eq ‘Stopped’} komutu ile duran servisleri, Get-Service | Where-Object {$_.Status -eq ‘Running’} ile çalışan servisleri listeleyebilirsiniz.
Eğer normalde çalışması veya durması gereken bir servis var. Bu serivslerden birisinin Hyper-v Server açıldığında otomatik başlamasını yada başlamamasını istiyorsunuz. Onun da komutu var :)
Start-Service -Name ServisAdı (Servisi çalıştırır)
Stop-Service -Name ServisAdı (Servisi durdurur)
Set-Service -Name ServisAdı -StartupType Automatic (Otomatik Başlatır)
Hyper-V Sanal Switch Oluşturma | New-VmSwitch
Hyper-V üzerinde network için 3 adet switch tipi bulunmaktadır. External, Internal, Private tipleri ile ilgili ilerleyen zamanlarda makale olarak ekleyeceğim. Şimdilik 3 switch tipini de oluşturmak için komutlar aşağıdaki gibi kullanabilirsiniz.
New-VMSwitch -name ExternalSwitch -NetAdapterName Ethernet -AllowManagementOS $true
AllowManagementOS $True komutu ile oluşturduğunuz sanal switchin sanalda aldığı IP adresi ile DNS’e kayıt oluşur ve Hyper-V Server ‘a management IP üzerinden bağlanabilirsiniz. Yalnızca external switch tipleri için çalışan bir özelliktir. Internal ve Private swtich tiplerinde yapısı gereği böyle bir özellik yoktur.
New-VMSwitch -name InternalSwitch -SwitchType Internal
InternalSwitch isimli iç switch oluşturmak için kullanılır.
New-VMSwitch -name PrivateSwitch -SwitchType Private
PrivateSwtich isimli özel switch oluşturmak için kullanılır.
Şimdilik konuyu burada sonlandırıyorum. Akılma geldikçe kullanışlı powershell komutlarını eklemeye devam edeceğim. Hyper-V ile ilgili diğer makalelerin linki aşağıdadır.
Bu yazıda kaynak olarak Microsoft dökümanları ve Nakivo blogu incelenmiştir.