PowerShell Direct ile Hyper-V VM’leri içerisinde PowerShell komutları çalıştırmak için yeni bir yönteme sahip olduk. Windows Server 2016 Hyper-V, Windows 10 Hyper-V ve PowerShell 5.0 ile birlikte kullanılabilen PowerShell Direct yöntemi, Hyper-V Host’lar üzerinden VM’ler içerisinde PowerShell komutları çalıştırmanızı sağlayan yeni bir yol sağlıyor.
PowerShell Direct öncesinde bir Windows VM’i ağa bağlayıp Remote Management ayarlarını yaptıktan ve Windows Firewall üzerinde gerekli kuralları aktif ettikten sonra Enter-PSSession
ya da Invoke-Command
gibi çeşitli cmdlet’lerin -ComputerName
parametresine ağa bağlı uzak bilgisayar adını vererek bir komut çalıştırabiliyor veya bir komut satırı oturumu başlatabiliyordunuz. Bu modelde uzak bilgisayarın bir VM veya Physical Server olmasının da pek bir önemi yoktur çünkü iletişim ağ bağlantısı kanalıyla kurulur. Bu yüzden ilk kural, üzerinde komut çalıştırılmak istenen uzak bilgisayarın ağa bağlı ve ulaşılabiliyor olmasıdır…
Aşağıda -ComputerName
parametresi kullanılabilen iki örnek var.
# Server1 isimli uzak sunucuda çalışan process'lerin bir listesini alır Invoke-Command -ComputerName Server1 -ScriptBlock{Get-Process} # Server1 isimli uzak sunucuda bir PS oturumu başlatır Enter-PSSession -ComputerName Server1
Powershell Direct sayesinde, PowerShell 5.0’daki bazı cmdlet’lere eklenen -VMName
veya -VMGuid
parametrelerini kullanarak örneğin bir Hyper-V Host üzerinde çalışan ama üzerinde hiçbir Remote Management ayarı yapılmamış ve hatta ağa bağlı bile olmayan bir VM’in sanal işletim sistemi içerisinde komutlar çalıştırabilirsiniz.
# VM1 isimli sanal makinede çalışan process'lerin bir listesini alır Invoke-Command -VMName VM1 -ScriptBlock{Get-Process} # VM1 isimli sanal makinede bir PS oturumu başlatır Enter-PSSession -ComputerName VM1
Windows Server 2016 Hyper-V Host üzerinden WS16-Core isimli bir VM içinde çalıştırdığım komutların ekran çıktılarını aşağıda görebilirsiniz.
PowerShell Direct Kullanımı İçin Gerekenler
Host üzerinden VM’e bağlı bir PowerShell Direct oturumu başlatmak veya bir komut çalıştırmak için gereksinimler aşağıdaki gibidir.
- VM, ilgili Hyper-V Host üzerinde ve başlamış durumda olmalı.
- Host üzerinde Hyper-V Administrator yetkilerinde bir hesapla oturum açılmalı.
- VM’in sanal işletim sisteminde (GuestOS) yetkili credential bilgileri sağlanmalı.
- Hyper-V Host sürümü en az Windows 10 veya Windows Server 2016 olmalı.
- VM sanal işletim sistemi (GuestOS) en az Windows 10 veya Windows Server 2016 olmalı.
PowerShell Direct’in bir benzerini yani VM ağa bağlı olmasa da içerisinde bir şeyler yapabile kabiliyetini geçmişte Copy-VM
ve Enable-VMIntegrationService
cmdlet’lerinde de görmüştük. Ama PowerShell Direct bu konuda çok daha derinlere inmeyi başarıyor ve birçok sınırı ortadan kaldırıyor. Bu yeni yöntem özellikle otomasyon gibi programatik işler açısından çok değerli. PowerShell Direct aslında servis sağlayıcılar için de biçilmiş kaftan olabilirdi ama VM için gerekli credential bilgilerini sağlamak pek kolay olmayacaktı :) Çünkü müşteriden credential bilgilerini istemek ya da imajlara önceden yetkili bir Windows hesabı yerleştirmek pek gerçekçi seçenekler değil ve hatta güven zedeleyici bile olabilir. Bu yüzden şimdilik altyapının tamamını yöneten ekiplere hitap ediyor diyebiliriz. Diğer taraftan sadece Windows 10 ve Windows Server 2016 işletim sistemleri için kullanılabiliyor olması bir noktada engel teşkil edecektir. Maalesef bu gibi özelliklerin doğasında var ve verim almak için yeni sürüm OS’lerin altyapıda yaygınlaşmasını beklemek gerekecek.
18.10.2016 - 09:32
En azından Windows Server 2008 ve 2012 sürümlerine destek verebilirdi. Yada bir güncelleme ile bu sunucular powershell direct e dahil edilebilir.