Geek Okulu PowerShell'de Uzaktan Kullanımı Öğrenin
PowerShell'in sunduğu en iyi özelliklerden biri, Sunucularınızı uzaktan yönetme yeteneğidir. Hatta bir kerede aynı anda bir demet yönetmenize olanak sağlar.
Serideki önceki makaleleri okuduğunuzdan emin olun:
- PowerShell ile Windows'u Nasıl Otomatikleştireceğinizi Öğrenin
- PowerShell'de Cmdlet'leri Kullanmayı Öğrenme
- PowerShell'de Nesnelerin Nasıl Kullanılacağını Öğrenme
- PowerShell'de Biçimlendirme, Filtreleme ve Karşılaştırmayı Öğrenme
Ve tüm hafta boyunca dizinin geri kalanı için bizi izlemeye devam edin.
Uzaktan Kumanda Nedir??
Sunucularınızın toplu yönetimi can sıkıcı olabilir ve daha önce 50 web sunucusunda IIS yapılandırması değişikliği yapmanız gerekiyorsa, ne demek istediğimi anlayacaksınız. Bunlar PowerShell Remoting ve dilin komut dosyası yazma becerilerinin kurtarmaya gelebileceği durumlardır. HTTP veya daha güvenli HTTPS kullanan PowerShell Remoting, ağınızdaki uzak bir makineye komut göndermenizi sağlar. Makine daha sonra komutları çalıştırır ve sırayla ekranda görüntülenen çıktıyı size geri gönderir..
Teknik Alalım
PowerShell Remoting'in özünde, bilindiği üzere tek bir Windows Hizmeti, Windows Uzaktan Yönetimi veya WinRM hizmeti yatıyor. WinRM'yi kullanarak, temel olarak uzak PowerShell örneğinize bağlanan kişiye sağlamak istediğiniz deneyim hakkında bilgi içeren dosyalar olan bir veya daha fazla oturum yapılandırması (bitiş noktaları olarak da bilinir) ayarlayabilirsiniz. Daha spesifik olarak, oturuma hangi güvenlik bağlamında çalışılacağının yanı sıra, örneğe kimin bağlanıp kimin bağlanamayacağını, hangi cmdlet'lerin ve komut dosyalarının çalışabileceğini tanımlamak için oturum yapılandırma dosyalarını kullanabilirsiniz. WinRM Hizmetini kullanarak, gelen PowerShell isteklerini dinleyen “dinleyiciler” de ayarlarsınız. Bu “dinleyiciler” HTTP veya HTTPS olabilir ve makinenizdeki tek bir IP adresine bağlanabilir. PowerShell bağlantısını başka bir makineye açtığınızda (teknik olarak bu, HTTP'ye dayanan WS-MAN protokolü kullanılarak yapılır), bağlantı bu “dinleyicilerden” birine bağlanır. “Dinleyiciler”, trafiği uygun oturum konfigürasyon dosyasıyla ilişkilendirilmiş uygulamaya göndermekle sorumludur; uygulama (normalde PowerShell, ancak isterseniz diğer barındırma uygulamalarına sahip olabilirsiniz) daha sonra komutu çalıştırır ve sonuçları ağdaki “dinleyici” üzerinden geri alır ve makinenize geri gönderir.
Bana nasıl olduğunu göster
Yapmanız gereken ilk şey, bağlanmak istediğiniz makinede Remoting'i etkinleştirmektir. Bu, aşağıdakileri çalıştırarak yapılabilir:
Enable-PSRemoting
Daha sonra tüm istemlere evet cevabı vermeniz gerekecektir. Enable-PSRemoting'i çalıştırdığınızda, PC'nizde birkaç değişiklik yapılır:
- WinRM Hizmeti başlar.
- WinRM Hizmeti, Manuel başlangıç modundan Otomatik'e.
- Tüm ağ kartlarınıza bağlı bir HTTP dinleyicisi oluşturur.
- Ayrıca WS-MAN protokolü için gelen bir güvenlik duvarı istisnası oluşturur.
- Bazı varsayılan oturum yapılandırmaları oluşturulur
Windows 7 kullanıyorsanız ve ağ kartınızın konumu Genel olarak ayarlanmışsa, PowerShell Remoting'in etkinleştirilmesi başarısız olur. Düzeltmek için, sadece Ev veya İş ağı konumuna geçin. Alternatif olarak, aşağıdakileri kullanarak ağ denetimini atlayabilirsiniz:
Enable-PSRemoting -SkipNetworkProfileCheck
Ancak, ağ konumunuzu değiştirmenizi tercih ederiz..
PowerShell kullanarak başka bir makineye bağlanmanın iki yolu vardır. SSH kullanmaya çok benzeyen birebir yöntem var ve sonra bire çok yöntem var.
PowerShell Oturumu Kullanma
PowerShell kullanarak uzaktaki bir makineye bağlanmanın ilk yolu, PowerShell Oturumu adı verilen bir şey kullanmaktır. Basitçe söylemek gerekirse, uzaktaki makinedeki komutları kendi makinenizde yaptığınız gibi etkileşimli bir şekilde çalıştırmanıza izin verir. Bir oturumu açmak için aşağıdakini yazın:
Enter-PSSession -BilgisayarAdı “Darlah”
Bilgi istemi, cmdlet'leri çalıştırdığınız makineyi belirten bir önek elde eder.
Buradan, istemde, uzaktaki makinede oturuyormuş gibi davranabilirsiniz. Örneğin, C: \ sürücüsündeki tüm dosyaları görmek istiyorsanız, basit bir işlem yapabilirsiniz:
Get-ChildItem -Path C: \
Bir Linux arka planından geliyorsanız, bunu SSH'ye bir PowerShell alternatifi olarak kullanmanın bire bir yöntemini kullanmayı düşünebilirsiniz..
Invoke-Command Kullanımı
PowerShell'i uzak bir makinede kullanmanın ikinci yolu Invoke-Command'ı kullanmaktır. Invoke-Command kullanmanın avantajı aynı komutu aynı anda birden fazla makinede çalıştırabilmenizdir. Tahmin edebileceğiniz gibi, bu özellikle sunucularınızdan bir araya gelen olay günlükleri gibi bir şey yapmak istediğinizde kullanışlıdır. Invoke-Command aşağıdaki sözdizimini takip eder:
Invoke-Command -BilgisayarAdı Darlah, localhost -ScriptBlock Get-EventLog Uygulaması -Newest 2
Komut tüm makinelerde paralel olarak yürütüldüğünden, belirli bir sonucun hangi bilgisayardan geldiğini görmek için bir yol gerekir. Bunu PSComputerName özelliğine bakarak yapabilirsiniz..
Invoke-Command'ı kullandığınızda, artık Boru Hattı'nda beklediğiniz nesnelere sahip değilsiniz. Görüyorsunuz, PowerShell'in uzak makineden bilgileri makinenize geri getirebilmesi için, uzak makinede çalıştırdığınız komutun çıkardığı nesneleri temsil etmenin bir yoluna ihtiyaçları vardır. Günümüzde hiyerarşik bir veri yapısını temsil etmenin seçilen yolu XML kullanmaktır, bu da Invoke-Command kullanarak bir komut verdiğinizde, sonuçlar makinenize geri gönderilmeden önce XML olarak serileştirilir. Makinenize geri döndüklerinde, nesneye geri serilirler; Buradaki iş, seri hale getirildiklerinde, ToString () yöntemi hariç, nesnenin ondan sıyrıldığını gösteren tüm yöntemlerdir..
Not: Bu kuralın bazı istisnaları vardır; örneğin, tamsayılar gibi ilkel türlerin çoğu, içerdiği yöntemlerle seri hale getirilebilir. Rehidrasyon adı verilen ve bazı yöntemlerin serileştirilmiş nesnelere eklenebileceği bir işlem de var. Bu yüzden sadece dikkatli olun ve Get-Member'ın arkadaşınız olduğunu unutmayın.
Ödev
- PowerShell Remoting e-kitaplarının sırlarını okuyun Don Jones.