PowerShell Direct Nedir ve Nasıl Kullanılır?

01.10.2015
1

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-hyperv-invoke

powershell-direct-hyperv-pssession

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.

Yorumlar (1)

  1. Kürşat ARI

    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.

Yorum Ekle

* Gerekli

* Gerekli

* Tercihen