Enter-PSSession: Etkileşimli Kabukta Uzak Komutları Çalıştırma
Enter-PSSession cmdlet'i, uzak bir bilgisayarla kalıcı, etkileşimli bir PowerShell oturumu oluşturmanıza olanak tanır. Komut isteminize girdiğiniz tüm komutlar uzak bilgisayarda yürütülür. Bu yazıda, Enter-PSSession'ın temel özelliklerini ve Windows 10/11 ve Windows Server 2022/2019/2016 çalıştıran bilgisayarları uzaktan yönetmek için nasıl kullanılabileceğini açıklayacağız.
Bu
Enter-PSSessioncmdlet, PowerShell Uzaktan İletişim yığını tarafından desteklenmektedir. PSRemoting, Web Services for Management (WS-Management) ve WinRM hizmetini (Windows Uzaktan Yönetim) temel alır. Bilgisayarlar arasındaki trafik, protokol düzeyinde şifrelenir (PSRemoting WinRM trafiği için isteğe bağlı olarak SSL şifrelemesini etkinleştirebilirsiniz). NTLM ve Kerberos dahil olmak üzere çeşitli kimlik doğrulama yöntemlerini kullanabilirsiniz.
Basit durumda. uzak bir bilgisayarla etkileşimli bir PowerShell oturumu oluşturmak için yalnızca bağlanılacak bilgisayar adını belirtmeniz gerekir (BilgisayarAdı seçeneği). Uzak bir bilgisayara bağlanmak için şu komutu çalıştırmanız yeterlidir:
Enter-PSSession hq-srv01.a-d.site
Geçerli kullanıcının uzak bir ana bilgisayara bağlanma izni varsa, uzak bilgisayardaki etkileşimli bir kabuğa bağlanacaksınız.
Bağlanmadan önce kullanıcı kimlik bilgilerini isteyebilirsiniz:
Enter-PsSession -ComputerName hq-srv01.a-d.site -Credentials a-d\maxbakVeya :
$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $credsUzak bilgisayarın adının artık PowerShell isteminizin başında köşeli parantez içinde gösterildiğine dikkat edin ([hq-srv01.a-d.site]). Bu şekilde, yerel veya uzak bir kabuk oturumunda çalışıp çalışmadığınızı öğrenebilirsiniz.
Uzaktan çalıştırılan tüm komutların çıktısı, yerel konsolunuzda görüntülenir. çalıştırabilirsiniz
hostnamekomutunu verin ve uzak bir bilgisayarda çalıştırdığınızdan emin olun.
Bu etkileşimli komut isteminde (ayrıcalıklarınıza göre) herhangi bir komutu çalıştırabilirsiniz.
Örneğin, PowerShell kullanarak Windows ağ ayarlarını görüntüleyelim:
Get-NetIPConfigurationUzak bilgisayardaki DNS ayarlarını değiştirebilirsiniz:
Set-DNSClientServerAddress -InterfaceIndex 6 -ServerAddresses 192.168.13.4, 192.168.100.4
Etkileşimli bir uzak kabuk oturumundan çıkmak için şunu çalıştırın:
Exit-PSSessionveya
exit. PS istemi normal hale gelecek ve yerel PowerShell konsolunuza geri döneceksiniz:
Önceden, yöneticiler uzak bir Windows bilgisayarında etkileşimli bir komut istemi çalıştırmak için öncelikle PsExec aracını kullanıyordu. Ancak, Enter-PSSession ortaya çıktığında, artık harici araçları kullanmaları gerekmiyor.
Windows Server 2016/2019/2022'de PowerShell Remoting varsayılan olarak etkindir (bunu Sunucu Yöneticisi -> Yerel Sunucu -> Uzaktan Yönetim=Etkin konumunda görebilirsiniz).
Get-PSSessionConfigurationBu komut aynı zamanda WinRM üzerinden bağlanmasına izin verilen kullanıcıların ve grupların bir listesini almak için de kullanılır. PSRemoting'i kullanmak için bir kullanıcı hesabının Yöneticiler veya Uzaktan Yönetim Kullanıcıları grubunun üyesi olması gerekir. Yönetici olmayan kullanıcılar için WinRM PowerShell Uzaktan İletişimini nasıl etkinleştireceğiniz hakkında daha fazla bilgi edinebilirsiniz.
PowerShell Remoting aracılığıyla bilgisayarınıza yerel olarak bağlanıp bağlanamadığınızı test edebilirsiniz:
Test-WSMan -ComputerName localhost
Komut bir WSMan şema sürümü döndürürse, PS Remoting kullanan bilgisayara uzak bağlantılara izin verilir.
PowerShell Remoting devre dışıysa veya yapılandırılmamışsa aşağıdaki hata görünür:
Test-WSMan : <f:WSManFaultxmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f:Message>The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".PowerShell Remoting'i etkinleştirmek için şu komutu çalıştırın:
Enable-PSRemoting -ForceBu komut:
WinRM hizmetini etkinleştirir ve başlangıç türünü Otomatik olarak ayarlar;
Varsayılan WinRM bağlantı noktasında (HTTP trafiği için TCP/5985) bir bağlantı noktası oluşturur;
Windows Güvenlik Duvarına WS Yönetimi için istisnalar ekler (PSRemoting'i manuel olarak yapılandırıyorsanız, PowerShell veya GPO kullanarak bir güvenlik duvarı kuralı ekleyin)
Uzak PowerShell oturumlarına izin verir
WinRM hizmetini yeniden başlatır
WinRM hizmetinin çalıştığından ve otomatik olarak başlayacak şekilde ayarlandığından emin olun:
Get-Service WinRM | Select MachineName,Name,Status, StartTypeEnable-PSRemoting komutu yalnızca etki alanı ve özel Windows ağ profilleri için çalışır. Genel ağdaki bir bilgisayarda PSRemoting'i etkinleştirmek istiyorsanız, ağ konumunu Genel'den Özel'e değiştirin veya aşağıdaki komutu kullanın:
Enable-PSRemoting -SkipNetworkProfileCheck -ForceBir Active Directory etki alanında, Windows Uzaktan Yönetim'i (PSRemoting) sunucularda ve bilgisayarlarda merkezi olarak yapılandırmanın en kolay yolu Grup İlkesi'dir.
Modern PowerShell sürümleri (v6 veya v7), PowerShell Remoting üzerinden uzak bir bilgisayara bağlanmak için Secure Shell protokolünü (SSH) destekler. Uzak bilgisayarda bir SSH bağlantı noktası bulunmalıdır (Windows 10'da yerleşik OpenSSH Sunucusu nasıl etkinleştirilir?). Bu komutu kullanarak SSH üzerinden etkileşimli bir PSRemoting oturumu başlatabilirsiniz:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.siteVeya bir RSA anahtarı kullanarak SSH üzerinden kimlik doğrulaması yapın:
Enter-PSSession -HostName maxbak@hq-srv01.a-d.site:22 -KeyFilePath c:\PS\max_rsa_keyEnter-PSSession'ı New-PSSession ile birlikte kullanabilirsiniz:
$s = New-PSSession -ComputerName hq-srv01.a-d.site
Enter-PSSession -Session $sEnter-PSSession, birkaç kimlik doğrulama yöntemini destekler. -Authentication parametresini kullanarak istediğinizi ayarlayabilirsiniz. Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge kimlik doğrulama yöntemleri desteklenir.
Yukarıdaki örnekte, aynı Windows etki alanındaki bilgisayarlar arasında etkileşimli Enter-PSSession bağlantısının nasıl oluşturulacağını gösterdik (bağlantı için bir FQDN veya kısa bir ad belirtmek yeterlidir, Kerberos kimlik doğrulaması kullanılır). IP adresini veya CNAME'yi kullanarak uzak bir bilgisayara bağlanmaya çalışırsanız, kimliğiniz doğrulanmayacaktır:
Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.IP adresini kullanarak uzak bir bilgisayara bağlanmak için, ana bilgisayarı güvenilir ana bilgisayarlar (Güvenilen Ana Bilgisayarlar) listesine ekleyebilir veya WinRM için SSL kullanabilirsiniz (daha güvenlidir).
Güvenilir ana bilgisayarlara bir IP adresi eklemek için şu komutu çalıştırın:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5Bir joker karakter maskesi kullanarak güvenilir bir ana bilgisayar ekleyebilirsiniz:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.a-d.siteGüvenilir ana bilgisayarların listesini görüntülemek için:
Get-Item WSMan:\localhost\Client\TrustedHostsAynı şekilde, ana makinenizi uzak bir bilgisayardaki güvenilir ana bilgisayarlar listesine ekleyebilirsiniz.
Hizmeti yeniden başlatın:
Restart-Service WinRMUzak bir bilgisayara IP adresini kullanarak bağlanmak için aşağıdaki komutu çalıştırın:
Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName a-d\maxbak)Bu
Enter-PSSessionVe
New-PSSessioncmdlet'ler kalıcı bire bir uzak oturum oluşturur ve çoğunlukla etkileşimli senaryolarda kullanılır. Komut dosyalarını veya işleri otomatik olarak çalıştırmak veya aynı anda birden çok uzak bilgisayarda bir şeyler yapmak istiyorsanız, Invoke-Command komutunu kullanın.







