RDS Windows Server 2016/2019'da Bir Kullanıcının RDP oturumu Nasıl Gölgelendirilir (Uzaktan Kontrol)?


Gölge oturum modu, RDS yöneticilerinin kullanıcının masaüstünü görüntülemesine ve onunla etkileşimde bulunmasına olanak tanır. Uzak Masaüstü Gölgeleme modu, Windows Server 2012 R2 ve Windows 8.1'den başlayarak tüm modern Windows sürümlerinde çalışır (RDP yığınının çekirdekten kullanıcı moduna aktarılması nedeniyle Windows Server 2012 hariç). Bu makalede, Windows Server 2016 ve Windows 10'da etkin RDP kullanıcı oturumlarına bağlanmak ve bunları yönetmek için RDS Gölgelemeyi nasıl yapılandıracağımıza ve kullanacağımıza bakacağız.

Windows RDP İstemcisindeki (mstsc.exe) Gölge Bağlantı Seçenekleri

Windows Server 2016/Windows 10'da yerleşik RDP istemcisi (

mstsc.exe

), herhangi bir kullanıcının aktif bir RDP oturumuna uzaktan gölgeleme yapmak için kullanılabilecek birkaç özel seçeneğe sahiptir:

Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]

/shadow:ID

- belirtilen kimlikle kullanıcının RDP oturumuna bağlanın;

/v:servername

- uzak RDP/RDS ana bilgisayarının ana bilgisayar adını veya IP adresini belirleyebilirsiniz. Ayarlanmazsa, geçerli ana bilgisayardaki yerel kullanıcı oturumlarına bağlantılar yapılır;

/control

- kullanıcı oturumu (masaüstü) ile etkileşime izin verir. Yönetici, kullanıcının faresini kontrol edebilir, klavyeden veri girebilir. Bu parametre ayarlanmazsa, kullanıcının oturum görüntüleme modu kullanılır;

/noConsentPrompt

- seçenek, yöneticinin kullanıcıdan bağlantıyı onaylamasını istemeden bağlantıyı herhangi bir oturuma zorlamasına olanak tanır;

/prompt

- diğer kimlik bilgileriyle bağlantı kurulmasına izin verir. Uzak bilgisayara bağlanmak için kullanıcı adı ve parola istenir.

Gölge oturumlar, hem Active Directory etki alanındaki hem de çalışma grubundaki bilgisayarlardaki ve sunuculardaki kullanıcı oturumlarına bağlanmak için kullanılabilir. Ayrıca, kullanıcının RDP oturumunun çalıştığı bu RDS ana bilgisayarında yönetici ayrıcalıklarına sahip olmak gerekli değildir. Yöneticiler, yönetici olmayanlar için bile herhangi bir kullanıcı hesabına RDS Gölgelendirme izinleri atayabilir (aşağıda bu konuda daha fazla bilgi verilmektedir).

Windows GUI'den Uzak Masaüstü Gölgesini Kullanma

Kullanarak bir kullanıcı oturumuna bağlanabilirsiniz.

mstsc.exe

veya doğrudan Sunucu Yöneticisi grafik konsolundan. Bunu yapmak için, RDS sunucusunda Sunucu Yöneticisi konsolunu açın, Uzak Masaüstü Hizmetleri bölümüne gidin -> koleksiyonunuzu seçin, örneğin

QuickSessionCollection

Sağdaki liste, bu RDS sunucusunda oturumları olan kullanıcıların bir listesini içerecektir. İstediğiniz kullanıcı oturumunu sağ tıklayın, açılır menüden Gölge'yi seçin.

Yalnızca etkin bir kullanıcı oturumuna bağlanabilirsiniz. Oturum bağlantısı kesilmiş durumdaysa (RDS oturum sınırı/zaman aşımı ayarları nedeniyle), böyle bir oturuma bağlanamazsınız:

Shadow Error - The specified session is not connected.

Gölge bağlantı parametrelerine sahip bir pencere görünecektir. Bir kullanıcının RDP oturumunu Görüntüleyebilir veya Kontrol edebilirsiniz. Ayrıca Kullanıcı onayı iste seçeneğini de işaretleyebilirsiniz.

Bu seçenek işaretlenirse, kullanıcının RDP oturumunda aşağıdaki istek görünür:

Remote Monitoring Request
a-d\administrator is requesting to view your session remotely. Do you accept the request?

Kullanıcı bağlantıyı onaylarsa, yönetici masaüstünü Görünüm modunda görecek, ancak onunla etkileşime geçemeyecektir.

İpucu. Bir kullanıcı oturumunun bağlantısını kesmek ve Gölge modundan çıkmak için tuşuna basın.

ALT+*

iş istasyonunda veya

Ctrl+*

RDS sunucusunda (alternatif kombinasyon ayarlanmamışsa).

Bir kullanıcı yönetimsel Shadow RDS bağlantısını reddederse, aşağıdaki mesaj görünür:

Shadow Error: The operator or administrator has refused the request.

Windows Server'ın daha yeni sürümlerinde RDP oturumlarına gölge bağlantılar için Windows Server 2008 R2'deki tsadmin.msc grafik ek bileşenini kullanamazsınız.

Onay istemeden bir kullanıcının oturumuna bağlanmaya çalışırsanız bir hata mesajı alırsınız:

Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.

Kullanıcı oturumları için RDS gölge bağlantı olaylarını denetlemeniz gerekiyorsa, Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational günlüğünden aşağıdaki filtrelenmiş olayları kullanın:

  • Olay Kimliği 20508: Gölge Görünümü İzni Verildi;

  • Olay Kimliği 20503: Gölge Görünümü Oturumu Başladı;

  • Olay Kimliği 20504: Gölge Görünümü Oturumu Durduruldu.

GPO Kullanarak Windows'ta RDS Gölge Kurallarını Yapılandırma

RDS kullanıcı oturumlarına uzak bağlantı ayarları, GPO'nun Kullanıcı ve Bilgisayar bölümleri altında bulunan Uzak Masaüstü Hizmetleri kullanıcı oturumlarının uzaktan denetimi için kurallar belirleyin Grup İlkesi parametresi kullanılarak yapılandırılır: Politikalar - > Yönetim Şablonları -> Windows bileşenleri -> Uzak Masaüstü Hizmetleri -> Uzak Oturum Ana Bilgisayarı -> Bağlantılar. Bu politika, kayıt defteri anahtarının altındaki DWORD Shadow parametresine karşılık gelir

HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

(politika ayarlarına karşılık gelen bu parametrenin değerleri parantez içinde belirtilmiştir).

Bu ilke, aşağıdaki RD Gölge bağlantı seçeneklerini yapılandırmak için kullanılabilir:

  • Uzaktan denetime izin verilmez (kayıt defteri parametresinin değerine karşılık gelir)

    Shadow = 0

    );

  • Kullanıcının izniyle Tam Denetim (

    1

    );

  • Kullanıcının izni olmadan Tam Denetim (

    2

    );

  • Kullanıcının izniyle Oturumu Görüntüle (

    3

    );

  • Kullanıcının izni olmadan Oturumu Görüntüle (

    4

    ).

Bu ilkenin parametresini doğrudan kayıt defteri aracılığıyla ayarlamak için şu komutu kullanabilirsiniz:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 4

Oturum gölge davranışını değiştirdikten sonra, RDP/RDS ana bilgisayarında Grup İlkesi ayarlarını güncelleyin.

AD etki alanındaki uzak gölge bağlantıları için kuralları şu adresten yapılandırabilirsiniz:

gpmc.msc

konsolunu yukarıda açıklanan ilke parametresini kullanarak veya kayıt defteri parametresini doğrudan değiştiren Grup İlkesi Tercihlerini kullanarak (ikinci seçenek, Grup İlkesi Öğe Düzeyinde Hedeflemeyi kullanarak ilkeyi belirli bilgisayarlara daha doğru bir şekilde hedeflemenizi sağlar).

PowerShell ile RDP Oturumunu Gölgeleme

PowerShell'den bir kullanıcının oturumuna bağlanmak için Uzak Masaüstü Hizmetleri Gölge özelliklerini de kullanabilirsiniz. Her şeyden önce, RDS ana bilgisayarında oturumların bir listesini almanız gerekir (kullanıcı oturumları durumlarına göre gruplandırılacaktır):

Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate

Bu sunucuda üç aktif RDP kullanıcı oturumu var. Oturum kimliği 3 ile kullanıcı oturumuna bağlanalım:

Mstsc /shadow:3 /control

Ayrıca, sunucudaki (veya birden fazla RDP bağlantısına izin verilen Windows 10 masaüstündeki) tüm RDP oturumlarının bir listesini almak için şu komutu kullanabilirsiniz:

quser

veya

qwinsta

Ekran, RDP kullanıcı oturumlarının, kimliklerinin ve durumlarının bir listesini görüntüler:

Active

veya

Disconnected

Uzak bir sunucudaki oturumların listesini göstermek için aşağıdaki komutu çalıştırın:

query session /server:servername

Uzak sunucudaki bir kullanıcı oturumuna bağlanmak için şu komutu kullanın:

mstsc /v:rdsh2:3389 /shadow:3 /control

Uzak gölge bağlantı oturumu oluşturmak için varsayılan TCP/3389 RDP bağlantı noktası yerine dinamik bağlantı noktası aralığı (RPC) 49152 ila 65535 kullanılır.

RDP kullanıcı oturumlarına daha uygun gölge bağlantısı için aşağıdaki toplu komut dosyasını kullanabilirsiniz. Uzak RDS sunucusunun adını girmenizi ister, tüm oturumların bir listesini görüntüler ve bağlanmak istediğiniz oturumu (ID) belirtmenizi ister:

shadow.bat

@echo off
set /P rcomp="Enter name or IP of a Remote PC: "
query session /server:%rcomp%
set /P rid="Enter RDP user ID: "
start mstsc /shadow:%rid% /v:%rcomp% /control

Bu yarasa dosyasını şuraya kaydedebilirsiniz:

%Windir%\System32

dizin. Sonuç olarak, gölge bağlantısını başlatmak için gölge komutunu çalıştırmanız yeterlidir.

Konsol oturumuna bağlanmak için şu betiği kullanabilirsiniz:
shadow_console.bat

@echo off
set /P rcomp="Enter name or IP of a Remote PC: "
for /f "tokens=3 delims= " %%G in ('query session console /server:%rcomp%') do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control

Gölge bağlantısı için basit bir GUI (shadow_user_rdp_session.ps1) ile aşağıdaki PowerShell betiğini de kullanabilirsiniz:

Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$gForm = New-Object System.Windows.Forms.Form
$gForm.Text ='Shadow Session Connect'
$gForm.Width = 400
$gForm.AutoSize = $true
$dBttn = New-Object System.Windows.Forms.Button
$dBttn.Text = 'Control'
$dBttn.Location = New-Object System.Drawing.Point(15,10)
$gForm.Controls.Add($dBttn)
$dList = New-Object System.Windows.Forms.ListView
$dList.Location = New-Object System.Drawing.Point(0,50)
$dList.Width = $gForm.ClientRectangle.Width
$dList.Height = $gForm.ClientRectangle.Height
$dList.Anchor = "Top, Left, Right, Bottom"
$dList.MultiSelect = $False
$dList.View = 'Details'
$dList.FullRowSelect = 1;
$dList.GridLines = 1
$dList.Scrollable = 1
$gForm.Controls.add($dList)
foreach ($column in $Header){
$dList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[\s>]" , "" -replace "\s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dListItem.Subitems.Add($_.USERNAME) | Out-Null
$dListItem.Subitems.Add($_.ID) | Out-Null
$dListItem.Subitems.Add($_.STATUS) | Out-Null
$dList.Items.Add($dListItem) | Out-Null
}
$dBttn.Add_Click(
{
$SelectedItem = $dList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Select a user session to connect ")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$gForm.ShowDialog()

Bu komut dosyası, yerel ana bilgisayardaki etkin RDP oturumlarının bir listesini içeren basit bir grafik formu görüntüler. Bir kullanıcı hesabı seçmeniz ve Bağlan düğmesini tıklamanız yeterlidir.

Bilgisayarda PowerShell betiklerini (*.ps1) çalıştırmak için PowerShell Yürütme ilkesini yapılandırmanız gerekir.

Gölge kullanıcı bağlantısını, Uzak Masaüstü Hizmetleri rolüyle yalnızca Windows Server'da değil, aynı zamanda bağlanmak için de kullanabilirsiniz. Windows 10 çalıştıran kullanıcıların masaüstlerine (Windows 10'da Uzak Masaüstü Oturumu Gölgeleme Modunu Kullanma).

Yönetici Olmayan Kullanıcıların RDS Oturumlarını Gölgelendirmesine Nasıl İzin Verilir?

Yukarıdaki örneklerde, RDS kullanıcı oturumlarına gölge bağlantının kullanılması, RDS sunucusunda yerel yönetici ayrıcalıkları gerektirir. Ancak, yönetici olmayan bir kullanıcının bilgisayarda/sunucuda yerel yönetici izinleri vermeden RDP oturumlarını gölgelemesine izin verebilirsiniz.

Örneğin, AllowRDSShadow grubunun üyelerinin RDP kullanıcı oturumlarına gölge bağlantı kullanmasına izin vermek istiyorsunuz. Yükseltilmiş komut istemini (cmd.exe) açın ve şu komutu çalıştırın:

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=”RDP-Tcp”) CALL AddAccount “a-d\AllowRDSShadow”,2

İlgili makaleler