Назад | Перейти на главную страницу

Отключите внешний USB-накопитель с помощью powershell

Я пытаюсь отключить внешний USB-накопитель с помощью PowerShell, и мне это не удается. Я использую следующий сценарий:

#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 и $ constant были опробованы с разными перестановками, но безрезультатно. Код выхода, возвращаемый командой размонтирования, изменяется при переключении параметров.

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

Эта дополнительная команда не помогает.

Мне уже нечего попробовать, поэтому я буду благодарен за любую помощь, которую мне могут оказать.

Чистое решение, которое не оставляет полуоткрытых открытых ссылок, как это делает образец из 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

Я не могу хорошо отвечать на вопросы из PowerShell, возможно, вы захотите посмотреть как mountvol работает. Есть разные степени соскока.

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

Отображает имя, глобальный уникальный идентификатор (GUID) и расположение тома.

Mountvol [диск:] путь VolumeName

Создает новую точку монтирования тома. Укажите корневой каталог с буквой диска или существующий пустой каталог NTFS в качестве источника точки монтирования и имя тома в качестве целевого.

Mountvol [диск:] путь / D

Удаляет существующую точку подключения тома.

Mountvol [диск:] путь / L

Перечисляет имя тома для данной точки подключения тома.

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