পাওয়ারশেল ব্যবহার করে ইউএসবি বহিরাগত ড্রাইভটি বাতিল করুন


12

আমি পাওয়ারশেল ব্যবহার করে একটি বাহ্যিক ইউএসবি ড্রাইভকে খারিজ করার চেষ্টা করছি এবং আমি এটি সফলভাবে করতে পারি না। নিম্নলিখিত স্ক্রিপ্টটি আমি ব্যবহার করি:

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

এই অতিরিক্ত কমান্ড সাহায্য করে না।

আমি চেষ্টা করার চেষ্টা করেই চলেছি, সুতরাং যে কেউ আমাকে যে কোনও সহায়তা দিতে পারে তা প্রশংসিত হবে।


আপনি সম্ভবত কোনও ইউএসবি ড্রাইভ বাতিল করতে চান না। আপনাকে পরে ডিস্ক পরিচালনায় ড্রাইভ লেটারটি পুনরায় নিয়োগ করতে হবে।
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দ্বিতীয় লাইন invoking পরে। আমি কি কিছু করতে পারি?
রেনি নাইফেনিগার

1

পাওয়ারশেলের শেষ থেকে উত্তর দেওয়ার জন্য আমি একটি দুর্দান্ত কাজ করতে পারি না, আপনি কীভাবে mountvolপরিচালনা করেন তা দেখতে চাইতে পারেন । ছাড়ের বিভিন্ন ডিগ্রি রয়েছে।

মাউন্টভোল নাকি মাউন্টভোল /?

নাম, বিশ্বব্যাপী অনন্য সনাক্তকারী (জিইউডি) এবং ভলিউমের অবস্থান প্রদর্শন করে।

মাউন্টভল ​​[ড্রাইভ:] পাথ ভলিউমনেম

একটি নতুন ভলিউম মাউন্ট পয়েন্ট তৈরি করে। মাউন্ট পয়েন্টের উত্স হিসাবে একটি ড্রাইভ লেটার রুট ডিরেক্টরি বা একটি বিদ্যমান খালি এনটিএফএস ডিরেক্টরি এবং লক্ষ্য হিসাবে একটি ভলিউমের নাম উল্লেখ করুন।

মাউন্টভোল [ড্রাইভ:] পাথ / ডি

একটি বিদ্যমান ভলিউম মাউন্ট পয়েন্ট মুছে ফেলে।

মাউন্টভোল [ড্রাইভ:] পাথ / এল

প্রদত্ত ভলিউম মাউন্ট পয়েন্টের জন্য একটি ভলিউমের নাম তালিকাভুক্ত করে।

পুরানো ডেস্কটপগুলিতে ডিভাইসগুলি পুনরায় অর্ডার করতে আপনার ভিবিএস স্ক্রিপ্টে যা প্রয়োজন হয়েছিল তার অনুরূপ কিছু করার চেষ্টা করেছি আমি যেখানে পুরানো হার্ডওয়ারের জন্য ড্রাইভ মাউন্ট করে যা অপসারণ করতে খুব ক্লান্তিকর ছিল (ফ্ল্যাশ ড্রাইভ পড়ুন) একটি কাস্টম জিইউআইতে শর্টকাট নিয়ে হস্তক্ষেপ করছে যেখানে আমি কেবল স্পষ্টভাবে উল্লেখ করতে পারতাম মাউন্টপয়েন্টস ( ডি:, ই:, এফ :) একটি নির্দিষ্ট উদ্দেশ্যে। এটি চমত্কার হতাশায় পরিণত হয়েছে এবং এটি ভাল হয়েছে এবং যাচাইয়ের জন্য আপনার মাউন্টভোল ইনপুট এবং আউটপুটগুলি ব্যবহার করে জিনিসগুলি আনমাউন্ট এবং পুনঃনির্মাণ করতে হবে। আমি আশা করি আপনি আমার চেয়ে ভাল ভাগ্যবান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.