अन्य हाइपरवाइजर (उदाहरण के लिए, VMWare ESXi या Proxmox) पर Hyper-V के महत्वपूर्ण नुकसानों में से एक होस्ट से वर्चुअल मशीनों में USB डिवाइस को रीडायरेक्ट करने की सुविधा की कमी है। Hyper-V 2012 R2 संस्करण के बाद से, USB पासथ्रू विकल्पों के संबंध में कई परिवर्तन हुए हैं, लेकिन यह कार्यक्षमता अभी भी प्रतिस्पर्धियों से कम है। इस लेख में, हम Hyper-V में USB रीडायरेक्शन की विशिष्टताओं पर चर्चा करेंगे।
Hyper-V USB पासथ्रू का अवलोकन
USB पासथ्रू होस्ट हाइपरवाइजर (या नेटवर्क पर किसी अन्य सर्वर/डिवाइस से) से USB डिवाइस को वर्चुअल मशीन पर रीडायरेक्ट करने की क्षमता को संदर्भित करता है। USB पासथ्रू का उपयोग करके, आप भौतिक होस्ट के USB पोर्ट से जुड़े USB स्टिक, टोकन, USB डोंगल, मॉडम, या किसी अन्य डिवाइस को वर्चुअल मशीन पर रीडायरेक्ट कर सकते हैं।
बुरी खबर यह है कि Hyper-V पूर्ण-विशेषताओं वाले USB पासथ्रू का समर्थन नहीं करता है। आप एक मनमाना USB डिवाइस को भौतिक होस्ट से वर्चुअल मशीन पर रीडायरेक्ट नहीं कर सकते (VMWare इसके साथ बहुत बेहतर है - VMWare ESXi में USB पासथ्रू पर लेख देखें)। वर्चुअल मशीन में बाहरी USB डिवाइस का उपयोग करने के लिए कई बिल्ट-इन विकल्प हैं, लेकिन उन सभी में महत्वपूर्ण सीमाएं हैं। वर्तमान में, आप Hyper-V वर्चुअल मशीन में USB डिवाइस को रीडायरेक्ट करने के लिए निम्न तरीकों का उपयोग कर सकते हैं।- Hyper-V होस्ट से USB ड्राइव रीडायरेक्ट करना;
- Hyper-V कंसोल पर एनहांस्ड सेशन मोड;
- RDP के माध्यम से USB रीडायरेक्शन;
- नेटवर्क पर USB रीडायरेक्ट करने के लिए सॉफ़्टवेयर/हार्डवेयर समाधान का उपयोग करना (USB over IP)।
अंतिम परिदृश्य में USB over IP को लागू करने के लिए थर्ड-पार्टी समाधानों का उपयोग शामिल है। यह एक नेटवर्क USB हब हो सकता है, किसी अन्य सर्वर से TCP/IP नेटवर्क पर USB डिवाइस को रीडायरेक्ट करने के लिए एक सॉफ़्टवेयर समाधान। अधिकांश लोकप्रिय कमर्शियल समाधान पेड हैं (AnywhereUSB, DigiUSB)। मुफ्त में VirtualHere USB (एक USB डोंगल और एक टार्गेट सर्वर के लिए मुफ्त) और एक काफी पुराना ओपन सोर्स प्रोजेक्ट usbip.sourceforge.net (सर्वर भाग Linux पर लागू है, क्लाइंट Windows पर इंस्टॉल किया जा सकता है) शामिल हैं।
Hyper-V वर्चुअल मशीन से USB हार्ड ड्राइव एक्सेस करना
आप होस्ट से जुड़े USB ड्राइव को सीधे किसी भी चल रहे Hyper-V वर्चुअल मशीन के अंदर काफी आसानी से रीडायरेक्ट कर सकते हैं। आइए देखें कि Hyper-V वर्चुअल मशीन को होस्ट के USB ड्राइव तक डायरेक्ट एक्सेस कैसे दें।
नोट.- यह गाइड केवल उन USB ड्राइव के लिए काम करता है जिन्हें सिस्टम द्वारा फिक्स्ड के रूप में पहचाना जाता है। आप इस तरह USB फ्लैश ड्राइव, स्मार्ट कार्ड और अन्य रिमूवेबल डिवाइस को VM पर रीडायरेक्ट नहीं कर सकते (हालांकि Windows को रिमूवेबल डिवाइस को फिक्स्ड हार्ड ड्राइव के रूप में देखने के लिए एक छोटी सी ट्रिक है)।
- इन ड्राइव के लिए, आप स्नैपशॉट/चेकपॉइंट नहीं बना सकते।
- Hyper-V होस्ट पर एक एक्सटर्नल USB ड्राइव कनेक्ट करें (यह Windows और Hyper-V भूमिका इंस्टॉल वाले किसी भी होस्ट, या फ्री Microsoft Hyper-V Server हो सकता है)। ड्राइव सिस्टम में दिखाई देगी और इसे एक ड्राइव अक्षर असाइन किया जाएगा (यदि ड्राइव अक्षर असाइन नहीं किया गया है, तो लेख देखें);
- डिस्क मैनेजमेंट (
diskmgmt.msc) कंसोल खोलें, ड्राइव पर राइट-क्लिक करें (हमारे उदाहरण में, 20 GB USB ड्राइव की ID Disk 1 है) और Offline चुनें।
यदि आप Windows Server Core या Hyper-V Server का उपयोग कर रहे हैं, जिनमें कुछ ग्राफिकल mmc स्नैप-इन नहीं हैं, तो आप डिस्क मैनेजमेंट PowerShell मॉड्यूल का उपयोग करके अपने लोकल डिस्क को प्रबंधित कर सकते हैं। निम्न कमांड होस्ट पर फिजिकल डिस्क सूचीबद्ध कर सकते हैं और निर्दिष्ट डिस्क को ऑफलाइन ले जा सकते हैं:
Get-Disk
Get-Disk -Number 1 |Set-Disk -IsOffline:$true

- Hyper-V मैनेजर चलाएं और उस वर्चुअल मशीन के गुण खोलें जिसे USB ड्राइव से कनेक्ट करने की आवश्यकता है। SCSI Controller सेक्शन में, एक नया डिस्क जोड़ें, यह दर्शाते हुए कि यह फिजिकल है (Physical hard disk)। ड्रॉप-डाउन मेनू में अपना USB ड्राइव चुनें (यह कुछ इस तरह दिखेगा: Disk 1 20.00 Gb Bus 0 Lun 0 Target 1)। नोट. वर्चुअल मशीन को बंद करने की आवश्यकता नहीं है SCSI हार्ड ड्राइव जोड़ने के लिए। SCSI डिवाइस के लिए, हॉट-एड और हॉट-रिमूव ड्राइव समर्थित हैं।

- अब हम दिखाएंगे कि Windows चलाने वाली वर्चुअल मशीन के गेस्ट OS से Hyper-V होस्ट पर USB डिस्क कैसे एक्सेस करें। वर्चुअल मशीन कंसोल खोलें या RDP के माध्यम से इससे कनेक्ट करें। गेस्ट OS में लॉग इन करें। डिस्क मैनेजर चलाएं। OS को नई ड्राइव देखनी चाहिए। यदि यह ऑफलाइन है, तो इस पर राइट-क्लिक करें और Online चुनें। इस समय, USB डिस्क पर पार्टीशन को कोई ड्राइव अक्षर या माउंट पॉइंट असाइन नहीं किए गए हैं। इसे ठीक करने के लिए, डिस्क पर पार्टीशन पर राइट-क्लिक करें और संदर्भ मेनू से "Change Drive Letter and Paths" चुनें। पार्टीशन को कोई भी फ्री ड्राइव अक्षर असाइन करें या माउंट पॉइंट निर्दिष्ट करें।

बस! आपने बाहरी USB मीडिया को Hyper-V वर्चुअल मशीन में सीधे कनेक्ट कर दिया है और अब इसका उपयोग कर सकते हैं।
महत्वपूर्ण. डेटा हानि को रोकने के लिए, USB पोर्ट से हार्ड डिस्क को भौतिक रूप से हटाने से पहले, सुनिश्चित करें कि वर्चुअल मशीन में कोई एप्लिकेशन इस डिस्क को एक्सेस नहीं कर रहा है।USB ड्राइव को सुरक्षित रूप से हटाने के लिए, आप Hyper-V Manager कंसोल खोल सकते हैं और वर्चुअल मशीन सेटिंग्स विंडो पर जा सकते हैं। SCSI Controller सेक्शन में, उस हार्ड ड्राइव को चुनें जिसे आप हटाना चाहते हैं और Remove पर क्लिक करें। अपने परिवर्तन सहेजें। उसके बाद, आप Hyper-V होस्ट के USB पोर्ट से हार्ड ड्राइव को भौतिक रूप से हटा सकते हैं।
Hyper-V एनहांस्ड सेशन मोड के साथ VM पर USB डिवाइस रीडायरेक्ट करें
Windows Server 2012 R2/8.1 में पेश किए गए Hyper-V के संस्करण में, किसी भी USB डिवाइस को क्लाइंट कंप्यूटर से एनहांस्ड सेशन मोड (ESM) का उपयोग करके वर्चुअल मशीन पर फॉरवर्ड किया जा सकता है। वर्चुअल मशीन कंसोल से कनेक्ट करने के लिए Hyper-V मैनेजर टूल vmconnect.exe का उपयोग किया जाता है। यह आपको वर्चुअल मशीन कंसोल से कनेक्ट करने और उन USB डिवाइस को चुनने की अनुमति देता है जिन्हें आप रीडायरेक्ट करना चाहते हैं।
सबसे पहले आपको Hyper-V सर्वर सेटिंग्स में एनहांस्ड सेशन मोड सक्षम करना होगा। यह PowerShell का उपयोग करके किया जा सकता है:
Set-VMHost -EnableEnhancedSessionMode $true
या Hyper-V Settings → Enhanced Session Mode में।

Hyper-V वर्चुअल मशीन मैनेजमेंट सर्विस रीस्टार्ट करें:
Get-Service vmms | Restart-Service
VM सेटिंग्स के Integration Services सेक्शन में, आपको Guest Services विकल्प सक्षम करना होगा।
एनहांस्ड सेशन मोड के माध्यम से USB डिवाइस को रीडायरेक्ट करने के लिए, आपको Hyper-V कंसोल खोलना होगा, वर्चुअल मशीन चुनें, और Connect बटन पर क्लिक करें। या आप vmconnect.exe टूल (वर्चुअल मशीन कनेक्शन) चला सकते हैं, Hyper-V सर्वर और वर्चुअल मशीन नाम निर्दिष्ट करें। vmconnect टूल कुछ कमांड लाइन विकल्पों का समर्थन करता है, इसलिए आप उपयोगकर्ताओं को वांछित विकल्पों के साथ एक कस्टमाइज्ड bat फ़ाइल दे सकते हैं।

यदि VM एनहांस्ड सेशन मोड का समर्थन करता है, तो RDP कनेक्शन गुणों के समान एक विंडो दिखाई देगी। Show Option → Local Resources → Local device and resources → More पर क्लिक करें।

अपने कंप्यूटर पर उन USB डिवाइस को चुनें जिन्हें VM पर रीडायरेक्ट किया जाना है। यदि आप जो डिवाइस चाहते हैं वह वर्तमान में कनेक्ट नहीं है, तो "Other supported Plug and Play (PnP) devices" और "Devices that I plug in later options" चुनें।

अब आपके कंप्यूटर से जुड़े सभी USB डिवाइस Hyper-V वर्चुअल मशीन के कंसोल सत्र में स्वचालित रूप से उपलब्ध होंगे।
Hyper-V एनहांस्ड सेशन मोड की मुख्य विशेषताएं और सीमाएं:
- केवल Windows गेस्ट OS के रूप में समर्थित हैं (Windows 8.1 / Windows Server 2012 R2 से शुरू);
- वर्चुअल मशीन पर डायरेक्ट नेटवर्क एक्सेस की आवश्यकता नहीं है। सभी कनेक्शन Hyper-V होस्ट के माध्यम से किए जाते हैं (आप नेटवर्क पर TCP पोर्ट 2179 के माध्यम से इससे कनेक्ट होते हैं), और Hyper-V VMBus के माध्यम से VM से कनेक्ट होता है;
- क्लाइंट के कंप्यूटर पर Hyper-V मैनेजर इंस्टॉल होना चाहिए।
यह विधि लोकल होस्ट से RDP सत्र पर USB डिवाइस रीडायरेक्ट करने के समान है। हम इस पर अधिक विस्तार से विचार नहीं करेंगे। 
यदि आप नेटवर्क पर USB डिवाइस रीडायरेक्ट कर रहे हैं (USB over IP या RDP सत्र पर), तो आप वर्चुअल मशीन को दूसरे होस्ट (Hyper-V लाइव माइग्रेशन / vMotion) पर माइग्रेट करने के बाद भी USB कुंजी तक पहुंच सकते हैं।