Демонтуйте зовнішній накопичувач USB за допомогою Powerhell


12

Я намагаюся демонтувати зовнішній USB-накопичувач, використовуючи powerhell, і не можу це зробити успішно. Наступний сценарій - це те, що я використовую:

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

Потім я перевіряю комп’ютер, щоб перевірити, чи привід відключений, але це не так.

Булеві параметри $ force та $ permanent були випробувані з різними перестановками безрезультатно. Код виходу, повернутий командою dismount, змінюється при перемиканні параметрів.

(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

Чисте рішення, яке не залишає жодних напівфабрикатів відкритих посилань, як зразок з pk:

  $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
Зауважте, що це може бути виконано як один рядок із діалогового вікна Run:powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
Deebster

Цей одношаровий працює, але без зворотних нахилів.
js2010

Незрозуміло, що тут не працює. Я також не отримую жодного повідомлення про помилку чи повідомлення про помилку. $?є Trueпісля виклику другого рядка. Чи можна щось зробити?
Рене Ніффенеггер

1

Я не можу зробити велику роботу, відповідаючи з кінця PowerShell, ви, можливо, захочете подивитися на те, як mountvolпрацює . Існують різні ступені демонтажу.

Маунтвол чи Маунтвол /?

Відображає назву, глобально унікальний ідентифікатор (GUID) та місце розташування тома.

Mountvol [диск:] шлях VolumeName

Створює нову точку кріплення гучності. Вкажіть або кореневий каталог букв диска, або наявний порожній каталог NTFS як джерело точки монтування та ім'я тома як цілі.

Mountvol [привід:] шлях / D

Видаляє існуючу точку монтажу гучності.

Mountvol [привід:] шлях / л

Перелічує назву гучності для заданої точки кріплення гучності.

Я спробував зробити щось подібне до того, що вам потрібно в VBScript, щоб упорядкувати пристрої на старих настільних комп’ютерах, де кріплення накопичувача для старого обладнання, яке було занадто виснажливим для видалення (читати Flash-диск), заважало клавішам швидкого доступу на користувальницькому графічному інтерфейсі, де я міг лише чітко згадувати точки монтажу ( D :, E:, F :) з певною метою. Це стало надзвичайно засмучуючим, і вам доведеться демонтувати і перекомпонувати речі за допомогою входів і виходів mountvol, щоб переконатися, що це добре пішло, і продовжити зміни. Я сподіваюся, що вам пощастить більше, ніж мені.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.