- Uzaktan erişim, WinRM/WS-Man (HTTP/HTTPS) kullanır ve güvenlik kontrolleriyle 1'e 1, 1'e çok ve kalıcı oturumlar sağlar.
- Enable-PSRemoting hizmeti, dinleyicileri ve güvenlik duvarını yapılandırır; HTTPS geçerli bir sertifika ve CN/SAN eşleşmesi gerektirir.
- Sonuçlar seri durumdan çıkarılmış olarak döndürülür; yöntemler uzak betik bloğu içinde çağrılır ve ayrıntılı yetki devri için özel uç noktalar kullanılır.
PowerShell ile birçok görevi yerel olarak otomatikleştirebilirsiniz, ancak bunu gerçekten nerede yapacaksınız? PowerShell Uzaktan Erişim fark yaratır Uzak makinelerde, ister birkaç ister yüzlerce olsun, komutları etkileşimli veya paralel olarak çalıştırdığınızda gerçekleşir. Windows PowerShell 2.0'dan beri mevcut olan ve 3.0'dan beri geliştirilen bu teknoloji, WS-Management (WinRM) tabanlıdır ve PowerShell sağlam, ölçeklenebilir ve güvenli bir uzaktan yönetim kanalında.
Öncelikle iki temel fikri anlamak önemlidir: cmdlet'ler -BilgisayarAdı parametresi (örneğin, Get-Process veya Get-Service) Microsoft tarafından önerilen uzun vadeli yol değildir ve PowerShell Uzaktan Erişimi bir "hack" olarak çalışmaz. Aslında, karşılıklı kimlik doğrulamayı zorunlu kılar, denetim günlüklerini tutar ve süper ayrıcalıklara sahip herhangi bir şeyi sihirli bir şekilde çalıştırmadan veya kimlik bilgilerini depolamadan olağan izinlerinize saygı duyar.
PowerShell Uzaktan Erişimi nedir ve neden kullanılır?
ile PowerShell Uzaktan İletişim kutu uzaktan hemen hemen her komutu yürütün Yerel bir oturumda başlatabileceğiniz, hizmetleri sorgulamaktan yapılandırmaları dağıtmaya kadar yüzlerce bilgisayarda aynı anda yapabileceğiniz birçok şey var. -ComputerName kabul eden cmdlet'lerin aksine (çoğu DCOM/RPC kullanır), Uzaktan Erişim WS-Man (HTTP/HTTPS) üzerinden seyahat ederGüvenlik duvarına daha uygun olan, paralellik sağlayan ve işi istemciye değil, uzak ana bilgisayara aktaran .
Bu, üç pratik avantaja dönüşür: büyük çaplı uygulamalarda daha iyi performans, ağlarda daha az sürtünme kısıtlayıcı kurallar ve Kerberos/HTTPS ile uyumlu bir güvenlik modeliyle. Ayrıca, her cmdlet'in kendi uzaktan uygulamasını uygulamasına bağlı kalmayarak, Uzaktan Erişim Herhangi bir senaryo veya rol için işe yarar Hedefte mevcut olan.
Varsayılan olarak, yeni Windows Sunucuları Uzaktan Bağlantı etkin olarak gelir; Windows 10/11'de sen onu aktifleştir Tek bir cmdlet ile. Ve evet, alternatif kimlik bilgilerini, kalıcı oturumları, özel uç noktaları ve daha fazlasını kullanabilirsiniz.
Not: Uzaktan erişim, her şeyi açmak anlamına gelmez. Varsayılan olarak, sadece yöneticiler Bağlanabilirler ve eylemler kimlikleri altında yürütülür. Ayrıntılı yetki devrine ihtiyacınız varsa, özel uç noktalar yalnızca temel komutları açığa çıkarmanıza olanak tanır.

İçeride nasıl çalışır: WinRM, WS-Man ve portlar
PowerShell Uzaktan Erişim, istemci-sunucu modelinde çalışır. İstemci, WS-Yönetim isteklerini şu şekilde gönderir: HTTP (5985/TCP) veya HTTPS (5986/TCP)Hedefte, Windows Uzaktan Yönetim (WinRM) hizmeti dinler, uç noktayı çözümler (oturum yapılandırması) ve PowerShell oturumunu arka planda barındırır (wsmprovhost.exe işlemi), istemciye serileştirilmiş sonuçları döndürme SOAP aracılığıyla XML'de.
Uzaktan Erişim'i ilk kez etkinleştirdiğinizde, dinleyiciler yapılandırılır, uygun güvenlik duvarı istisnası açılır ve oturum yapılandırmaları oluşturulur. PowerShell 6+ sürümünden itibaren birden fazla sürüm bir arada bulunur ve Enable-PSRemoting Sürümü yansıtan adlara sahip uç noktaları kaydeder (örneğin, PowerShell.7 ve PowerShell.7.xy).
Ortamınızda yalnızca HTTPS'ye izin veriyorsanız, bir güvenli dinleyici Güvenilir bir CA tarafından verilen bir sertifika ile (önerilir). Alternatif olarak, çalışma grubu senaryoları veya etki alanı dışındaki bilgisayarlar için TrustedHosts'u sınırlı ve riske duyarlı bir şekilde kullanmak da bir diğer alternatiftir.
Powershell Uzaktan Erişiminin -ComputerName'li cmdlet'lerle birlikte var olabileceğini unutmayın, ancak Microsoft WS-Man'i destekliyor Uzaktan yönetimin standart ve geleceğe dönük yolu olarak.
PowerShell Uzaktan Erişimini Etkinleştirme ve Faydalı Parametreler
Windows'ta, PowerShell'i yönetici olarak açın ve çalıştırın Enable-PSRemotingSistem WinRM'yi başlatır, otomatik başlatmayı yapılandırır, dinleyiciyi etkinleştirir ve uygun güvenlik duvarı kurallarını oluşturur. Genel ağ profiline sahip istemcilerde, buna bilerek izin verebilirsiniz. -AğProfilKontrolünüAtla (ve ardından belirli kurallarla pekiştirin):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Sözdizimi ayrıca şunu da sağlar: -Onaylamak y -Farzedelim Değişim kontrolü için. Unutmayın: Yalnızca Windows'ta kullanılabilirve yükseltilmiş konsolu çalıştırmanız gerekir. Oluşturulan kurallar, Sunucu ve İstemci sürümleri arasında farklılık gösterir; özellikle de genel ağlarda, kapsamı genişletmediğiniz sürece (örneğin, Set-NetFirewallRule ile) varsayılan olarak yerel alt ağla sınırlıdırlar.
Zaten kaydedilmiş oturum yapılandırmalarını listelemek ve her şeyin hazır olduğunu onaylamak için şunu kullanın: Get-PSSessionConfigurationPowerShell.x ve Workflow uç noktaları görünüyorsa, Uzaktan Erişim çerçevesi çalışır durumdadır.

Kullanım modları: 1'den 1'e, 1'den çok'a ve kalıcı oturumlar
Tek bir bilgisayarda etkileşimli bir konsola ihtiyaç duyduğunuzda, Enter-PSSessionKomut istemi görünecek ve yürüttüğünüz her şey uzak ana bilgisayara gidecek. Kimlik bilgilerinizi sürekli olarak tekrar girmekten kaçınmak için Get-Credential ile yeniden kullanabilirsiniz:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Eğer aradığınız şey aynı anda birden fazla bilgisayara komut göndermekse, araç şu şekildedir: Çağır-Command Bir betik bloğu ile. Varsayılan olarak, 32'ye kadar eşzamanlı bağlantı başlatır (-ThrottleLimit ile ayarlanabilir). Sonuçlar şu şekilde döndürülür: seri durumdan çıkarılmış nesneler (“canlı” yöntemler hariç):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
.Stop() veya .Start() gibi bir metodu çağırmanız mı gerekiyor? Yapın. scriptblock'un içinde Uzak bağlamda, yerel serileştirilmiş nesnede değil, hepsi bu. Eşdeğer bir cmdlet (Stop-Service/Start-Service) varsa, açıklık açısından genellikle onu kullanmak tercih edilir.
Her çağrıda oturum başlatma ve sonlandırma maliyetinden kaçınmak için, Kalıcı PSSession ve birden fazla çağrıda yeniden kullanın. Bağlantıyı oluşturmak için New-PSSession komutunu, tüneli yeniden kullanmak için Invoke-Command-Session komutunu kullanın. İşiniz bittiğinde Remove-PSSession ile kapatmayı unutmayın.
Serileştirme, sınırlar ve iyi uygulamalar
Önemli bir ayrıntı: Seyahat ederken nesneler "+düzleşir" ve seri durumdan çıkarılmış anlık görüntüler, özellikleri var ama yöntemi yok. Bu kasıtlıdır ve bant genişliğinden tasarruf sağlar, ancak yerel kopyada mantık yürüten üyeleri (örneğin .Kill()) kullanamayacağınız anlamına gelir. Çözüm açıktır: bu yöntemleri çağırın. uzaktan ve eğer sadece belirli alanlara ihtiyacınız varsa, daha az veri göndermek için Select-Object ile filtreleyin.
Betiklerde, Enter-PSSession (etkileşimli kullanım için tasarlanmıştır) kullanmaktan kaçının ve betik bloklarında Invoke-Command kullanın. Birden fazla çağrı bekliyorsanız veya durumu (değişkenler, içe aktarılan modüller) korumanız gerekiyorsa, kalıcı oturumları kullan ve eğer mümkünse, PowerShell 3.0+'da Disconnect-PSSession/Connect-PSSession ile bunları ayırın/yeniden bağlayın.
Kimlik Doğrulama, HTTPS ve Etki Alanı Dışı Senaryolar
Bir etki alanında yerel kimlik doğrulaması Kerberos Ve her şey yolunda gider. Cihaz sunucu adını doğrulayamadığında veya bir CNAME IP'sine ya da takma adına bağlandığınızda, şu iki seçenekten birine ihtiyacınız vardır: 1) Dinleyici Sertifikalı HTTPS güvendiğiniz bir CA tarafından verilir veya 2) hedefi (ad veya IP) TrustedHosts'a ekleyin ve kimlik bilgilerini kullanİkinci seçenek, söz konusu ana bilgisayar için karşılıklı kimlik doğrulamayı devre dışı bırakır, böylece kapsamı gereken en aza indirir.
Bir HTTPS dinleyicisi kurmak için, ekip deposuna yüklenmiş ve WinRM'ye bağlanmış bir sertifika (ideal olarak PKI'nızdan veya genel bir CA'dan) gerekir. Daha sonra güvenlik duvarında 5986/TCP portu açılır ve istemciden kullanılır. -SSL Kullan Uzak cmdlet'lerde. İstemci sertifikası kimlik doğrulaması için bir sertifikayı yerel bir hesaba eşleyebilir ve bağlanabilirsiniz. -Sertifika Parmak İzi (Enter-PSSession bunu doğrudan kabul etmez; önce New-PSSession ile oturumu oluşturun.)
İkinci aşama ve yetki belgelerinin devri
Ünlü "çift atlama", bir sunucuya bağlandıktan sonra, o sunucunun başka bir sunucuya erişmesi gerektiğinde ortaya çıkar. üçüncü kaynak sizin adınıza (örneğin, bir KOBİ payı). Buna izin vermenin iki yolu vardır: CredSSP ve kaynak tabanlı kısıtlı Kerberos yetkilendirmesi.
ile KrediSSP İstemci ve aracının kimlik bilgilerini açıkça devretmesine izin verirsiniz ve belirli bilgisayarlara devretmeye izin vermek için bir politika (GPO) belirlersiniz. Yapılandırması hızlıdır, ancak kimlik bilgileri şifreli tünel içinde açık metin olarak iletildiği için daha az güvenlidir. Kaynakları ve hedefleri her zaman sınırlayın.
Alan adında tercih edilen alternatif şudur: kısıtlı Kerberos delegasyonu (Kaynak tabanlı kısıtlı yetki devri) modern AD'de. Bu, uç noktanın belirli hizmetler için orta noktadan yetki devri almasına olanak tanır ve ilk bağlantıda kimliğinizin ifşa edilmesini önler. Güncel etki alanı denetleyicileri ve güncellenmiş bir RSAT gerektirir.
Özel Uç Noktalar (Oturum Yapılandırmaları)
Uzaktan erişimin en önemli avantajlarından biri, bağlantı noktalarını kaydedebilmektir. kişiye özel yetenekler ve sınırlar. İlk olarak New-PSSessionConfigurationFile (önceden yüklenecek modüller, görünür işlevler, takma adlar, ExecutionPolicy, LanguageMode, vb.) ile bir dosya oluşturursunuz ve ardından bunu Register-PSSessionConfiguration ile kaydedersiniz; burada ayarlayabilirsiniz RunAsCredential ve izinler (SDDL veya -ShowSecurityDescriptorUI ile GUI arayüzü).
Güvenli yetki devri için, yalnızca gerekli olanı -VisibleCmdlets/-VisibleFunctions ile açığa çıkarın ve uygunsa serbest betiklemeyi devre dışı bırakın DilModu KısıtlıDil veya NoLanguage. FullLanguage'dan ayrılırsanız, biri RunAs ile birleştirildiğinde, henüz açıklanmamış komutları çağırmak için bir betik bloğu kullanabilir. bir delik olurduBu uç noktaları titizlikle tasarlayın ve kapsamlarını belgelendirin.
Etki Alanları, GPO'lar ve Grup Yazılımları
AD'de, GPO ile ölçeklenebilir bir şekilde Powershell Uzaktan Erişimini dağıtabilirsiniz: WinRM dinleyicilerinin otomatik olarak yapılandırılmasına izin verin, hizmeti Otomatik olarak ayarlayınve güvenlik duvarı istisnasını oluşturun. GPO'ların ayarları değiştirdiğini, ancak her zaman hizmeti anında açmadığını unutmayın; bazen yeniden başlatmanız veya bir gpupdate'i zorlamanız gerekebilir.
Çalışma gruplarında (etki alanı dışı), Uzaktan Erişimi şu şekilde yapılandırın: Enable-PSRemoting, istemcide TrustedHosts'u ayarlayın (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) ve yerel kimlik bilgilerini kullanın. HTTPS için, güvenilir bir CA kullanmanız önerilse de, kendinden imzalı sertifikalar bağlayabilirsiniz. adı doğrula Sertifikada -ComputerName'de kullanacağınız (CN/SAN eşleşmesi).
Anahtar cmdlet'ler ve sözdizimi
Bir avuç komando bölgeyi koruyor Günlük senaryoların %90'ıEtkinleştirmek/devre dışı bırakmak için:
Enable-PSRemoting
Disable-PSRemoting
Etkileşimli oturum 1'e 1 ve çıkış:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1'den çoka, paralellik ve kimlik bilgileriyle:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Kalıcı oturumlar ve yeniden kullanın:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Test ve WinRM Kullanışlı:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Güvenlik duvarı, ağ ve bağlantı noktaları hakkında pratik notlar
Hedef bilgisayarda ve HTTP için 5985/TCP ve HTTPS için 5986/TCP'yi açın herhangi bir ara güvenlik duvarıWindows istemcilerinde, Enable-PSRemoting etki alanı ve özel profiller için kurallar oluşturur; genel profiller için, kapsamı Set-NetFirewallRule -RemoteAddress Any (riskinize göre değerlendirebileceğiniz bir değer) ile değiştirmediğiniz sürece yerel alt ağ ile sınırlıdır.
Uzaktan komutlar çalıştıran SOAR/SIEM entegrasyonlarını kullanıyorsanız (örneğin XSOAR'dan), sunucunun DNS çözünürlüğü ana bilgisayarlara, 5985/5986'ya bağlantı ve yeterli yerel izinlere sahip kimlik bilgileri. Bazı durumlarda, NTLM/Basic kimlik doğrulaması ayarlama gerektirebilir (örneğin, SSL ile Basic'te yerel bir kullanıcı kullanmak).
Enable-PSRemoting Parametreleri (İşletimsel Özet)
-Confirm, yürütmeden önce onay ister; -Force uyarıları görmezden geliyor ve gerekli değişiklikleri yapın; -SkipNetworkProfileCheck, genel istemci ağlarında Uzaktan Erişimi etkinleştirir (varsayılan olarak yerel alt ağla sınırlıdır); -WhatIf, değişiklikleri uygulamadan ne olacağını gösterir. Ayrıca, herhangi bir standart cmdlet gibi, ortak parametreler (-Verbose, -ErrorAction, vb.).
"Etkinleştir" seçeneğinin sizin için HTTPS dinleyicileri veya sertifikaları oluşturmadığını unutmayın; baştan sona şifrelemeye ve kimlik doğrulamaya ihtiyacınız varsa sertifikalar, HTTPS dinleyicisini yapılandırın ve CN/SAN'ı -ComputerName'de kullanacağınız adla doğrulayın.
Faydalı WinRM ve PowerShell Uzaktan Komutları
bazı temel yatak başı eşyaları günden güne:
winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host
Enter-PSSession -ComputerName host
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Windows'u ölçeklenebilir bir şekilde yönetirken, Uzaktan Erişim, "bilgisayardan bilgisayara" yaklaşımdan bildirimsel ve güvenli bir yaklaşıma geçmenizi sağlar. Kalıcı oturumlar, güçlü kimlik doğrulama (Kerberos/HTTPS), kısıtlı uç noktalar ve tanılama için net izleri birleştirerek, hız ve kontrol kazanırsınız Güvenlik veya denetimden ödün vermeden. GPO aktivasyonunu standartlaştırır ve özel durumları (TrustedHosts, çift atlama, sertifikalar) yönetirseniz, günlük operasyonlar ve olay müdahalesi için sağlam bir uzak platforma sahip olursunuz.
Farklı dijital mecralarda on yıldan fazla deneyime sahip, teknoloji ve internet konularında uzmanlaşmış editör. E-ticaret, iletişim, online pazarlama ve reklam şirketlerinde editör ve içerik yaratıcısı olarak çalıştım. Ekonomi, finans ve diğer sektörlerin internet sitelerinde de yazılar yazdım. İşim aynı zamanda tutkumdur. Artık makalelerim aracılığıyla Tecnobits, Hayatlarımızı iyileştirmek için teknoloji dünyasının bize her gün sunduğu tüm haberleri ve yeni fırsatları keşfetmeye çalışıyorum.