เทคโนโลยีเสมือนไฮเปอร์ (virtualization) กลายเป็นเรื่องปกติมาก จนมากกว่าที่เราคิดจริงๆ ณ จุดนี้ ยากที่จะจินตนาการอินเทอร์เน็ตโดยไม่มีฟีเจอร์และความราคาที่ virtualization ให้มา แม้เราจะประหยัดเงินและอุปสรรคการจัดการฮาร์ดแวร์จริงได้มาก เรายังบางครั้งต้องต่ออุปกรณ์ภายนอก เช่น USB ฯลฯ เข้ากับเครื่องของเรา

หากคุณคุ้นเคยกับ VMware คุณจะตระหนักหลังอ่านบทความนี้ว่ากระบวนการง่ายกว่ามากใน VMware พวกเขามีฟีเจอร์ USB passthrough มานานแล้ว ปัญหาหลักคือคุณไม่สามารถต่ออุปกรณ์ USB กับเครื่องเสมือนมากกว่าหนึ่งเครื่องพร้อมกันได้ แต่ Hyper-V ทำงานต่างออกไป กระบวนการทำ USB passthrough ใน Hyper-V แตกต่างออกไปเล็กน้อย ก่อนจะไปรายละเอียด ให้เราทำความเข้าใจพื้นฐานของ USB passthrough ก่อน
USB passthrough คือความสามารถที่ให้คุณเข้าถึง USB drive จากเครื่องเสมือน (virtual machine) USB drive นี้อาจต่ออยู่กับคอมพิวเตอร์ที่คุณใช้เข้าถึงเครื่องเสมือนจริงๆ หรืออาจเสียบอยู่ที่ Hyper-V host เอง สองสถานการณ์นี้ทำให้มีสองวิธีการทำ passthrough เราจะครอบคลุมทั้งสอง
Server-side USB Passthrough (ฝั่งเซิร์ฟเวอร์/โฮสต์)
Server-side หรือ host USB passthrough หมายถึง USB ที่เสียบอยู่ที่ Hyper-V host กระบวนการเข้าถึง USB อาจไม่ราบรื่นเท่า VMware แต่ในความเป็นจริง ไม่ได้ยากขนาดนั้น และด้วยคำแนะนำที่เราจะให้ จะง่ายกว่าที่เคย มาเริ่มกันเลย
- ก่อนอื่น เสียบอุปกรณ์ USB ที่คุณต้องการใช้
- เมื่อเสียบอุปกรณ์แล้ว คุณจะเห็นว่าระบบปฏิบัติการโฮสต์ (host OS) รู้จักไดรฟ์ที่ต่ออยู่ แต่ปัญหาคือ USB drive สามารถใช้ได้โดย OS เดียวในเวลาเดียวกัน เพื่อแก้ไข เราต้องทำให้ USB drive อยู่ในสถานะ Offline เพื่อทำให้เข้าถึงไม่ได้จาก host OS หลังจากนั้น จึงสามารถเข้าถึงได้จากเครื่องเสมือนใดๆ ที่คุณต้องการ
- สำหรับสิ่งนี้ ให้เปิดกล่องโต้ตอบ Run โดยกด Windows key + R พิมพ์คำสั่ง diskmgmt.msc แล้วกด Enter จะเปิดหน้าต่าง Disk Management
- ตอนนี้เราต้องทำให้ USB อยู่สถานะ Offline คลิกขวาที่ดิสก์ แล้วคลิก Offline โปรดทราบว่าคุณต้องคลิกขวาที่ ดิสก์เอง ไม่ใช่ตัวอักษรไดรฟ์ (drive letter) สำหรับอ้างอิง ดูภาพที่แนบมา

- ปัญหาของ Disk Management Console คือไม่แสดงตัวเลือก Offline สำหรับอุปกรณ์ USB ทุกตัว ดังนั้น หากคุณมี USB ขนาดเล็ก คุณอาจไม่ได้ตัวเลือก Offline ในกรณีนี้ คุณจะไม่สามารถใช้ passthrough ได้
- เมื่อ USB drive ออฟไลน์แล้ว ให้เปิด Hyper-V Manager
- คลิกขวาที่เครื่องเสมือนที่ต้องการเข้าถึง USB drive ไปที่ Settings
- บนแท็บ Add Hardware เลือก SCSI Controller จากรายการ แล้วคลิก Add

- เลือกตัวเลือก Physical Hard Disk ในหน้าจอถัดไป แล้วเลือก USB drive ที่คุณต่ออยู่
- เมื่อเสร็จ คลิก Apply แล้ว OK
- USB drive ควรจะพร้อมใช้งานสำหรับเครื่องเสมือนเฉพาะตัวนั้นแล้ว หากคุณไม่เห็น USB drive รายการใน VM คุณสามารถกลับไปที่ Disk Management Console และให้ตัวอักษรไดรฟ์ (drive letter) กับอุปกรณ์ USB
Client-side USB Passthrough (ฝั่งไคลเอ็นต์)
ตอนนี้เราทำ server-side passthrough เสร็จแล้ว เราสามารถไปยัง client-side passthrough ได้ มีจริงๆ สองวิธีในการทำ client-side pass through และเราจะครอบคลุมทั้งสอง วิธีแรกผ่าน Remote Desktop session และวิธีที่สองขึ้นอยู่กับ Enhanced Session Mode มาเริ่มกัน
วิธีที่ 1: USB Passthrough ด้วย Remote Desktop Connection
เพื่อทำ USB passthrough ด้วย Remote Desktop Connection ทำตามคำแนะนำด้านล่าง:
- ก่อนอื่น คุณต้องเปิดใช้งาน remote desktop connections บนเครื่องเสมือน วิธีทำ: เชื่อมต่อกับเครื่องเสมือนของคุณ ไปที่ Remote System Settings ผ่าน Control Panel > System and Security > Allow Remote Access
- ติ๊ก Allow Remote Assistance connections to this computer นอกจากนี้ ตรวจสอบให้แน่ใจว่า Allow remote connections to this computer ถูกเลือกด้วย สุดท้าย คลิก Apply แล้ว OK

- ตอนนี้ คุณต้องเชื่อมต่อกับเครื่องนี้จากระยะไกล สำหรับสิ่งนี้ ให้เปิด RDP client โดยพิมพ์ mstsc.exe ในกล่องโต้ตอบ Run
- คลิกตัวเลือก Show options เพื่อดูการตั้งค่าเพิ่มเติม สลับไปแท็บ Local Resources แล้วคลิกปุ่ม More
- ติ๊ก Other supported Plug and Play devices แล้วคลิก OK

- สุดท้าย คลิก Connect เพื่อเริ่มเซสชัน remote desktop ของคุณ
วิธีที่ 2: ใช้ Enhanced Session Mode
หากคุณไม่รู้ Enhanced Session mode มันคือฟีเจอร์ที่ช่วย redirect ทรัพยากรและอุปกรณ์ท้องถิ่น (local resources and devices) ไปยังเครื่องเสมือน หากระบบของคุณรัน Windows 10 หรือ Windows 8.1 คุณมีโหมดนี้เปิดใช้งานโดยค่าเริ่มต้น (enabled by default) หาก Hyper-V host ของคุณรัน Windows Server 2012 หรือ Windows Server 2016 คุณจะต้องเปิดใช้งานด้วยตนเอง
ทำตามคำแนะนำด้านล่างเพื่อทำ USB passthrough:
- ก่อนอื่น บน Hyper-V host ของคุณ ให้เปิด Hyper-V Manager
- ที่นั่น คลิกขวาที่เครื่องเสมือนที่คุณต้องการใช้ แล้วเลือก Hyper-V Settings จากเมนูแบบเลื่อนลง
- ในทั้งสองส่วน Server และ User ไปที่แท็บ Enhanced Session Mode Policy และติ๊ก Allow enhanced session mode

- จากนั้น คลิก Apply แล้ว OK เพื่อบันทึกการเปลี่ยนแปลง
- ตอนนี้ คุณจะต้องเลือกทรัพยากรท้องถิ่น (local resources) ที่คุณต้องการใช้ รวมถึงไดรฟ์ท้องถิ่น เครื่องพิมพ์ อุปกรณ์ USB และอื่นๆ
- เพื่อทำสิ่งนี้ ให้เริ่มเครื่องเสมือนจากหน้าต่าง Hyper-V Manager โดยดับเบิลคลิกชื่อของมัน
- หน้าต่างการกำหนดค่าจะแสดงก่อนที่คุณจะล็อกอินได้ บนหน้าต่างนี้ คลิก Show Options เพื่อดูตัวเลือกเพิ่มเติม

- สลับไปแท็บ Local Resources แล้วคลิกปุ่ม More
- เพื่อให้เครื่องเสมือนเข้าถึงอุปกรณ์ USB ท้องถิ่นได้ คุณต้องติ๊ก Other Supported Plug and Play devices แล้วคลิก OK
- เพื่อบันทึกการตั้งค่านี้สำหรับการใช้งานในอนาคต คุณสามารถติ๊ก Save my settings for future connections to this virtual machine
- สุดท้าย คลิก Connect เพื่อล็อกอินเข้าสู่เครื่องเสมือนของคุณ