Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

โหมดเซสชันเงา ช่วยให้ผู้ดูแลระบบ RDS ดูและโต้ตอบกับเดสก์ท็อปของผู้ใช้ได้ โหมด Remote Desktop Shadowing ใช้งานได้กับ Windows รุ่นใหม่ทั้งหมดตั้งแต่ Windows Server 2012 R2 และ Windows 8.1 (ยกเว้น Windows Server 2012 เนื่องจากการถ่ายโอน RDP stack จากเคอร์เนลไปยังโหมดผู้ใช้) ในบทความนี้ เราจะมาดูวิธีกำหนดค่าและใช้ RDS Shadowing เพื่อเชื่อมต่อและจัดการเซสชันผู้ใช้ RDP ที่ใช้งานอยู่ใน Windows Server 2016 และ Windows 10

สารบัญ:

  • ตัวเลือกการเชื่อมต่อเงาในไคลเอนต์ Windows RDP (mstsc.exe)
  • การใช้ Remote Desktop Shadow จาก GUI ของ Windows
  • การกำหนดค่า RDS Shadow Rules บน Windows โดยใช้ GPO
  • การแรเงาเซสชัน RDP ด้วย PowerShell
  • จะอนุญาตให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเงาเซสชัน RDS ได้อย่างไร

ตัวเลือกการเชื่อมต่อเงาในไคลเอนต์ Windows RDP (mstsc.exe)

บน Windows Server 2016/Windows 10 ไคลเอ็นต์ RDP ในตัว (mstsc.exe ) มีตัวเลือกพิเศษหลายอย่างที่สามารถใช้เพื่อให้เงาเชื่อมต่อกับเซสชัน RDP ที่ใช้งานอยู่ของผู้ใช้คนใดก็ได้จากระยะไกล:

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

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

  • /shadow:ID – เชื่อมต่อกับเซสชัน RDP ของผู้ใช้ด้วย ID ที่ระบุ
  • /v:ชื่อเซิร์ฟเวอร์ – คุณสามารถระบุชื่อโฮสต์หรือที่อยู่ IP ของโฮสต์ RDP/RDS ระยะไกลได้ หากไม่ได้ตั้งค่าไว้ จะมีการเชื่อมต่อกับเซสชันผู้ใช้ในเครื่องบนโฮสต์ปัจจุบัน
  • /ควบคุม – อนุญาตให้โต้ตอบกับเซสชันผู้ใช้ (เดสก์ท็อป) ผู้ดูแลระบบสามารถควบคุมเมาส์ของผู้ใช้ ป้อนข้อมูลจากแป้นพิมพ์ หากไม่ได้ตั้งค่าพารามิเตอร์นี้ ระบบจะใช้โหมดดูเซสชันของผู้ใช้
  • /noConsentPrompt – ตัวเลือกนี้อนุญาตให้ผู้ดูแลระบบบังคับการเชื่อมต่อกับเซสชันใดๆ โดยไม่ต้องขอให้ผู้ใช้ยืนยันการเชื่อมต่อ
  • /พรอมต์ – อนุญาตให้เชื่อมต่อกับข้อมูลประจำตัวอื่น ๆ ขอชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกล

เซสชันเงาสามารถใช้เพื่อเชื่อมต่อกับเซสชันผู้ใช้บนคอมพิวเตอร์และเซิร์ฟเวอร์ทั้งในโดเมน Active Directory และเวิร์กกรุ๊ป นอกจากนี้ ไม่จำเป็นต้องมีสิทธิ์ของผู้ดูแลระบบบนโฮสต์ RDS ในเซสชัน RDP ของผู้ใช้ที่กำลังรันอยู่ ผู้ดูแลระบบสามารถมอบสิทธิ์การอนุญาต RDS Shadowing ให้กับบัญชีผู้ใช้ใด ๆ แม้แต่ผู้ที่ไม่ใช่ผู้ดูแลระบบ (เพิ่มเติมเกี่ยวกับสิ่งนี้ด้านล่าง)

การใช้ Remote Desktop Shadow จาก GUI ของ Windows

คุณสามารถเชื่อมต่อกับเซสชันผู้ใช้โดยใช้ mstsc.exe หรือโดยตรงจากคอนโซลกราฟิกตัวจัดการเซิร์ฟเวอร์ โดยเปิดคอนโซลตัวจัดการเซิร์ฟเวอร์บนเซิร์ฟเวอร์ RDS ไปที่ส่วนบริการเดสก์ท็อประยะไกล -> เลือกคอลเลกชันของคุณ เช่น QuickSessionCollection .

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

รายการทางด้านขวาจะมีรายชื่อผู้ใช้ที่มีเซสชันบนเซิร์ฟเวอร์ RDS นี้ คลิกขวาที่เซสชันผู้ใช้ที่คุณต้องการ เลือก เงา จากเมนูแบบเลื่อนลง

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

คุณสามารถเชื่อมต่อกับเซสชันผู้ใช้ที่ใช้งานอยู่เท่านั้น หากเซสชันอยู่ในสถานะไม่ได้เชื่อมต่อ (เนื่องจากการตั้งค่าขีดจำกัด/การหมดเวลาของเซสชัน RDS) คุณจะไม่สามารถเชื่อมต่อกับเซสชันดังกล่าวได้:

Shadow Error - The specified session is not connected.

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หน้าต่างที่มีพารามิเตอร์การเชื่อมต่อเงาจะปรากฏขึ้น คุณสามารถดู หรือ ควบคุม เซสชัน RDP ของผู้ใช้ คุณยังสามารถตรวจสอบพร้อมท์ให้ผู้ใช้ยินยอม ตัวเลือก.

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หากเลือกตัวเลือกนี้ คำขอต่อไปนี้จะปรากฏในเซสชัน RDP ของผู้ใช้:

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

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หากผู้ใช้ยืนยันการเชื่อมต่อ ผู้ดูแลระบบจะเห็นเดสก์ท็อปใน ดู แต่จะไม่สามารถโต้ตอบกับมันได้

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

เคล็ดลับ หากต้องการยกเลิกการเชื่อมต่อจากเซสชันผู้ใช้และออกจากโหมด Shadow ให้กด ALT+* บนเวิร์กสเตชันหรือ Ctrl+* บนเซิร์ฟเวอร์ RDS (ถ้าไม่ได้ตั้งค่าชุดค่าผสมอื่นไว้)

หากผู้ใช้ปฏิเสธการเชื่อมต่อ Shadow RDS ของผู้ดูแลระบบ ข้อความต่อไปนี้จะปรากฏขึ้น:

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

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

คุณไม่สามารถใช้สแน็ปอินกราฟิก tsadmin.msc จาก Windows Server 2008 R2 สำหรับการเชื่อมต่อเงากับเซสชัน RDP บน Windows Server เวอร์ชันใหม่กว่าได้
หากคุณพยายามเชื่อมต่อกับเซสชันของผู้ใช้โดยไม่ให้ยืนยัน คุณจะได้รับ ข้อความแสดงข้อผิดพลาด:

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

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หากคุณต้องการตรวจสอบเหตุการณ์การเชื่อมต่อเงา RDS สำหรับเซสชันผู้ใช้ ให้ใช้เหตุการณ์ที่กรองต่อไปนี้จาก Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational บันทึก:

  • รหัสกิจกรรม 20508 :อนุญาตให้ใช้มุมมองเงา
  • รหัสกิจกรรม 20503 :เริ่มเซสชัน Shadow View แล้ว
  • รหัสกิจกรรม 20504 :เซสชันมุมมองเงาหยุดลง

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

การกำหนดค่า RDS Shadow Rules บน Windows โดยใช้ GPO

การตั้งค่าสำหรับการเชื่อมต่อระยะไกลไปยังเซสชันผู้ใช้ RDS ได้รับการกำหนดค่าโดยใช้พารามิเตอร์นโยบายกลุ่ม ตั้งกฎสำหรับการควบคุมระยะไกลของเซสชันผู้ใช้บริการเดสก์ท็อประยะไกล ซึ่งอยู่ภายใต้ส่วนผู้ใช้และคอมพิวเตอร์ของ GPO: Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections นโยบายนี้สอดคล้องกับ DWORD เงา พารามิเตอร์ภายใต้คีย์รีจิสทรี HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services (ค่าของพารามิเตอร์นี้สอดคล้องกับการตั้งค่านโยบายระบุไว้ในวงเล็บ)

นโยบายนี้สามารถใช้เพื่อกำหนดค่าตัวเลือกการเชื่อมต่อ RD Shadow ต่อไปนี้:

  • ไม่อนุญาตให้ใช้รีโมตคอนโทรล (สอดคล้องกับค่าของพารามิเตอร์รีจิสตรี Shadow = 0 );
  • ควบคุมทั้งหมดโดยได้รับอนุญาตจากผู้ใช้ (1 );
  • ควบคุมทั้งหมดโดยไม่ได้รับอนุญาตจากผู้ใช้ (2 );
  • ดูเซสชันโดยได้รับอนุญาตจากผู้ใช้ (3 );
  • ดูเซสชันโดยไม่ได้รับอนุญาตจากผู้ใช้ (4 )
ในการตั้งค่าพารามิเตอร์ของนโยบายนี้โดยตรงผ่านรีจิสทรี คุณสามารถใช้คำสั่ง:

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

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หลังจากเปลี่ยนลักษณะการทำงานของเงาของเซสชัน ให้อัปเดตการตั้งค่านโยบายกลุ่มบนโฮสต์ RDP/RDS

คุณสามารถกำหนดค่ากฎสำหรับการเชื่อมต่อเงาระยะไกลในโดเมน AD จาก gpmc.msc คอนโซลโดยใช้พารามิเตอร์นโยบายที่อธิบายไว้ข้างต้น หรือโดยใช้การตั้งค่านโยบายกลุ่ม ซึ่งจะแก้ไขพารามิเตอร์รีจิสทรีโดยตรง (ตัวเลือกหลังช่วยให้คุณสามารถกำหนดเป้าหมายนโยบายไปยังคอมพิวเตอร์เครื่องใดเครื่องหนึ่งได้อย่างแม่นยำมากขึ้นโดยใช้การกำหนดเป้าหมายระดับรายการนโยบายกลุ่ม)

การแรเงาเซสชัน RDP ด้วย PowerShell

คุณยังสามารถใช้คุณลักษณะ Remote Desktop Services Shadow เพื่อเชื่อมต่อกับเซสชันของผู้ใช้จาก PowerShell ก่อนอื่น คุณต้องรับรายการเซสชันบนโฮสต์ RDS (เซสชันผู้ใช้จะถูกจัดกลุ่มตามสถานะ):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

มีสามเซสชันผู้ใช้ RDP ที่ใช้งานอยู่บนเซิร์ฟเวอร์นี้ มาเชื่อมต่อกับเซสชันผู้ใช้ด้วย ID เซสชัน 3:
Mstsc /shadow:3 /control

นอกจากนี้ หากต้องการรับรายการเซสชัน RDP ทั้งหมดบนเซิร์ฟเวอร์ (หรือบนเดสก์ท็อป Windows 10 ที่อนุญาตการเชื่อมต่อ RDP หลายรายการ) คุณสามารถใช้คำสั่ง:

quser

หรือ

qwinsta

หน้าจอจะแสดงรายการเซสชันผู้ใช้ RDP, ID และสถานะ:Active หรือ Disconnected .

จะเงา (การควบคุมระยะไกล) เซสชัน RDP ของผู้ใช้บน RDS Windows Server 2016/2019 ได้อย่างไร

หากต้องการแสดงรายการเซสชันบนเซิร์ฟเวอร์ระยะไกล ให้เรียกใช้คำสั่งต่อไปนี้:

query session /server:servername

หากต้องการเชื่อมต่อกับเซสชันผู้ใช้บนเซิร์ฟเวอร์ระยะไกล ให้ใช้คำสั่ง:

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

ช่วงพอร์ตไดนามิก (RPC) 49152 ถึง 65535 ใช้เพื่อสร้างเซสชันการเชื่อมต่อเงาระยะไกลแทนพอร์ต TCP/3389 RDP เริ่มต้น

เพื่อการเชื่อมต่อเงาที่สะดวกยิ่งขึ้นกับเซสชันผู้ใช้ RDP คุณสามารถใช้แบทช์สคริปต์ต่อไปนี้ จะแจ้งให้คุณป้อนชื่อเซิร์ฟเวอร์ RDS ระยะไกล แสดงรายการเซสชันทั้งหมด และแจ้งให้คุณระบุเซสชัน (ID) ที่คุณต้องการเชื่อมต่อ:

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

คุณสามารถบันทึกไฟล์ bat นี้ใน %Windir%\System32 ไดเร็กทอรี ด้วยเหตุนี้ คุณเพียงแค่ต้องเรียกใช้ เงา คำสั่งเพื่อเริ่มการเชื่อมต่อเงา

ในการเชื่อมต่อกับเซสชันคอนโซล คุณสามารถใช้สคริปต์นี้:
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

คุณยังสามารถใช้สคริปต์ PowerShell ต่อไปนี้กับ GUI แบบง่าย (shadow_user_rdp_session.ps1 ) สำหรับการเชื่อมต่อเงา:

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()

สคริปต์นี้แสดงรูปแบบกราฟิกอย่างง่ายพร้อมรายการเซสชัน RDP ที่ใช้งานอยู่บนโฮสต์ท้องถิ่น คุณเพียงแค่ต้องเลือกบัญชีผู้ใช้แล้วคลิกปุ่ม เชื่อมต่อ ปุ่ม.

ในการเรียกใช้สคริปต์ PowerShell (*.ps1) บนคอมพิวเตอร์ คุณต้องกำหนดค่านโยบายการดำเนินการของ PowerShell

คุณสามารถใช้การเชื่อมต่อผู้ใช้เงาไม่เฉพาะบน Windows Server ที่มีบทบาทบริการเดสก์ท็อประยะไกล แต่ยังเชื่อมต่อกับเดสก์ท็อปของผู้ใช้ที่ใช้ Windows 10 ได้ (โดยใช้โหมดการซ่อนเซสชันเดสก์ท็อประยะไกลใน Windows 10)

จะอนุญาตให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเงาเซสชัน RDS ได้อย่างไร

ในตัวอย่างข้างต้น การใช้การเชื่อมต่อเงากับเซสชันผู้ใช้ RDS ต้องใช้สิทธิ์ผู้ดูแลระบบในพื้นที่บนเซิร์ฟเวอร์ RDS อย่างไรก็ตาม คุณสามารถอนุญาตให้ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเงาเซสชัน RDP โดยไม่ต้องให้สิทธิ์ผู้ดูแลระบบในเครื่องบนคอมพิวเตอร์/เซิร์ฟเวอร์

ตัวอย่างเช่น คุณต้องการอนุญาตให้สมาชิกของกลุ่ม AllowRDSShadow ใช้การเชื่อมต่อเงากับเซสชันผู้ใช้ RDP เปิดพรอมต์คำสั่งที่ยกระดับ (cmd.exe) และเรียกใช้คำสั่ง:

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