पॉवरशेल का उपयोग करके USB बाहरी ड्राइव को डिसमाउंट करें


12

मैं पॉवरशेल का उपयोग करके एक बाहरी USB ड्राइव को हटाने का प्रयास कर रहा हूं और मैं सफलतापूर्वक ऐसा नहीं कर सकता। निम्नलिखित स्क्रिप्ट वह है जो मैं उपयोग करता हूं:

#get the Win32Volume object representing the volume I wish to eject 

$drive = Get-WmiObject Win32_Volume -filter "DriveLetter = 'F:'"

#call dismount on that object there by ejecting drive

$drive.Dismount($Force , $Permanent)

मैं तब अपने कंप्यूटर को यह जांचने के लिए जांचता हूं कि क्या ड्राइव अनमाउंट है लेकिन यह नहीं है।

बुलियन मापदंडों $ बल और $ स्थायी को बिना किसी लाभ के विभिन्न क्रमपरिवर्तन के साथ आजमाया गया है। जब एग्जिट कमांड बदल जाती है, तो जब एग्ज़ाम कोड वापस आता है, तो एग्ज़िट कोड बदल जाता है।

(0,0) = exit code 0

(0,1) = exit code 2

(1,0) = exit code 0

(1,1) = exit code 2

एग्जिट कोड 2 के लिए दस्तावेज़ीकरण इंगित करता है कि मौजूदा माउंट बिंदु एक कारण के रूप में हैं जो इसे समाप्त नहीं कर सकता है। यद्यपि मैं एकमात्र माउंट बिंदु को अलग करने की कोशिश कर रहा हूं जो मौजूद है इसलिए मैं अनिश्चित हूं कि यह निकास कोड मुझे क्या बताने की कोशिश कर रहा है।

इसी तरह की समस्याओं का सामना कर रहे लोगों के लिए पहले से ही जाल में फंसे होने के बाद मैंने केवल एक अतिरिक्त कमांड की कोशिश की है और वह निम्नलिखित है:

# executed after the .Dismount() command

$drive.Put() 

यह अतिरिक्त आदेश मदद नहीं करता है।

मैं कोशिश करने के लिए चीजों से बाहर चल रहा हूं, इसलिए कोई भी सहायता जो मुझे दे सकती है वह बहुत सराहना की जाएगी।


आप शायद एक usb ड्राइव को डिसाउंट नहीं करना चाहते हैं। आपको बाद में डिस्क प्रबंधन में ड्राइव अक्षर को फिर से असाइन करना होगा।
js2010

जवाबों:


11

एक साफ समाधान जो पीके से नमूने की तरह किसी भी आधे बेक्ड खुले संदर्भ को नहीं छोड़ता है:

  $driveEject = New-Object -comObject Shell.Application
  $driveEject.Namespace(17).ParseName("E:").InvokeVerb("Eject")

Http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html से लिया गया


मेरा पूर्व में पोस्ट किया गया समाधान वास्तव में सही था। मैं थोड़ा अनिश्चित हूं कि मैंने कभी इसे कैसे पेश किया! कृपया इस विधि का उपयोग करें।
पीके।

1
ध्यान दें कि इसे रन डायलॉग से सिंगल लाइन के रूप में चलाया जा सकता है:powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
डेबस्टर

वह वन-लाइनर काम करता है लेकिन बैकस्लैश के बिना।
js2010

दुर्भाग्य से, यह यहाँ काम नहीं करता है। मुझे कोई त्रुटि संदेश या कोई त्रुटि संदेश भी नहीं मिलता है। $?है Trueदूसरी पंक्ति लागू करने के बाद। क्या मै कुछ कर सकता हुं?
बजे रेने न्यफेनेगर

1

मैं PowerShell के अंत से जवाब देने के लिए एक महान काम नहीं कर सकता, आप कैसे mountvolकाम करता है यह देखना चाहते हैं । अलग-अलग डिग्री हैं।

माउंटवोल या माउंटवोल /?

नाम, विश्व स्तर पर विशिष्ट पहचानकर्ता (GUID), और वॉल्यूम का स्थान प्रदर्शित करता है।

माउंटवोल [ड्राइव:] पथ वॉल्यूमनाम

एक नया वॉल्यूम माउंट बिंदु बनाता है। माउंट बिंदु के स्रोत और लक्ष्य के रूप में एक वॉल्यूम नाम के रूप में या तो एक ड्राइव लेटर रूट निर्देशिका या मौजूदा खाली NTFS निर्देशिका निर्दिष्ट करें।

माउंटवोल [ड्राइव:] पथ / डी

एक मौजूदा वॉल्यूम माउंट बिंदु को हटाता है।

माउंटवोल [ड्राइव:] पथ / एल

किसी दिए गए वॉल्यूम माउंट बिंदु के लिए एक वॉल्यूम नाम सूचीबद्ध करता है।

मैंने पुराने डेस्कटॉप पर उपकरणों को फिर से चालू करने के लिए VBScript में जो कुछ भी करने की आवश्यकता थी, उसके समान कुछ करने की कोशिश की, जहां पुराने हार्डवेयर के लिए ड्राइव mounts, जो हटाने के लिए बहुत थकाऊ था (फ्लैश ड्राइव पढ़ें) एक कस्टम जीयूआई पर शॉर्टकट के साथ हस्तक्षेप कर रहा था जहां मैं केवल स्पष्ट रूप से उल्लेख कर सकता हूं माउंटप्वाइंट () डी :, ई :, एफ :) एक विशेष उद्देश्य के साथ। यह शानदार रूप से निराशाजनक बन गया, और आपको यह सत्यापित करने और माउंट करने के लिए माउंटवोल इनपुट और आउटपुट का उपयोग करके चीजों को अनमाउंट और रिमाउंट करना होगा और परिवर्तनों के साथ आगे बढ़ना चाहिए। मुझे उम्मीद है कि आप मुझसे बेहतर किस्मत वाले होंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.