Yeni Başlayanlar İçin PowerShell (Bölüm 13): PowerShell Uzaktan İletişimi
Bunu gizlemiyorum: Şimdi en sevdiğim konuya geliyoruz: PowerShell Uzaktan İletişim. Bayıldım. Umarım siz de seversiniz. Tutkulu bir Sistem Mühendisi veya Geliştiricisiyseniz, bu bölümde iş hayatınızı daha kolay ve verimli hale getirecek birçok ipucu ve püf noktası bulacaksınız. Ama önce son bölümdeki alıştırmaya kısa bir bakış.
Bu, Yeni Başlayanlar için PowerShell serisinin 13. bölümüdür. Tüm parçaları burada bulabilirsiniz: Yeni Başlayanlar için PowerShell (Seri)
İnceleme (Bölüm 12)
En son bir kodu içe aktarmamı ve bunu tüm PowerShell oturumlarındaki tüm kullanıcıların kullanımına sunmayı istemiştim. Çözümü zaten yazının içinde yer aldığından daha fazla açıklamaya gerek yok. Makalenin sonunda bulunabilir ve kodun tüm kullanıcılar tarafından rahatça kullanılabilmesi için nasıl saklanacağı hakkında bilgi sağlar.
Aşağıdaki özette PowerShell Modüllerine ilişkin bazı temel bilgileri hatırlamanız çok daha önemlidir.
Özet (Bölüm 12)
Modül, uygun bir birim olarak gruplandırılmış (genellikle tek bir dizine kaydedilir), ilgili Windows PowerShell işlevleri kümesidir. Genellikle bir dizi komut ve koddan oluşur. Tüm özel modülleri C:\ProgramFiles\WindowsPowerShell\Modules konumunda saklayın. Klasör ve dosya adının eşleştiğinden emin olun.
PowerShell Uzaktan İletişimi
Öncelikle serinin bu bölümüne zaman ayırın. Bu kısım en detaylı olmasa da oldukça detaylıdır.
Eğer havalı bir adam yani gerçekten havalı bir adam olmak istiyorsanız bu bölüm tam size göre. Size söz veriyorum, eğer PowerShell uzaktan iletişimine aşina iseniz, o zaman meslektaşlarınızdan çok farklı olacaksınız. Diğerlerinden farklı çalışacaksınız. Tamam, bu kadar konuşma yeter, hadi dalalım.
Uzaktan iletişimin birçok yolu
Ben belirliyorum: Artık en havalı yolun PowerShell Uzaktan İletişim olduğunu zaten biliyorsunuz ?
Windows İşletim Sistemini yönetmenin birçok yolu olduğunu düşünün.
- Uzak Masaüstü (mstsc)
- Uzaktan Yardım (msra)
- kazananlar
- Güç kalkanı
- sysinternals (psexec), TeamViewer, VNC gibi diğer araçlar…
Bu örnek Azdc01'de cmd'yi başlatıyor.
winrs -r:azdc01 -u:sid-500\patrick cmd
Bu ikinci örnekte Enter-PSSession ile bir PowerShell Uzaktan Oturumu kuruluyor.
Enter-PSSession -ComputerName Azdc01
Bu yazımızda ikinci örneğe odaklanacağız, başka ne var? ?
PowerShell Uzaktan İletişim Temelleri
PowerShell, uzak bağlantılar için WinRm'yi kullanır. WinRm bir Windows Hizmetidir.
PowerShell Remoting'i kullanırken bazı tuzaklar vardır. Aşağıdakileri unutmayın; her şey yoluna girecek:
Aktif Dizin Alanı
- WinRm varsayılan olarak tüm Windows Server 2012/2016'da etkindir; bu, yukarıda gösterildiği gibi etki alanı yöneticisi kimlik bilgilerinizle kutudan çıktığı gibi Windows Server'a katılmış etki alanınıza erişebileceğiniz anlamına gelir (Enter-PSSession)
- WinRm TÜM istemci işletim sistemlerinde (Windows 7/8/10) varsayılan olarak devre dışıdır; bu, bu bilgisayarlara kutudan çıktığı haliyle erişemeyeceğiniz anlamına gelir. Winrm'i winrm qc komutuyla veya şu makalemde açıklandığı gibi Grup İlkeleri ile etkinleştirmeniz gerekir: Grup İlkeleri: Windows İstemci İşletim Sistemleri için WinRM'yi Etkinleştirme (Windows 10, Windows 8) , Windows 7)
Çalışma grubu
- Çalışma grubu ortamında Güvenilen Ana Bilgisayarlar listesini düzenlemeniz gerekir, çünkü Active Directory Etki Alanında bilgisayarlar birbirine güvenir, ancak tek başına bir senaryoda bu geçerli değildir.
Şu ana kadar ne öğrendik?
PowerShell Uzaktan İletişim, WinRm Hizmetini kullanır. WinRm, Windows Server 2012/2016'da varsayılan olarak etkindir ancak Windows İstemcilerinde etkin değildir. WinRm'yi tüm Windows İstemcilerinde etkinleştirmeniz gerekir. Alan adı olmayan bir ortamda çalışıyorsanız Güvenilir Ana Bilgisayar listesine dikkat edin.
Komutlar
Pek çok PS Oturumu komutu vardır. Bunlardan sadece birkaçına odaklanacağım ve bunların yeni başlayanlar için en önemli olduğunu düşünüyorum:
Get-Command *pssession* | Select-Object Name
PowerShell Uzaktan İletişim (Active Directory Etki Alanı)
PowerShell Remoting, Windows Server 2012/2016 ile kutudan çıktığı gibi çalışsa da önceki sürümlerde durum böyle değildir. PS Remoting'in ön koşulu olan WinRm'yi tüm eski işletim sistemlerinde etkinleştirmeniz gerektiğini unutmayın.
Aynı şey istemci işletim sistemleri için de geçerlidir.
Bu komut WinRm'nin mevcut durumunu gösterir veya etkinleştirilmemişse Windows hizmeti başlatır:
winrm qc
Bu iyi görünüyor…
Okuyucular daha fazlasını biliyor. İşte winrm qc yardımının açıklaması. Winrm qc'yi çalıştırırken perde arkasında çok daha fazlasının olduğunu anlıyoruz. 4 adımı unutmayın…
Tamam bu kadar yeter. Bazı uzaktan işlemlerle başlayalım. Enter-PSSession ve New-PSSession bizim dostlarımızdır.
Bu örnek uzak bilgisayar Azdc01'i yeniden başlatır. Gördüğünüz gibi yeniden başlatma komutundan sonra oturum kesiliyor. Neden? Çünkü sunucu şu anda yeniden başlatılıyor…
Enter-PSSession -ComputerName azdc01 -Credential patrick
Amacınız birden fazla sunucuya aynı anda bağlanmaksa New-PSSession arkadaşınızdır. Daha sonra aslında aralarında ileri geri atlayabiliriz.
New-PSSession -ComputerName Azdc01
New-PSSession -ComputerName AzServer01
Şu anda iki yerleşik oturumumuz olduğunu unutmayın. Ancak her iki oturuma da girmedik. Ama onlara atlayabiliriz. Oturum Kimliği 5 ve 6'ya bakın. İşin püf noktası bu.
Ve şimdi oturum no'ya giriyoruz. 5.
Enter-PSSession -Id 5
Geri dönüyorum ve oturum no'ya giriyorum. 6.
Exit-PSSession
Enter-PSSession -Id 6
Özet
Enter-PSSession, tek bir uzak bilgisayarla etkileşimli bir oturum başlatır. Bir seferde yalnızca bir oturum. New-PSSession da aynısını yapar ancak oturum kalıcı bir bağlantıdır ve farklı sunuculara birden fazla oturum oluşturabilirsiniz. New-PSSession'ı kullanırken her oturuma girmeniz gerektiğini unutmayın.
PowerShell Uzaktan İletişim (Bağımsız Bilgisayarlar, Çalışma Grubu, Active Directory olmayan ortam)
Active Directory Etki Alanında PS Uzaktan İletişim bir cazibe gibi çalışsa da, etki alanı olmayan bilgisayarların varsayılan olarak birbirlerine güvenmemesi nedeniyle uzak bağlantı kurmak daha fazla hazırlık gerektirir.
Bahsettiğim şey “Güvenilir Ana Bilgisayarların Listesi”. Güvenilir Ana Bilgisayarların listesi GPO'larda veya PowerShell ile değiştirilebilir. Bu yazı PowerShell ile ilgili o yüzden bu listeye bir göz atalım. Ayarlar bir PowerShell Sürücüsündedir! Umarım Bölüm 11'de Sürücüler konusunu ele aldığımızı hatırlarsınız: Yeni Başlayanlar için PowerShell (Bölüm 11): PowerShell Sürücüleriyle Eğlence
Yönetim için Web Hizmeti (WSman) sürücüsündedir:
Güvenilir Ana Bilgisayarların listesi farklı şekillerde gösterilebilir…
cd wsman:
cd localhost
cd Client
Get-ChildItem
ile daha hızlı…
dir WSMan:\localhost\Client\
Ekranımda bir yıldız işareti * görünüyor. Bu, bilgisayarımın her bilgisayara güvendiği anlamına gelir.
Eğer çalışmasını istediğin yol buysa
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value '*'
Y'ye basın.
Veya uzak bağlantıları bir bilgisayarla sınırlamak istiyorsanız (örneğin IP Adresi: 192.168.0.1) yalnızca şunu çalıştırın:
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'
Ayarlarınızı kontrol edin…
Şu ana kadar neler öğrendiniz?
PowerShell Uzaktan Oturumunu kullanırken Güvenilen Ana Bilgisayarlar Listesine dikkat edin.
PowerShell Uzaktan Uzaktan Erişime Ayrıntılı Bakış
Artık Güvenilir Ana Bilgisayarlara dikkat etmemiz gerektiğini ve İstemci İşletim Sistemlerinin onlara bağlanmadan önce hazırlanması gerektiğine dikkat etmemiz gerektiğini biliyoruz. Diyelim ki her şey yolunda ve devam edebiliriz. Bu bölümde PowerShell Remoting'in gücünü göstereceğim.
Yeni Cmdlet'ler tanıtılacak. BilgisayarAdı parametresini kaç CmdLet'in desteklediğine bakın:
Restart-Computer -ComputerName client01
Client01 varsayılan ağ geçidine ping atabilir mi? Client01 ile uzaktan bağlantıya gerek yok, client01 ağ geçidinin IP adresini aramanıza gerek yok, PowerShell dünyasına hoş geldiniz! ?
Şu güçlü Tek Astar'a bakın:
Test-Connection -Source Client01 -Destination (Invoke-Command -ComputerName Client01 {Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty Nexthop})
Sonuç: Evet, Client01 varsayılan ağ geçidine erişebilir ?
Uzaktaki bir bilgisayarı etki alanından uzaktan kaldırmak mı istiyorsunuz? Sorun değil… İşte başlıyoruz…
Add-Computer -WorkgroupName Group -ComputerName client01 -Credential sid-500\administrator
Etki alanına bir bilgisayar eklemek ister misiniz? Sorun değil. Çalışma Grubu bilgisayarının, bilgisayarınızı Güvenilir Ana Bilgisayar olarak listelediğinden ve ağ bağlantısının Özel Ağ olarak ayarlandığından ve WinRm'nin etkinleştirildiğinden emin olun.
Boom… Tamamlandığında istemci yeniden başlatılıyor… ve etki alanına katılıyor. Mükemmel? Aslında …
Add-Computer -ComputerName Client01 -DomainName sid-500.com -LocalCredential client01\admin -Credential sid-500\administrator -Restart
Etkilenmiş? Ben de. Ama henüz durmuyoruz. Yeniden başlatmak mı, Etki Alanına katılmak mı yoksa yalnızca yüzlerce veya binlerce bilgisayardan başka bilgiler mi almak istiyorsunuz? O zaman önce bunların bir listesini alın. Örneğin tüm sunucuların bir listesi.
(Get-ADComputer -Filter "operatingsystem -like '*server*'").Name
Veya tüm müşterilerin bir listesi…
(Get-ADComputer -Filter "operatingsystem -notlike '*server*'").Name
Sonra kararları siz verin… örneğin ağ geçitlerini onlardan alın.
Invoke-Command -ComputerName ((Get-ADComputer -Filter "operatingsystem -notlike '*server*'").Name) {Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty Nexthop}
Veya hepsini yeniden başlatın…
Restart-Computer -ComputerName ((Get-ADComputer -Filter "operatingsystem -notlike '*server*'").Name) -Force
Bir başka harika şey de uzaktan ping yapabilmenizdir… Bununla birlikte, bir kaynak ve hedef parametresiyle ping başlatabilirsiniz. Server01'de oturum açtığımı unutmayın. Client01'in dc01'e ping atıp atamayacağını bilmek istiyorum. PowerShell'de sorun yok…
Test-Connection -Source client01 -Destination dc01
Daha da ileri gidiyoruz… Client01, CNN.com'a 80 numaralı bağlantı noktasından ulaşabilir mi? Bunun için Invoke-Command kullanmalıyız çünkü bilgisayar adı parametresini destekleyen bir cmdlet'e ihtiyacımız var.
Invoke-Command -ComputerName client01 {Test-NetConnection -Port 80 -ComputerName cnn.com}
Client01 güvenlik duvarını açtı mı?
Invoke-Command -ComputerName client01 {Get-NetFirewallProfile -All | Select-Object Name,Enabled}
DC01 ne kadar süredir açık? (Yeni Başlayanlar için PowerShell 9. Bölüm'ü hatırlayın (Bölüm 9): PowerShell ve WMI ile hepsini Windows'tan edinin)
Get-CimInstance -ComputerName dc01 win32_operatingsystem | Select-Object lastbootuptime
Yeterince örnek verdiğimi düşünüyorum. Bu da beni son kısma getiriyor. Uzaktan eylemler için başka bir seçenek olan PowerShell Web Erişimi'ni kuracağız…
Şu ana kadar ne öğrendik?
Uzaktan işlemler gerçekleştirmek için Invoke-Command, Enter-PSSession, New-PSSession veya varsa ComputerName parametresini kullanabiliriz.
PowerShell Web Erişimi
Hiç PowerShell'i her yerde, her Cihazdan ve her zaman kullanmayı hayal ettiniz mi? Bir süredir PowerShell Core kullanım dışı. Linux ve MAC üzerinde çalışır. Ancak PowerShell Web Erişimi adı verilen bir özellik de var. PowerShell Web Erişimi yalnızca Windows Server 2012/2016'da mevcuttur. Web tabanlı bir PowerShell arayüzü ile Windows Sunucunuza erişmenizi sağlar. Bu, PowerShell'e her cihazdan erişebileceğiniz anlamına gelir. Hadi gidelim.
PowerShell Web Erişimi'ni yüklemek, kendinden imzalı bir sertifika oluşturmak ve tüm bilgisayarlara erişim izni vermek için bir yetkilendirme kuralı eklemek için Windows Server 2012 veya 2016'da aşağıdaki komutları çalıştırın.
Install-Windowsfeature WindowsPowerShellWebaccess -IncludeManagementTools
Install-PswaWebApplication -UseTestCertificate
Add-PswaAuthorizationRule -UserName * -ComputerName * -ConfigurationName *
Şimdi https://localhost/pswa'yı açın. Yönetici kimlik bilgilerini girin ve bilgisayar adı alanına bilgisayarın adını yazın. Neden bir bilgisayar adı vermemiz gerektiğini sorabilirsiniz. Çünkü sunucu diğer ana bilgisayar için PowerShell Web Erişim Ağ Geçidi görevi görebilir, bu da diğer sunuculara atlayabileceğiniz anlamına gelir. Son derece esnek ?
İyi eğlenceler!
Özet
PowerShell Web Erişimi, Windows Sunucunuza web tabanlı bir Arayüz üzerinden her cihazdan erişmenizi sağlar.
Egzersiz yapmak
Bu kısımda egzersiz yok. Neden? Bu blog yazısında pek çok örnek var. Hepsini alan adınızda veya alan adı olmayan ortamınızda çalıştırmayı deneyin.
Bir sonraki bölümde görüşmek üzere: Yeni Başlayanlar İçin PowerShell (Bölüm 14): Yeni Başlayanlar İçin En İyi 10 PowerShell Komutu




























