Я пытаюсь отключить внешний 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, чтобы убедиться, что все прошло хорошо, и продолжить работу с изменениями. Надеюсь, тебе повезет больше, чем мне.