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

ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง

บางครั้งผู้ใช้ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ฟาร์ม RDS ที่ใช้ Windows Server โดยใช้ไคลเอนต์ RDP ในตัว (mstsc.exe) โดยมีข้อผิดพลาดต่อไปนี้:

The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log on.

ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง

ในกรณีนี้ ผู้ดูแลระบบโฮสต์ RDS สามารถเห็นเซสชันผู้ใช้ที่ค้างอยู่จำนวนมากโดยใช้ชื่อ (4) แทนชื่อผู้ใช้และยกเลิกการเชื่อมต่อ สถานะในแท็บผู้ใช้ของตัวจัดการงาน

ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง

ปัญหาเกิดขึ้นใน Windows Server ทุกรุ่น:2008 R2, 2012 R2, 2016 และ 2019

ข้อผิดพลาดอาจปรากฏขึ้นจากหลายสาเหตุ:

  • ข้อผิดพลาดในการทำงานของบริการเดสก์ท็อประยะไกล
  • ข้อบกพร่องในกระบวนการ csrss.exe;
  • ปัญหาเกี่ยวกับโปรไฟล์ผู้ใช้หรือบริการ profsvc
  • ไม่มี RAM หรือพื้นที่ดิสก์บนเซิร์ฟเวอร์ RDSH
  • การตั้งค่านโยบายกลุ่มไม่ถูกต้อง

น่าเสียดายที่ไม่มีโซลูชันอย่างเป็นทางการของ Microsoft ที่สามารถแก้ปัญหาได้อย่างสมบูรณ์ สิ่งที่คุณทำได้คือกำจัดอาการ

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

ตรวจสอบทรัพยากรเซิร์ฟเวอร์ RDS

ตรวจสอบให้แน่ใจว่าคุณมีทรัพยากรเซิร์ฟเวอร์เพียงพอ เนื่องจากปัญหาอาจเกิดขึ้นเนื่องจาก RAM หรือพื้นที่ดิสก์ไม่เพียงพอ ตรวจสอบโหลด RAM และพื้นที่ว่างบนดิสก์ที่มีการติดตั้งระบบปฏิบัติการ (ต้องมีอย่างน้อย 1GB) นอกจากนี้ ดูบันทึกเหตุการณ์เพื่อดูว่ามีข้อผิดพลาดร้ายแรงใดๆ ที่เกี่ยวข้องกับ RDS หรือไม่

หากทุกอย่างเรียบร้อย ให้ไปยังขั้นตอนถัดไป

รีเซ็ต Stuck Client Remote Desktop Session บน RDS

ก่อนอื่น ให้ลองค้นหาและรีเซ็ตเซสชันของผู้ใช้ที่ไม่สามารถเข้าสู่ระบบเซิร์ฟเวอร์ RDS ด้วยข้อผิดพลาด “บริการเดสก์ท็อประยะไกลไม่ว่างอยู่ในขณะนี้” ค้นหาผู้ใช้ในแท็บผู้ใช้ของ Task Manager และคลิก ออกจากระบบ ในเมนูบริบท ในกรณีส่วนใหญ่ การแก้ปัญหาก็เพียงพอแล้ว แต่บางครั้งคุณสามารถค้นหาเซสชันที่หยุดทำงานหลายรายการโดยใช้ชื่อ (4) แทนชื่อผู้ใช้ในตัวจัดการงาน ตามกฎแล้ว จะมี 4 กระบวนการในเซสชันผู้ใช้ RDS ที่หยุดทำงาน:

  • กระบวนการรันไทม์เซิร์ฟเวอร์ไคลเอ็นต์ (csrss.exe)
  • เดสก์ท็อป Windows Manager (dwm.exe)
  • แอปพลิเคชันการเข้าสู่ระบบ Windows (winlogon.exe)
  • อินเทอร์เฟซผู้ใช้การเข้าสู่ระบบ Windows

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

  1. เรียกใช้พรอมต์คำสั่งที่ยกระดับและรันคำสั่ง: query session
    ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง จะแสดงผู้ใช้ทั้งหมดและเซสชันระยะไกลบนโฮสต์ RDS มี 3 คอลัมน์ที่เราต้องการในผลลัพธ์:SESSIONNAME, USERNAME และ ID ค้นหา (4) ผู้ใช้และ ID ที่เกี่ยวข้อง ในตัวอย่างนี้คือ ID 2 . เราต้องฆ่า csrss.exe กระบวนการที่ทำงานอยู่ในเซสชั่นนี้ แต่เราต้องหามันให้เจอก่อน
  2. แสดงรายการกระบวนการที่ทำงานอยู่ในรหัสเซสชันที่คุณได้รับก่อนหน้านี้: query process /id 2
    ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง ค้นหา csrss.exe กระบวนการ (ตรวจสอบคอลัมน์ IMAGE) และ PID . ในกรณีของฉัน PID คือ 5140 . คุณต้องฆ่ากระบวนการนี้
  3. ตรวจสอบในตัวจัดการงาน เปิดตัวจัดการงาน ไปที่ รายละเอียด แท็บและค้นหา PID และกระบวนการจากขั้นตอนก่อนหน้า ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง หาก PID ที่คุณต้องการสอดคล้องกับกระบวนการ csrss.exe ให้ปิดกระบวนการโดยคลิก สิ้นสุดภารกิจ ในเมนูบริบทหรือโดยการป้อนคำสั่งต่อไปนี้ในพรอมต์คำสั่ง: taskkill /F /PID 5140

ทำสำหรับผู้ใช้แต่ละคน (4) หากมีบางส่วน

การรีเซ็ตเซสชันผู้ใช้ RDS

หากคุณไม่สามารถออกจากระบบผู้ใช้ที่มีปัญหาในตัวจัดการงานได้ คุณสามารถลองรีเซ็ตเซสชันผู้ใช้ RDS ได้จากพรอมต์คำสั่ง:

  1. เปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบและเรียกใช้คำสั่ง: query session
    คัดลอก SESSIONNAME ของผู้ใช้ที่มีปัญหา
  2. Enter: reset session <SESSIONNAME> ระบุชื่อเซสชันที่คุณมีแทน ตามที่แสดงในภาพหน้าจอด้านล่าง:ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง

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

ตรวจสอบการตั้งค่าใบอนุญาตบนโฮสต์ RDS ของคุณ

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ใบอนุญาตและประเภทใบอนุญาต (CAL ต่อผู้ใช้/ CAL ต่ออุปกรณ์) ที่ระบุในโฮสต์ RDS ของคุณถูกต้อง

เมื่อฉันได้รับข้อผิดพลาด 'งานที่คุณพยายามทำไม่สามารถทำได้เนื่องจากบริการเดสก์ท็อประยะไกลกำลังยุ่งอยู่ ’ เมื่อหลังจากการติดตั้งบทบาท RDSH ฉันลืมระบุชื่อโฮสต์/ที่อยู่ IP ของเซิร์ฟเวอร์ด้วยบทบาท Remote Desktop Licensing ในกรณีดังกล่าว ผู้ใช้ RDP สองคนเชื่อมต่อตามปกติ และผู้ใช้รายที่สามพบข้อผิดพลาดนี้

คุณสามารถระบุที่อยู่ของเซิร์ฟเวอร์ด้วยใบอนุญาต RDS:

  • ในการตั้งค่าการรวบรวม RDS:งาน -> แก้ไขคุณสมบัติการปรับใช้ -> สิทธิ์การใช้งาน RD -> ระบุเซิร์ฟเวอร์ใบอนุญาต ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง
  • ใน GPO: ใช้เซิร์ฟเวอร์ใบอนุญาต Remote Desktop ที่ระบุ (การกำหนดค่าคอมพิวเตอร์ -> นโยบาย -> เทมเพลตการดูแลระบบ -> คอมโพเนนต์ของ Windows -> บริการเดสก์ท็อประยะไกล -> โฮสต์เซสชันเดสก์ท็อประยะไกล -> การออกใบอนุญาต) ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง
  • การใช้ PowerShell (ดูบทความไม่ได้กำหนดค่าโหมดการอนุญาตให้ใช้สิทธิ์สำหรับโฮสต์เซสชันเดสก์ท็อประยะไกล)

ลบขีดจำกัดการเชื่อมต่อ RDP ใน GPO

คุณสามารถใช้นโยบายกลุ่มเพื่อจำกัดจำนวนการเชื่อมต่อ RDS พร้อมกัน (พร้อมกัน) การตั้งค่านโยบายนี้ถูกปิดใช้งานโดยค่าเริ่มต้น

ตรวจสอบว่าเปิดใช้นโยบายและรับค่าโดยใช้ gpresult

  1. เรียกใช้คำสั่งต่อไปนี้ในพร้อมท์คำสั่งที่มีการยกระดับ: gpresult /H c:\gpresult.html
  2. เปิดไฟล์ gpresult.html ที่อยู่ในรูทของดิสก์ C ซึ่งเป็นไฟล์ .html ทั่วไป และแนะนำให้เปิดใน Internet Explorer เนื่องจากอาจแสดงผลอย่างไม่ถูกต้องในเบราว์เซอร์อื่น
  3. ค้นหาการตั้งค่า GPO ชื่อ  จำกัดจำนวนการเชื่อมต่อ ภายใต้ การกำหนดค่าคอมพิวเตอร์ -> เทมเพลตการดูแลระบบ -> ส่วนประกอบ Windows -> บริการเดสก์ท็อประยะไกล -> โฮสต์เซสชันเดสก์ท็อประยะไกล \ การเชื่อมต่อ  หรือพิมพ์ จำกัดจำนวนการเชื่อมต่อ เพื่อค้นหาในหน้า

หากไม่มีการตั้งค่านโยบายดังกล่าว จะไม่มีการใช้และไม่มีข้อจำกัดเกี่ยวกับจำนวนการเชื่อมต่อพร้อมกัน หากเปิดใช้นโยบายและกำหนดจำนวนการเชื่อมต่อสูงสุดแล้ว ให้เปลี่ยนค่าตามที่คุณต้องการ คุณสามารถแก้ไขตัวแก้ไขนโยบายกลุ่มในเครื่องได้ (gpedit.msc ) และหากนโยบายถูกตั้งค่าโดยใช้โดเมน GPO ให้แก้ไขใน gpmc.msc . หลังจากที่คุณทำเสร็จแล้ว อย่าลืมเรียกใช้คำสั่ง gpupdate /force เพื่อรีเฟรชและใช้การตั้งค่านโยบายกลุ่มใหม่ทันที

โซลูชันที่พร้อมใช้งานทันที:จะทำอย่างไรถ้าไม่ช่วยอะไร

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

  • ตรวจสอบให้แน่ใจว่า ท่อระบายน้ำ โหมดที่ป้องกันไม่ให้ผู้ใช้สร้างการเชื่อมต่อ RDP ใหม่ถูกปิดใช้งาน: chglogon.exe /QUERY . หากคำสั่งส่งคืน 'การเข้าสู่ระบบของผู้ใช้ใหม่ถูกปิดใช้งาน แต่การเชื่อมต่อกับเซสชันที่มีอยู่อีกครั้งถูกเปิดใช้งาน' ให้ปิดใช้งานโหมดระบาย: chglogon.exe /enable ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง
  • ยกเลิกการเลือก การแคชบิตแมปแบบถาวร ในการตั้งค่าการเชื่อมต่อ RDP ของ mstsc.exe ลูกค้า; ขณะนี้บริการเดสก์ท็อประยะไกลไม่ว่าง
  • เริ่มบริการเดสก์ท็อประยะไกลใหม่โดยใช้คำสั่ง: net stop termservice และ net start termservice . หรือเริ่มบริการใหม่จากระยะไกลโดยใช้ PowerShell: Get-Service termservice –ComputerName mun-rdsh1 | Restart-Service
  • ฆ่า tstheme.exe . ทั้งหมด กระบวนการ
  • ขอแนะนำให้ใช้การอัปเดตล่าสุดทั้งหมดสำหรับเวอร์ชัน Windows ของคุณ ใช้เครื่องมืออัปเดตมาตรฐาน (หรือโมดูล PSWindowsUpdate PowerShell)